如何在MATLAB中创建单元格数组并将所有元素初始化为同一个对象?

时间:2011-11-19 16:56:34

标签: arrays matlab initialization cell-array

我有一个矩阵(称之为X),初始化为zero(3)

我想更改代码,以便X是一个大小(例如)(3,1)的单元格数组,并将每个元素初始化为zero(3)

我可以用循环来做但有更好的方法吗?

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

3 个答案:

答案 0 :(得分:9)

您可以使用deal()执行此操作。

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

X = 

    [3x3 double]
    [3x3 double]
    [3x3 double]

答案 1 :(得分:9)

另一种方式:

X = repmat({zeros(3)}, 3, 1);
另一个:

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

答案 2 :(得分:3)

还有另一种方式:

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

此解决方案使用的事实是您可以分配超出变量大小的索引。在这种情况下,Matlab会自动扩展。

类似地:

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