我有一个数组的非零列数组,它严格增加,但间隙加以打断。我需要取非零列的平均值,但是关于休息时间。
例如,如果数组是
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} )
会将数组拆分为递增的序列,并以减少为单位。
如何将数组拆分为由间隙打断的递增序列?
答案 0 :(得分:3)
想出来了!
output = accumarray( cumsum([0; diff(a(:))] > 1)+1, a, [], @(x) {x} )
完成这项工作。
我只需要检查diff(a(:))何时大于1!