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

时间:2016-06-15 14:52:05

标签: matlab 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} )

会将数组拆分为递增的序列,并以减少为单位。

如何将数组拆分为由间隙打断的递增序列?

1 个答案:

答案 0 :(得分:3)

想出来了!

output = accumarray( cumsum([0; diff(a(:))] > 1)+1, a, [], @(x) {x} )

完成这项工作。

我只需要检查diff(a(:))何时大于1!