0

私のプログラムには、Matlab が事前割り当てを警告するセル変数があります。コードの単純な形式は、次のような sth です。

for i = 1:2
    a = [];
    a = [a,{'abc'}];
end

aまず、各ループでリセットされるため、事前に割り当てる必要がある理由を知りたいです。第二に、それを事前に割り当てる方法がわかりません。そうしようとすると、Matlab から別の警告が表示され、「変数は事前に割り当てられているようですが、ここでは事前割り当ては推奨されません」というメッセージが表示されます。

ループの前に次のコードを使用します。

a = cell(1,2);

もう少し詳しく言うと:

for i = 1:2
    a = [];
    if condition1
        a = {'abc'};
    end
    if condition2
        a = [a,{'def'}];
    end
    b = [{'string'},a];
end

b条件が真でない場合は 1x1 セル配列にしたいのでa、各ループで空の var にリセットする必要があります。

アップデート:

リーの答えにほのめかされた方法を見つけましたが、その理由はまだわかりません。警告を解決するa = [a(:),{'def'}];代わりに使用します。a = [a,{'def'}];

4

1 に答える 1

0

a新しい変数を作成したため、前者a = cell(1,2)は使用されなかったため、matlab で警告が発生しました。

次のように使用できます

a = cell(1,2);
for ii = 1:2
    a{ii} = 'abc';
end

または、本当に のサイズを変更したい場合はa

for ii = 1:2
    a = {'a1'};
    a = [a(:); {'abc'}];
end
于 2016-12-17T23:53:58.017 に答える