2013-10-03 73 views
0

我在MATLAB中有一个表示函数值的矢量。我正在绘制这些图形,但要突出显示特定范围内的图形。特别是我对函数值接近但小于'v'的所有点感兴趣。即对于值“X”,我想如果获取MATLAB矢量子集

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

如果我要选择所有的点“X”,使得

abs(x - v) < epsilon 

什么我得工作是突出了这一点(我我不知道这是否是好的编码做法与否)

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

,然后绘制XS对我的YS在轴的

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

这种方法不再工作,如果我尝试做

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

在这种情况下,我收到以下错误,无论怎样我安排括号:

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

我想我有两个问题

1)为什么,如果我尝试使用逻辑& &的办法行不通?至于我可以看到我使用的是可转换为逻辑标值

2.表达式)这是一个很好的方式来选择点的MATLAB的一个子集?

感谢, Keeran

+1

对于“为什么”的问题:&&做短路评估(https://en.wikipedia.org/wiki/Short-circuit_evaluation),而&没有。 – bdecaf

+0

这很有道理。好消息,谢谢 –

回答

3

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

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

其他是的,这是选择点的子集的正确方法。

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

+0

+1魔法。奇迹般有效。感觉有点傻我没有试过这个:) –