2017-01-12 12 views
1

小数を見つけるためにMATLABでのfind()を使用してどのようにしてP_INおよびその他のP_OUTです:私もP_INのサブセット与えられていますは、私は2つのカラムを持つテーブルを与えられています

P_in = table(:,1); 
P_out = table(:,2); 

、どの私はP_in2を呼び出します。私はP_in2に属するP_outの対応する値を探したい。

P_out2_idx = find(table(P_in2,2)); 
P_out2  = table(P_out2,idx,2); 

しかし、見つける()は整数のみを扱うことができます。

は、私は、find()を試してみました。しかし、私のテーブルでは、整数は表示されませんが、小数です。

-13.02 49.6 
-12.52 49.9 
-12.02 50.18 

したがって、P_in2値を四捨五入しても機能しません。

+0

「P_in2」の定義方法を教えてください。 – obchardon

答えて

2

を使用するを使用すると、数値が整数の場合に複数のインデックスを見つけるのに適しています。浮動小数点数のためのより安全な方法はismembertolを使用している:

isInP_in2 = ismembertol(P_in, P_in2, eps); 
P_out2 = P_out(isInP_in2); 

返される配列isInP_in2P_in2の値が検出された指標であるtrueP_inの大きさ、およびfalseさもなければ論理アレイです。

第3引数は、比較に使用される許容誤差です(ここでは、浮動小数点相対精度epsを使用します)。たとえば、findを使用して単一のインデックスを検索すると、次のようになります。

idx = find(abs(P_in - P_in2(1)) < eps); 
+0

とすれば、isInP_in2 = ismembertol(P_in -3、P_in2、eps)と言うことができます。 ? P_in_3にあるP_in2のすべての値を見つけるために、 –

+0

はい、うまくいくはずです。あなたは 'P_in = [1 2 3]'と 'P_in2 = [ - 2 -4]'を持っているとすれば、インデックス[1 3]を探したいのですか? – buzjwa

+0

P_in = [1 2 3]かつP_in2 = [ - 2 -4]のとき、P_in(1)-3 = -2なのでインデックス1を探したい。 P_in = [1 2 3]とP_in2 = [ - 2 1 0]の場合、P_in(1)-3 = -2とP_in(3)-3 = 0なのでインデックス1と3を探したい。 –

関連する問題