如何找到向量的下降部分并将其删除?
How to find the descending part of a vector and remove it?
我有一个像 A = [20 30 40 50 60 55 54 60 70]
这样的向量。它总是递增直到无效值(此处为 ex. 55
),我需要找到该元素的索引并删除之后的所有元素。我想要的向量是 [20 30 40 50 60]
有什么建议吗?
简答:
A(find(diff(A)<0,1)+1:end) = []
更长的答案和解释:
diff
计算相邻元素的差值:
>> diff(A)
ans =
10 10 10 10 -5 -1 6 10
然后我们搜索那些小于零的差异的第一个索引,并删除这个和所有后续元素。
>>> 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
我有一个像 A = [20 30 40 50 60 55 54 60 70]
这样的向量。它总是递增直到无效值(此处为 ex. 55
),我需要找到该元素的索引并删除之后的所有元素。我想要的向量是 [20 30 40 50 60]
有什么建议吗?
简答:
A(find(diff(A)<0,1)+1:end) = []
更长的答案和解释:
diff
计算相邻元素的差值:
>> diff(A)
ans =
10 10 10 10 -5 -1 6 10
然后我们搜索那些小于零的差异的第一个索引,并删除这个和所有后续元素。
>>> 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