计算数组元素的总和并重申在MATLAB整个阵列(Calculating sum of array e

2019-10-29 11:08发布

我有一个矢量A大小7812x1的并想计算长度的固定窗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的,所以是不是真的需要表达的是与变数,但我认为它保持一定的灵活性。

我已经看到了潜在的相关问题(矢量的这种局部之和),但我不知道这是否会导致所需的输出。

Answer 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


Answer 2:

重塑成矩阵,使得每个块A是一列,并计算每个式柱的总和:

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


文章来源: Calculating sum of array elements and reiterate for entire array in MATLAB