如何在Matlab中创建一个包含k个相似对象的cell数组?

8

我想创建一个1,000个m x m矩阵的单元格。但是在初始化时遇到了一些问题。我的第一个想法是这样做:

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

但是这种初始化的方式看起来很丑陋,一定有更好的方法吧?
4个回答

5
一种更少函数调用的解决方案:
[myCell{1:k}] = deal(eye(m));

3
这是一个非常简单的REPMAT解决方案:REPMAT
myCell = repmat({eye(m)},1,K);

这仅仅创建了一个带有eye(m)的单元格,然后复制该单元格K次。


2

试试这个:

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

2
考虑一下这个例子:
myCell = arrayfun(@(x)eye(m), 1:k, 'UniformOutput',false)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接