2 comparisons in find(...)

3 次查看(过去 30 天)
geieraffe
geieraffe 2012-4-19
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?

采纳的回答

geieraffe
geieraffe 2012-4-19
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) )

更多回答(1 个)

Andrei Bobrov
Andrei Bobrov 2012-4-19
t = Sig_log(:,1:2)*[2;1];
out = find(t > 1 & t < 3)
  2 个评论
geieraffe
geieraffe 2012-4-19
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 2012-4-19
Using the temporary variable will use *much* less memory than your proposed solution.

请先登录,再进行评论。

Community Treasure Hunt

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

Start Hunting!

Translated by