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 割り当ての配列に数値を含めることはできません

誰でも私を助けることができますか?よろしくお願いします!

4

1 に答える 1

2

以下は、すべてのコードを置き換える必要があります。

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

これにより、コードが呼び出す要素を含む cell 配列が作成[x y]され、それが 1 つの配列に結合されSます。

コードを呼び出しsizeても のサイズは設定されないことに注意してください。サイズS{k}を設定しようとするだけiです。

于 2012-11-08T09:25:31.967 に答える