如何保留一维数组的单调递增值
how to retain monotonically increasing values of a one dimensional array
假设我有一个矩阵,
x=[1,2,3,5,4,6,6,7,4,2,3,4,5,6,10,12,4,5,43,23,45,34,54,78];
现在,我想创建一个新矩阵,我想在其中知道其值高于(不等于但严格大于)所有先前元素的元素的索引和值。
所以,我要找的数组是,
y=[1,2,3,5,6,7,10,12,43,45,54,78];
因为其他数字只是噪声,向量 x 中与这些值对应的索引也是如此。
还有一点是我想避免遍历数组,因为我的实际数据很大。
如何使用 cummax
来计算 运行 最大值:
cm = cummax(x);
ind = [1,find(x(2:end) > cm(1:end-1))+1];
y = x(ind);
采用 Divakar 的方法(如果需要,直到 Divakar 发布它):
ind = find([true diff(cummax(x))>0]);
y = x(ind);
假设我有一个矩阵,
x=[1,2,3,5,4,6,6,7,4,2,3,4,5,6,10,12,4,5,43,23,45,34,54,78];
现在,我想创建一个新矩阵,我想在其中知道其值高于(不等于但严格大于)所有先前元素的元素的索引和值。
所以,我要找的数组是,
y=[1,2,3,5,6,7,10,12,43,45,54,78];
因为其他数字只是噪声,向量 x 中与这些值对应的索引也是如此。
还有一点是我想避免遍历数组,因为我的实际数据很大。
如何使用 cummax
来计算 运行 最大值:
cm = cummax(x);
ind = [1,find(x(2:end) > cm(1:end-1))+1];
y = x(ind);
采用 Divakar 的方法(如果需要,直到 Divakar 发布它):
ind = find([true diff(cummax(x))>0]);
y = x(ind);