sliding window algorithm for time-series data

83 views (last 30 days)
I have sample data and sampling frequency . Sample data points are 27900 and sampling frequency is 600 hz . I want to apply slidding window concept for my data. I want divide all data into set of 5 sec each with overlap of 4 sec. (i.e. 0-5, 1-6, 2-7, etc.). Please help me to apply slidding window concept.

Accepted Answer

Mathieu NOE
Mathieu NOE on 20 May 2021
HELLO
see demo below - second section implement a overlap method
all the best
clc
clearvars
% dummy data
data = rand(320,3); % data must be column oriented (number of rows = number of samples)
buffer = 25; % nb of samples for averaging
%% zero overlap averaging (unweighted)
[m,n] = size(data);
for ci=1:fix(m/buffer)
start_index = 1+(ci-1)*buffer;
stop_index = min(start_index+ buffer-1,m);
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,'+-');
% return
%% averaging with overlap
clearvars
% dummy data
data = rand(320,3);
buffer = 25; % nb of samples in one buffer (buffer size)
overlap = 10; % overlap expressed in samples
%%%% main loop %%%%
[m,n] = size(data);
shift = buffer-overlap; % nb of samples between 2 contiguous buffers
for ci=1:fix((m-buffer)/shift +1)
start_index = 1+(ci-1)*shift;
stop_index = min(start_index+ buffer-1,m);
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(2),
plot(time_index,avg_data,'+-');
  8 Comments
Alyaa Ghazi
Alyaa Ghazi on 20 Apr 2024 at 20:30
This was very helpfull to me also. Thanks alot.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!