2 comparisons in find(...)

1 view (last 30 days)
geieraffe
geieraffe on 19 Apr 2012
Hey there, here's my problem:
with
find( 3> ( 2*Sig_log(:,1) + Sig_log(:,2) ) >1)
I try to get the idx, where the first signal is 1 and the second is 0. (bothsignals are logical)
With just one comparison it works:
find( ( 2*Sig_log(:,1) + Sig_log(:,2) ) >1)
this is how i get the idx where both signals are 1.
i know, if-requests i do with && or , but it doesn't work here.
any ideas?

Accepted Answer

geieraffe
geieraffe on 19 Apr 2012
it works fine with
find( (2*Sig_log(:,1)+Sig_log(:,2)>1) & (2*Sig_log(:,1)+Sig_log(:,2)<3) )
just take & instead of &&
another solution (works only if you have exact logical signals):
find( ( (2*compSig_log(:,1)+compSig_log(:,2) ) == 2) )

More Answers (1)

Andrei Bobrov
Andrei Bobrov on 19 Apr 2012
t = Sig_log(:,1:2)*[2;1];
out = find(t > 1 & t < 3)
  2 Comments
geieraffe
geieraffe on 19 Apr 2012
close!
but because of my big datasets i dont want to get another variable t.
its some thing like 7000000x1 double ... i had a solution with an extra variable too ...
... but you gave me the right idea!
Walter Roberson
Walter Roberson on 19 Apr 2012
Using the temporary variable will use *much* less memory than your proposed solution.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!