如何制作for循环

时间:2013-10-01 10:04:19

标签: matlab

我有一个很大的代码,但我想制作一个for循环来执行代码。我的代码如下:

A = zeros(1, 60) ;
C = A ;
D = A ;
F = A ;
.......


  if( sum(B) == 100 )
    A= A(1) + 1;

  elseif( sum(B) == (99) )
        C(1) = C(1) + 1;
  elseif( sum(B) == (98) )
        D(1) = D(1) + 1;
  elseif( sum(B) == (97) )
        E(1) = E(1) + 1;    
.........
end
O1=A;
O2=C;
O3=D;
O4=F;
O=[O1,O2,O3,O4]

我需要查看sum(B)==1 所以如果我使用elseif写出整个条件,它看起来会更糟,所以我想使用for loop来执行这个条件。但是我不能这样做。

Matlab专家需要您宝贵的建议和帮助。

2 个答案:

答案 0 :(得分:2)

如下:

A = zeros(100,60);

for k=100:-1:1
    if sum(B) == k
       A(101-k,1) = A(101-k,1) + 1;
    end
end

请注意,对浮点数进行相等测试绝不是一个好主意,最好将差异与小容差值进行比较。

答案 1 :(得分:2)

如果用单元格数组替换A, B, C...会更好:X{1}, X{2}, X{3},...

X = cell(1,100); % change "100" as needed
[X{:}] = deal(zeros(1,60)); % initialize each cell as needed
X{101-sum(B)}(1) = X{101-sum(B)}(1) + 1; % or whatever operation is required here

如果您以前的所有A, B, C, ...具有相同的大小,则可以使用数组而不是单元格数组。