提取结构数据以在可变大小的矩阵中分配它们

时间:2012-11-08 07:43:58

标签: matlab variables matrix structure extract

我在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分配的数组不能包含数值

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

1 个答案:

答案 0 :(得分:2)

以下内容应取代您的所有代码:

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

这会生成一个包含代码调用元素[x y]的单元格数组,并将其合并为一个数组S

请注意,在代码中调用size并未设置S{k}的大小,只是尝试将i设置为该大小。