0

我在 MATLAB 中有一个表示函数值的向量。我正在绘制这些,但想突出显示特定范围内的那些。特别是我对函数值接近但小于'v'的所有点感兴趣。即对于一个值'x',我想强调这一点,如果

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

如果我想选择所有点'x'这样

abs( x - v) < epsilon

我要做的是(我不确定这是否是好的编码实践)

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

然后在轴 a 上绘制 xs 和我的 ys

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

如果我尝试这样做,这种方法将不再有效

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

在这种情况下,无论我如何排列括号,我都会收到以下错误:

'|| 的操作数 和 && 运算符必须可转换为逻辑标量值。

我想我有两个问题

1.) 如果我尝试使用逻辑 &&,为什么该方法不起作用?据我所知,我正在使用可以转换为逻辑标量值的表达式

2.) 这是在 MATLAB 中选择点子集的好方法吗?

谢谢,基兰

4

1 回答 1

3

那是因为&&仅适用于量值。你有向量,而不是标量,所以你必须使用&

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

除此之外,是的,这是选择点子集的正确方法。

作为参考,请注意这&也适用于标量。这样做的原因&&是它对于标量可能更快(请参阅 参考资料doc)。

于 2013-10-03T10:48:52.697 回答