Matlab Cell:可以循环使用冒号吗?

时间:2014-05-03 23:56:31

标签: matlab

我有以下内容:

cellMat = cell(3,1);
cellMat{1} = rand(3);
cellMat{2} = rand(3);
cellMat{3} = rand(3);

我想循环遍历它们并得到每个rand矩阵的(1,1)元素。我试过......

cellMat{:}(1,1);

但我得到“坏单元引用操作”。但是以下......

cellMat{1}(1,1);

将返回正确的值。

我能用这种方式工作吗?我真的很想避免使用for循环。

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以将cellfun与简单anonymous function一起使用来检索元素:

cellfun(@(x) x(1,1), cellMat)

答案 1 :(得分:1)

如果你真的想避免for循环,你应该知道使用cellfun与循环基本相同;甚至可能更慢(见herehere)。

如果单元格数组中的所有矩阵都有两个尺寸和相同的大小(如示例所示),则可以沿第三维连接它们并轻松获得所需的值:

array = cat(3,cellMat{:});
result = squeeze(array(1,1,:));