如何循环不同数组大小的单元格?

时间:2014-11-06 07:02:04

标签: arrays matlab loops cell-array

以下代码应该输出梳子中第一个单元格的内容,并访问由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,:)

我可以知道如何让第二个细胞和第三个细胞循环吗?

1 个答案:

答案 0 :(得分:1)

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

for g=1:size(aa,1) 

它适用于外循环迭代器 - for j=1:numel(combs),因为combs1D单元格数组。