looking up entire matrix for if then loop

1 view (last 30 days)
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

Accepted Answer

Ameer Hamza
Ameer Hamza on 3 Nov 2020
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 Comments
Daniel Lee
Daniel Lee on 3 Nov 2020
wowwwww never even knew that was possible... thanks bunch
Ameer Hamza
Ameer Hamza on 3 Nov 2020
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!

Sign in to comment.

More Answers (1)

Mathieu NOE
Mathieu NOE on 3 Nov 2020
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);
  1 Comment
Daniel Lee
Daniel Lee on 3 Nov 2020
Mathieu, thanks for the response as well-- I didnt know about find command. Will use it next time!

Sign in to comment.

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Products


Release

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!