获取MATLAB向量的子集

时间:2013-10-03 10:41:41

标签: algorithm matlab

我在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 ) ;

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

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

我想我有两个问题

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

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

谢谢, Keeran

1 个答案:

答案 0 :(得分:3)

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

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

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

供参考,请注意&也适用于标量。 &&的原因是标量可能更快(请参阅doc)。