我有一个很大的代码,但我想制作一个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专家需要您宝贵的建议和帮助。
答案 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, ...
具有相同的大小,则可以使用数组而不是单元格数组。