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

s5s*_*s5s 10 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
Run Code Online (Sandbox Code Playgroud)

Joh*_*lby 9

你可以这样做deal().

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

X = 

    [3x3 double]
    [3x3 double]
    [3x3 double]
Run Code Online (Sandbox Code Playgroud)


Amr*_*mro 9

另一种方式:

X = repmat({zeros(3)}, 3, 1);
Run Code Online (Sandbox Code Playgroud)

另一个:

X = cell(3,1);
X(:) = {zeros(3)};
Run Code Online (Sandbox Code Playgroud)