在MATLAB中计算阵列元素的总和并对整个阵列进行重申



我有一个大小为7812x1的向量A,并且想要计算长度为21的固定窗口的总和(因此是372个块)。应该重申这一点,以便输出应该返回大小为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))部分允许类似滚动窗口的功能。窗口的长度是21,所以实际上不需要用变量来表达is,但我认为它保持了一些灵活性。

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

A的每个块重新成形为一个矩阵,并计算每个列的和:

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

遵循您使用滚动/移动窗口的想法(需要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

最新更新