0

我有一个大代码,但我想创建一个 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所以我想使用 afor loop来执行这个条件。但我不能这样做。

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

4

2 回答 2

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

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

于 2013-10-01T10:10:10.100 回答
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, ...的大小相同,则可以使用数组而不是元胞数组。

于 2013-10-01T10:12:37.150 回答