looking up entire matrix for if then loop
1 次查看(过去 30 天)
显示 更早的评论
Given A=[1 2 3 4 5 ]
- I want to see when A > 1 and count how many times that was true (output should be 4 times)
- I want to see when A > 2 and count how many times that was true (output should be 3 times)
- I want to see when A > 3 and count how many times that was true (output should be 2 times)
- I want to see when A > 4 and count how many times that was true (output should be 1 time)
- I want to see when A > 5 and count how many times that was true (output should be 0 time)
I tried using below approach, but it does not output what I intended. I think it is only looking at one cell at a time.
is there a way to look entire matrix and get the count?
clear
n=5;
count=0;
r=exprnd(5,1,n);
for x=1:n
if r > x
count=count+1;
a(x)=count; %record output
else
count=count;
a(x)=count; %record output
end
end
0 个评论
采纳的回答
Ameer Hamza
2020-11-3
Here is a loop-free simpler way
n=5;
count=0;
r=exprnd(5,1,n);
a = sum(r(:) > (1:n))
Result
>> r
r =
1.3006 15.7725 4.8618 1.7525 1.5769
>> a
a =
5 2 2 2 1
2 个评论
Ameer Hamza
2020-11-3
Yes, a very powerful aspect of MATLAB is vectorization, which makes the implementation of mathematical operations much simpler.
I am glad to be of help!
更多回答(1 个)
Mathieu NOE
2020-11-3
hello
why not simply do that (example for when A > 1 and count how many times that was true (output should be 4 times)
A=[1 2 3 4 5 ];
k = find(A>1);
count = length(k);
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!