11

と言うように初期化された行列(と呼びますX)がありますzero(3)

Xサイズのセル配列(たとえば)になるようにコードを変更し、(3,1)各要素をに初期化しzero(3)ます。

私はループでそれを行うことができますが、より良い方法はありますか?

X = cell(3,1);
for ii=1:numel(X)
    X{ii} = zeros(3);
end
4

3 に答える 3

10

これは。で行うことができますdeal()

>> [X{1:3, 1}] = deal(zeros(3))

X = 

    [3x3 double]
    [3x3 double]
    [3x3 double]
于 2011-11-19T17:43:16.827 に答える
9

別の方法:

X = repmat({zeros(3)}, 3, 1);

別のもの:

X = cell(3,1);
X(:) = {zeros(3)};
于 2013-09-19T10:06:53.543 に答える
3

さらに別の方法:

X = {zeros(3)};
X(1:3,1) = X;

このソリューションは、変数のサイズを超えるインデックスに割り当てることができるという事実を利用しています。この場合、Matlab は自動的に展開されます。

同様に:

clear X;
X(1:3,1) = {zeros(3)};
于 2013-09-19T10:22:51.140 に答える