【问题标题】:Matlab Cell: Possible to cycle through using colon?Matlab Cell:可以使用结肠循环吗?
【发布时间】:2014-05-03 23:56:30
【问题描述】:

我有以下几点:

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 循环。

谢谢!

【问题讨论】:

    标签: matlab


    【解决方案1】:

    您可以使用cellfun 和一个简单的anonymous function 来检索元素:

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

    【讨论】:

    • 正是我想要的。谢谢。
    【解决方案2】:

    如果你真的想避免for循环,你应该知道使用cellfun本质上和循环是一样的;甚至可能更慢(参见herehere)。

    如果您的元胞数组中的所有矩阵都具有两个维度且大小相同,如您的示例所示,您可以将它们沿第三个维度连接起来并轻松获得所需的值:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-29
      • 2022-11-22
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多