2012-11-08 27 views
0

我有一个MATLAB中的图像轮廓数据结构。如下所示:提取结构数据,以可变大小的矩阵分配它们

s = 
1x59 struct array with fields: 
    level 
    numel 
    xdata 
    ydata 
%s(k).level contains the contour level height of the k-th line. 
% s(k).numel contains the number of points describing the k-th line. 
% sk).isopen is True if the k-th contour is open and False if it is closed. 
% s(k).xdata contains the x-axis data for the k-th line as a column vector. 
% s(k).ydata contains the y-axis data for the k-th line as a column vector 

我必须将s(k).xdata和s(k).ydata提取到可变大小的矩阵中。这是我制作的程序

for k=1:59;  
    if (k==1); 
     i(k)=s(k).numel; 
     [i,2]=size(S{k}(:,:)); 
     x=s(k).xdata; 
     y=s(k).ydata; 
     S{k}(:,:)=[x y];  
    elseif (k>1 && k<=59) 
     i(k)=s(k).numel; 
     l=i(k-1)+i(k) 
     [i,2]=size(S{k}(:,:)); 
     x=s(k).xdata; 
     y=s(k).ydata; 
     S{k}(:,:)=[x y]; 
     S(:,:)=[S{k-1}(:,:);S{k}(:,:)]; 
    end 
end 

???错误:多个LHS分配的数组不能包含数字值

任何人都可以帮助我吗? 非常感谢你提前!

回答

2

下应该更换所有代码:

S = cell2mat(arrayfun(@(x)[x.xdata x.ydata],s','UniformOutput',false)) 

这使得与元素的单元阵列代码调用[x y],并组合成一个阵列S

请注意,在您的代码中调用size不会将大小设置为S{k},它只会尝试将i设置为大小。

+0

非常感谢您的帮助! –