将数组划分为不间断的递增序列
Dividing an array into unbroken increasing sequences
我有一个数组的非零列数组,它严格递增,但中间有间隙。我需要取非零列的平均值,但要考虑中断。
例如,如果数组是
a = [2,3,4,5,6,8,9,10]
我需要分别对 [1,2,3,4,5,6]
和 [7,8,9,10]
列进行平均(开头的额外部分是基础信号发生变化时)。
此代码:
output = accumarray( cumsum([0; diff(a(:))] < 0)+1, a, [], @(x) {x} )
将数组拆分为递增序列,以递减标点。
如何将数组拆分为由间隙打断的递增序列?
想通了!
output = accumarray( cumsum([0; diff(a(:))] > 1)+1, a, [], @(x) {x} )
完成任务。
我只需要检查 diff(a(:)) 何时大于 1!
我有一个数组的非零列数组,它严格递增,但中间有间隙。我需要取非零列的平均值,但要考虑中断。
例如,如果数组是
a = [2,3,4,5,6,8,9,10]
我需要分别对 [1,2,3,4,5,6]
和 [7,8,9,10]
列进行平均(开头的额外部分是基础信号发生变化时)。
此代码:
output = accumarray( cumsum([0; diff(a(:))] < 0)+1, a, [], @(x) {x} )
将数组拆分为递增序列,以递减标点。
如何将数组拆分为由间隙打断的递增序列?
想通了!
output = accumarray( cumsum([0; diff(a(:))] > 1)+1, a, [], @(x) {x} )
完成任务。
我只需要检查 diff(a(:)) 何时大于 1!