计算数组元素的总和并在 MATLAB 中对整个数组进行重复
Calculating sum of array elements and reiterate for entire array in MATLAB
我有一个大小为 7812x1 的向量 A
,我想计算长度为 21(所以 372 个块)的固定 windows 的总和。应该重申这一点,以便输出应该 return 大小为 372x1 的向量。
我有t=7812
、p=372
、w=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
我有一个大小为 7812x1 的向量 A
,我想计算长度为 21(所以 372 个块)的固定 windows 的总和。应该重申这一点,以便输出应该 return 大小为 372x1 的向量。
我有t=7812
、p=372
、w=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