【问题标题】:Getting subset of MATLAB vector获取 MATLAB 向量的子集
【发布时间】:2013-10-03 19:03:04
【问题描述】:

我在 MATLAB 中有一个表示函数值的向量。我正在绘制这些,但想突出显示特定范围内的那些。特别是我对函数值接近但小于'v'的所有点感兴趣。 IE。对于值“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 中选择点子集的好方法吗?

谢谢, 基兰

【问题讨论】:

标签: algorithm matlab


【解决方案1】:

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

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

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

作为参考,请注意&amp; 也适用于标量。使用&amp;&amp; 的原因是它对于标量可能更快(请参阅doc)。

【讨论】:

  • +1 魔法。奇迹般有效。感觉有点傻,我以前没试过这个:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-07
  • 2014-12-26
  • 2013-02-06
  • 1970-01-01
  • 2018-06-22
  • 2016-05-02
  • 1970-01-01
相关资源
最近更新 更多