将数组划分为不间断的递增序列

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!