假设我有一个矩阵,
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中与这些值对应的索引。
还有一点是我想避免在数组上循环,因为我的实际数据很大。
答案 0 :(得分:2)
如何使用cummax
计算正在运行的max:
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);