2016-12-01 5 views
2

私は、イベントがいつmatlabの別のイベントの前に起こったかを知ろうとしています。イベントで私は数を意味します。ベクトル上の別の特定の数字の前の数字を見つける

X = [0.3 0.3 0.1 0.2 0.5 0.1 0.3 0.1 0.5 0.1 0.4 0.5]

を、私は位置が前に起こっ0.1であるかを知りたい:例えば、Iはベクトルを持っている、のは言わせ0.5。 私はfind(x、0.5、 'last')を試しましたが、それで0.1を見つけたいのであまり役に立ちません。私はおそらく、0.5で終了し、最後の0.1を検索する別のベクトルを作成したと考えましたが、それは私のベクトルに〜300個のイベントが含まれているので非効率的なものに過ぎません。

+0

Can私たちはあなたの例で希望する出力を表示しますか?あなたが見つけようとしている0.1のポジションはどれですか? – beaker

+0

希望の出力はY = [3 8 10]です。たとえば、ポジション6の0.1は、位置9の0.5より前のポジション8に別の.1があるため報告されません。 –

答えて

2

あなたは0.5がすぐに論理インデックスを生成し、その0.1

idx = [x(1:end-1)==0.1 & x(2:end)== 0.5 false] 

後に表示させたい場合は、数値インデックスのためにあなたが

find(idx) 

アップデートを使用することができ、これを試すことができます見つけること を.1と.5の間に.1は表示されずに.5の後に.5を持つ.1のすべて.1

f= find(x==.1 | x==.5) 
f(x(f(1:end-1)) < x(f(2:end))) 
+0

浮動小数点値が等しいかどうかをテストするだけでトラブルが発生することがあります。 – beaker

+1

これはOPが心に留めていたものですか?これは、浮動小数点のテストに0.1 – beaker

+1

OPが責任を負うのを待ってから0.5値が*即時になる場合にのみ有効です:) – rahnema1

関連する問題