Matlab:找到数组中某个范围内的点及其在数组中的顺序/位置?

时间:2015-07-14 12:52:14

标签: arrays matlab

我有一个数组

X = 
10
5 (e)
20
5
30
6
40
4
50
3
60
8
70
12

依旧......

我已经知道我称之为e的值5。我也知道它在阵列中的位置。我想要以下内容:

  1. X中的所有元素(2:2:结束)在距离e的+/- 3的某个范围内。 (分别为5,5,6,4,3,8)。
  2. 相应的X(1:2:结束)到我们在范围内找到的值。这意味着Y的最终答案应该是:

     Y = 
     10
     5
     20
     5
     30
     6
     40
     4
     50
     3
     60
     8
    
  3. 非常感谢!

1 个答案:

答案 0 :(得分:0)

在MATLAB / Octave中,您可以使用函数find找到非零元素的索引。将find与逻辑运算符结合起来很容易解决您的问题:

Y = X(find(X <= X(2)+3 & X >= X(2)-3));

说明:

e = X(2)
X <= e+3   % Produces a Matrix with the element-wise result (1 or 0). The
X >= e-3   % values are determined by the logic operators >= and <=.
find(X)    % Returns a matrix with the indeces of non-zero elements of X.
X(find(X)) % Returns the non-zero elements.

在Octave中测试过(虽然也应该在MATLAB中工作)。