私のプログラムには、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'}];