如何在Matlab中创建k个类似对象的单元格数组?

时间:2010-05-30 16:52:43

标签: matlab initialization cell

我想创建m,m矩阵的1,k个单元格。我在尝试初始化时遇到了一些麻烦。我的第一个想法就是这样做

myCell = cell{1,K};
for k = 1:K
  myCell{1,k} = eye(m);
end 

但是初始化它似乎是一种丑陋的方式。必须有更好的方法吗?

4 个答案:

答案 0 :(得分:5)

具有更少函数调用的解决方案:

[myCell{1:k}] = deal(eye(m));

答案 1 :(得分:3)

这是一个非常简单的REPMAT解决方案:

myCell = repmat({eye(m)},1,K);

这只会创建一个包含eye(m)的单元格,然后复制该单元格K次。

答案 2 :(得分:2)

试试这个:

myCell =  mat2cell(repmat(eye(m),[1 k]),[m],repmat(m,1,k))

答案 3 :(得分:2)

考虑一下这个:

myCell = arrayfun(@(x)eye(m), 1:k, 'UniformOutput',false)