Arrays Matlab:在数组中查找特定范围内的点及其在数组中的顺序/位置?

Arrays Matlab:在数组中查找特定范围内的点及其在数组中的顺序/位置?,arrays,matlab,Arrays,Matlab,我有一个数组 X = 10 5 (e) 20 5 30 6 40 4 50 3 60 8 70 12 等等 我已经知道我称之为e的值5。我也知道它在阵列中的位置。我希望: X(2:2:end)中的所有元素与e的+/-3范围内。(它们是5,5,6,4,3,8) 对应的X(1:2:end)与我们在范围内找到的值一致。这意味着最终答案Y应该是: Y = 10 5 20 5 30 6 40 4 50 3 60 8 非常感谢 在MATLAB/Octave中,您可以使用该

我有一个数组

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

我已经知道我称之为e的值5。我也知道它在阵列中的位置。我希望:

  • X(2:2:end)中的所有元素与e的+/-3范围内。(它们是5,5,6,4,3,8)
  • 对应的X(1:2:end)与我们在范围内找到的值一致。这意味着最终答案Y应该是:

     Y = 
     10
     5
     20
     5
     30
     6
     40
     4
     50
     3
     60
     8
    

  • 非常感谢

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

    Y = X(find(X <= X(2)+3 & X >= X(2)-3));
    
    Y=X(发现(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.
    
    e=X(2)
    X=e-3%的值由逻辑运算符>=和确定

             X = [10; 5; 20; 5; 30; 6; 40; 4; 50; 3; 60; 8; 70; 12];
             Xodd=X(1:2:end);
             Xeven=X(2:2:end);
             i=find(Xeven>5) %just an example could be done with other conditions 
             t=[Xodd(i) Xeven(i)];
             %cascade them back!
             Y=t';Y=Y(:);
    

    你应该对你的问题表现出一点努力。请提供您当前的实施情况,以便我们讨论并帮助您。请注意,您应该首先真诚地尝试自己解决问题。虽然我的答案输出的是您在问题中提供的相同的
    Y
    矩阵,但我对其进行了编辑,以提供更多细节。你应该仔细阅读FAQ来理解这个站点的用途。您几乎没有做出任何努力,也没有清楚准确地解释您的问题到底需要什么。Carles感谢您的努力,但我不确定您在我的问题中是如何得到Y的,您的代码只给出了Y=[5;5;6;4;3;8]!我还需要X(1:2:end)中的元素!这在问题中解释得非常清楚和准确。任何不理解并愿意帮助的人,请务必提问。我想我的问题很清楚,我有清晰的输入和输出!