如何找到向量的下降部分并将其删除?

Mar*_*yam 3 matlab vector indices

我有一个矢量A = [20 30 40 50 60 55 54 60 70].它始终是递增的,直到无效值(此处为ex.55),我需要找到此元素的索引并在此之后删除所有元素.我想要的vectror是[20 30 40 50 60]任何建议?

m.s*_*.s. 8

简答:

A(find(diff(A)<0,1)+1:end) = []
Run Code Online (Sandbox Code Playgroud)

更长的答案解释:

diff 计算相邻元素之间的差异:

>> diff(A)

ans =

10    10    10    10    -5    -1     6    10
Run Code Online (Sandbox Code Playgroud)

然后,我们搜索那些小于零的差异的第一个索引,并删除这个和所有后续元素.

>>> idx = find(diff(A)<0,1)+1

idx =

 6

>>> A(idx:end)

ans =

55    54    60    70

>> A(idx:end) = []

A =

20    30    40    50    60
Run Code Online (Sandbox Code Playgroud)