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 回答