0

for ループの反復ごとにサイズが変化する配列を格納したいと考えています。例えば、

for y=1:100
    for x=1:50
.
.
        ms(:,x,y) = ans;
.
.
    end 
end

'ans' は、y の反復ごとにサイズが変化する行ベクトルです。

これらの可変長の 'ans' を ms に格納するにはどうすればよいですか?

'ms' を cell として初期化しようとすると、"Conversion to cell from double is not possible." というエラーが表示されます。

これを解決する方法は何ですか?

よろしくお願いします

4

2 に答える 2

1

私が考えることができる唯一の方法は、実際にセル配列を使用することです。次のように 2D cell 配列を初期化します。

ms = cell(50,100);

その後、中かっこ ( {}) を使用してセルにインデックスを付けます。したがって、ループは次のようになります。

for y=1:100
    for x=1:50
.
.
        ms{x,y} = ans;
.
.
    end 
end

完了したら、必要な行と列の位置を選択して、セル配列にインデックスを付けることができます。

vec = ms{row,col};

ansところで、変数として 使用することはお勧めしません。ansは、MATLAB で出力のあるステートメントを実行するときに使用される既定の変数で、関数からのこの出力先の変数を指定しません。変数を上書きするコードを使用している可能性があるansため、おそらく別の名前を使用する必要があります。

于 2014-10-08T17:03:46.377 に答える