2014-11-06 55 views
0

下面的代码应该输出comb中的第一个单元格的内容并访问由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

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

for g=1:size(aa,1) 

它为外循环迭代 - for j=1:numel(combs),因为combs是一个1D单元阵列。

相关问题