と言うように初期化された行列(と呼びますX
)がありますzero(3)
。
X
サイズのセル配列(たとえば)になるようにコードを変更し、(3,1)
各要素をに初期化しzero(3)
ます。
私はループでそれを行うことができますが、より良い方法はありますか?
X = cell(3,1);
for ii=1:numel(X)
X{ii} = zeros(3);
end
と言うように初期化された行列(と呼びますX
)がありますzero(3)
。
X
サイズのセル配列(たとえば)になるようにコードを変更し、(3,1)
各要素をに初期化しzero(3)
ます。
私はループでそれを行うことができますが、より良い方法はありますか?
X = cell(3,1);
for ii=1:numel(X)
X{ii} = zeros(3);
end
これは。で行うことができますdeal()
。
>> [X{1:3, 1}] = deal(zeros(3))
X =
[3x3 double]
[3x3 double]
[3x3 double]
別の方法:
X = repmat({zeros(3)}, 3, 1);
別のもの:
X = cell(3,1);
X(:) = {zeros(3)};
さらに別の方法:
X = {zeros(3)};
X(1:3,1) = X;
このソリューションは、変数のサイズを超えるインデックスに割り当てることができるという事実を利用しています。この場合、Matlab は自動的に展開されます。
同様に:
clear X;
X(1:3,1) = {zeros(3)};