计算数组元素的总和并在 MATLAB 中对整个数组进行重复

Calculating sum of array elements and reiterate for entire array in MATLAB

我有一个大小为 7812x1 的向量 A,我想计算长度为 21(所以 372 个块)的固定 windows 的总和。应该重申这一点,以便输出应该 return 大小为 372x1 的向量。

我有t=7812p=372w=21

for t=1:p
   out = sum(A((t*w-w+1):(t*w)));
end

但是,此代码不起作用。我的想法是 ((t*w-w+1):(t*w)) 部分允许滚动 window 之类的东西。 window 的长度为 21,因此实际上不需要用变量来表达 is,但我认为它保持了一定的灵活性。

我已经看到了可能相关的问题(例如向量的部分求和),但我不确定这是否会产生所需的输出。

整形为矩阵,使A的每一块为一列,计算各列之和:

result = sum(reshape(A, w, []), 1);

按照您使用 rolling/moving window 的想法(需要 Matlab 2016a 或更高版本):

t = 7812; w = 21; % your parameters
A = rand(t,1); % generate some test data

B = movsum(A,w); % the sum of a moving window with width w
out = B(ceil(w/2):w:end); % get every w'th element