Azzera filtri
Azzera filtri

Moving sum of 4 subsequent observatins

4 visualizzazioni (ultimi 30 giorni)
How can I get the moving sum of 4 subsequent observations out of variable 'var'? In specific, I would like the new variable to be constructed as follows:
(81,0970 + 85,2039 + 90,0506 + 89,0082) = ...
(85,2039 + 90,0506 + 89,0082 + 100,3168) = ...
(90,0506 + 89,0082 + 100,3168 + 105,4897) = ...
...

Risposta accettata

Steven Lord
Steven Lord il 24 Mar 2021
Use the movsum function.
  1 Commento
Joanna Przeworska
Joanna Przeworska il 25 Mar 2021
Dear Steven,
movsum(A,[3 0]) solves my problem. Thank you.
Best regards,
JP

Accedi per commentare.

Più risposte (1)

Mathieu NOE
Mathieu NOE il 24 Mar 2021
hello
see example below (run it with 4 and not 5 samples averaging) :
% dummy data
data = rand(320,15);
buffer = 5; % nb of samples for averaging
% zero overlap mean averaging
[m,n] = size(data)
for ci=1:fix(length(data)/ buffer)
start_index = 1+(ci-1)*buffer;
stop_index = min(start_index+ buffer,length(data));
time_index(ci) = round((start_index+stop_index)/2); % time index expressed as sample unit (dt = 1 in this simulation)
avg_data(ci,:) =mean(data(start_index:stop_index,:)); %
end
figure(1),
plot(time_index,avg_data);
  2 Commenti
Joanna Przeworska
Joanna Przeworska il 25 Mar 2021
Dear Mathieu,
Thank you for your suggestion, however, to be honest, I thought there could be more simplest way to solve my problem. If am not able to find any other, I will use our idea.
Kind regards, JP
Mathieu NOE
Mathieu NOE il 25 Mar 2021
hello Joanna
it's coming from long time ago when I rote most of the functions I still use today, now , as mentionned by Steven Lord below, you can do it in one line with movsum;
but basically that movsum function implements the code I show you

Accedi per commentare.

Categorie

Scopri di più su Operating on Diagonal Matrices in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by