Question about logical calculation in matrix
2 次查看(过去 30 天)
显示 更早的评论
I want to sum up the numbers on the 1st column if its corresponding numbers on the 2nd column =1; and if sum up the numbers on the 1st column if its corresponding numbers on the 2nd column =2; The answer should be r1=0.5 r2=1.4 I don't know where I made mistakes. Here is the code I have so far. PLEASE HELP ME OUT。
AA=[0.2 1;0.3 1;0.5 2;0.9 2];
for i = 1:4
if AA(i,2)<2
r1=zeros(1);
r1=r1+AA(i,1);
else
r2=zeros(i,1);
r2=r2+AA(i,1)
end
end
0 个评论
采纳的回答
Jan
2017-9-26
编辑:Jan
2017-9-26
The mistake is the zeros inside the loop, which resets the counter repeatedly:
AA = [0.2 1; 0.3 1; 0.5 2; 0.9 2];
r1 = 0; % BEFORE the loop
r2 = 0;
for i = 1:4
if AA(i,2)<2
r1 = r1 + AA(i,1);
else
r2 = r2 + AA(i,1);
end
end
Or smarter without a loop:
match = (A(:, 2) == 1);
r1 = sum(A(match, 1));
r1 = sum(A(~match, 1));
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!