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

 Akzeptierte Antwort

Geoff
Geoff am 4 Mai 2012

1 Stimme

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

5 Kommentare

Ricky
Ricky am 4 Mai 2012
Thanks Geoff,
How about if I want to assign something to r if a is 1 and to r1 if a is -1?
Ricky
Ricky am 4 Mai 2012
say I have t0 and t1
and I want to assign r = t0 if a is 1 and r = t1 if a is -1?
Geoff
Geoff am 4 Mai 2012
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));
Geoff
Geoff am 4 Mai 2012
Yes... replace '0' and '42' in my example with 't1' and 't0' respectively.
Ricky
Ricky am 4 Mai 2012
Thanks Geoff!!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by