0

関数値を表す MATLAB のベクトルを取得しました。これらをプロットしていますが、特定の範囲にあるものを強調したいと思います。特に、関数値が「v」に近いが「v」よりも小さいすべての点に関心があります。つまり、値「x」の場合、次の場合にこの点を強調したい

abs( x - v ) < epsilon && x < v

すべてのポイント「x」を選択したい場合

abs( x - v) < epsilon

私が取り組まなければならないのは(これが良いコーディング慣行であるかどうかはわかりません)

inds = (abs( xs - v ) < epsilon ) ;

次に、軸aのysに対してxsをプロットします

plot( a, ys(inds), xs(inds), 'ks ' ) ;

私が試してみると、このアプローチはもはや機能しません

inds = (abs( xs - v) < epsilon && xs < v ) ;

この場合、ブラケットをどのように配置しても、次のエラーが発生します。

' || のオペランド && 演算子は、論理スカラー値に変換可能でなければなりません。

2つの質問があると思います

1.) 論理 && を使用しようとすると、なぜこのアプローチが機能しないのですか? 私が見る限り、論理スカラー値に変換できる式を使用しています

2.) これは MATLAB で点のサブセットを選択する良い方法ですか?

ありがとう、キーラン

4

1 に答える 1

3

はスカラー&&専用だからです。スカラーではなくベクトルがあるため、代わりに使用する必要があります。&

inds = ( abs(xs-v) < epsilon & xs < v );

それ以外は、ポイントのサブセットを選択する正しい方法です。

&参考までに、はスカラーに対しても機能することに注意してください。持つ理由&&は、スカラーの方が潜在的に高速だからです (「参考文献」を参照doc)。

于 2013-10-03T10:48:52.697 に答える