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

 채택된 답변

Geoff
Geoff 2012년 5월 4일

1 개 추천

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

댓글 수: 5

Ricky
Ricky 2012년 5월 4일
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 2012년 5월 4일
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 2012년 5월 4일
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 2012년 5월 4일
Yes... replace '0' and '42' in my example with 't1' and 't0' respectively.
Ricky
Ricky 2012년 5월 4일
Thanks Geoff!!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

제품

질문:

2012년 5월 4일

Community Treasure Hunt

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

Start Hunting!

Translated by