comparison/checking without for loop

Hi there,
Say if I have a random event with just -1 and 1. e.g. a = randsrc(5,1);%that will generate a 5x1 matrix with just -1 or 1
Now say if I want to check how many of -1 or 1 in a, how can I do that without using for loop? I try to do this but doesn't work:
m =0;
if(a == 1)
m = m+1;
end
Any help would be really appreciated.
Cheers,
Rak

 Accepted Answer

nneg = sum(a==-1);
npos = sum(a==1);

5 Comments

Thanks Geoff,
How about if I want to assign something to r if a is 1 and to r1 if a is -1?
say I have t0 and t1
and I want to assign r = t0 if a is 1 and r = t1 if a is -1?
r(a==-1) = 0;
r(a==1) = 42;
This is called logical indexing... You can do whatever you like. The following example selects out of a only positive values less than 20:
a(a<20 & mod(a,2)==0)
And if you want to assign something different for every selected value, just use an array (or matrix) the same size as the number of selected items:
r(a==-1) = rand(1,sum(a==-1));
Yes... replace '0' and '42' in my example with 't1' and 't0' respectively.
Thanks Geoff!!

Sign in to comment.

More Answers (0)

Categories

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

Products

Asked:

on 4 May 2012

Community Treasure Hunt

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

Start Hunting!