【问题标题】:How to loop over cell with different array size?如何循环具有不同数组大小的单元格?
【发布时间】:2014-11-06 07:02:03
【问题描述】:

下面的代码应该以梳子的形式输出第一个单元格的内容,并访问由 bb 定义的单元格的每一行。我的问题是它不会循环到第二个和第三个单元格。

% input arrays
A=[2 1 3];       
B=[4 2 1 3 3]; 
C=[1 3]; 
D=[3 2 4 2 1 1]; 
E=[4 1 1];

% possible subsets of a set
combs = arrayfun(@(x) nchoosek({A,B,C,D,E},x),3:numel({A,B,C,D,E}),'Uniform',0);

for j=1:numel(combs)
        aa=combs{j}  
        for g=1:numel(aa)          
           bb=aa(g,:) 
        end        
end

它只循环第一个单元格数组,然后出现以下错误消息:
索引超出矩阵尺寸。

simtt1 中的错误(第 18 行) bb=aa(g,:)

我可以知道如何让它循环第二个单元格和第三个单元格吗?

【问题讨论】:

    标签: arrays matlab loops cell-array


    【解决方案1】:

    由于迭代器g 用于索引aa 的行,因此您需要从1 to size(aa,1) 对其进行迭代。因此,在您的代码中进行此编辑 -

    for g=1:size(aa,1) 
    

    它适用于外部循环迭代器 - for j=1:numel(combs),因为 combs 是一个 1D 元胞数组。

    【讨论】:

      猜你喜欢
      • 2017-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      • 2015-10-08
      相关资源
      最近更新 更多