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。我也知道它在阵列中的位置。我希望:
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)中的元素!这在问题中解释得非常清楚和准确。任何不理解并愿意帮助的人,请务必提问。我想我的问题很清楚,我有清晰的输入和输出!