2017-01-21 17 views
0

を返さない、次のコード例を考えてみましょう:内容isMember()は、十分な要素

spacing_Pin = transpose(-27:0.001:2); 
Phi_intrp3 = interp1(P_in3,Phi_out_deg3,spacing_Pin,'spline'); 

size(P_in3) = size(Phi_out_deg3) = 40 1 

P_in1st = P_in3 -0.76; 
thetah_1st = Phi_intrp3(ismember(spacing_Pin,P_in1st)); 

私はthetah_1stは今40個の要素を持つべきだと思います。ただし、P_in1stspacing_Pinで20回しか見つからないため、この値は20です。私は知っている、あなたはP_in3を与えられていませんが、ドットの後に2桁までしかありません。だからP_in1stする必要があります。 min(P_in3) = -25.9800およびmax(P_in3) = -0.0200。これらの値はspacing_Pinに含める必要があります。 thetah_1stには20エントリしかないのはなぜですか?

答えて

1

これ以上の情報と実際の変数の値がないと言うことはできませんが、問題はismemberの使用方法と思われます。

整数ではなく配列内の浮動小数点数を探しているので、潜在的な浮動小数点エラーを処理するには、ismembertol(許容値はismember)を使用する必要があります。

thetah_1st = Phi_intrp3(ismembertol(spacing_Pin, P_in1st)); 
+0

あなたは正しいです。私がismembertolを使用すると、それは動作しています。私はismembertolがデフォルトでeps耐性を使用していると仮定しますか? .. 4番目のコード行を 'P_in1st = P_in3 + 0.0053'に変更すると、' thetah_1st'は空の行列になります。私は最初のコード行で0.0001の間隔を選択することでこの問題を解決しようとしていました。それであなたがコメントした私の他の質問。しかし、間隔を変更することで問題は解決されません。私は変数リスト全体をアップロードすることはできません申し訳ありません。しかし、それが助けになる場合は、抜粋をアップロードすることができます –

+0

3番目の入力として必要な場合は、カスタム許容値を指定することができます。これらの詳細はあなたの他の質問に固有のものなので、先に進み、この1つを閉じる/受け入れることができます。 – Suever

+0

ok、thx。さて、私は私のコメントを新しい質問にしました。しかしこれは非常に似ています。 –

関連する問題