在matlab中求和矩阵中不重叠的区域



我试图以二十为一组对一个向量求和,向量的长度例如为7628。我想不出一种方法来输出一个20集或的和的向量

ans = [sum(a(1:20) sum(a(21:30)....]. 

由于7600可以被20整除,因此可以对进行整形和求和

a = rand(7600,1);
sum(reshape(a,20,7600/20))

编辑针对不可整除长度的寻址注释

b    = 20;
sz   = size(a);
% Last elements to exclude
excl = mod(sz(1),b);
% Sum reshape and sum excluded separately
[sum(reshape(a(1:end-excl), b, fix(sz(1)/b))), sum(a(end-excl+1:end))]

upfirdn也应该工作良好,1的放大因子、ones(1,20)的脉冲响应和20的抽取因子。

(注意:需要信号处理工具箱)

最新更新