细分中沿行的CUMSUM-MATLAB

用户2100039

我有数组中的数据A = 100 X 612我需要在12列段51时间中累加,并将结果存储在新数组中B = 100 X 612最终数组B将沿12累加,然后再次沿列继续使用cumsum13:24并像这样一直持续到末尾列601:612100按行顺序重复此操作

我已经尝试过多次使用循环,但是无法获得答案-必须有一种更简单的方法来获得解决方案。太依赖循环了!

inx = 1:12:612; %use and index   
for i = 1:100;
    for j = 1:612;
        for k = 1:51;
            B(i,j) = cumsum(A(i,inx(k):inx(k)+11));
        end;
    end;
end;
迪卡卡(Divakar)

使用轻量级reshape和必要的cumsum-

intv = 12 %// interval or segment length
B = reshape(cumsum(reshape(A,size(A,1),intv,[]),2),size(A))

这里的基本思想是将输入数组重塑为3D数组,以保持行数相同,并且每行以intv长度结尾然后,cumsum沿着行执行,最后重新调整为输入数组的大小。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章