# Please share the algorithm of the particular data set. I want to find out average of the attached data of every 5 seconds. Thank You

1 view (last 30 days)
SATYA PAL on 20 Jun 2023
Answered: Steven Lord on 15 Feb 2024
Datas ain Excel are attached
SATYA PAL on 22 Jun 2023
Dear Sir
I want the averages of discrete blocks over 5-second intervals.
SATYA PAL on 22 Jun 2023
but the number of data in each interval of 5 seconds are not same

Mathieu NOE on 22 Jun 2023
Edited: Mathieu NOE on 22 Jun 2023
hello
try this
data = readmatrix('Data.csv'); % Force (N),Position (mm),Time (sec)
Time = data(:,3);
t = linspace(Time(1),Time(end),size(data,1)); % recompute the time vector because the original data is rounded
dt = mean(diff(t));
%% home made solution (you choose the amount of overlap)
buffer_size = round(5/dt); % how many samples for 5 seconds buffer ?
overlap = 0; % overlap expressed in samples
%%%% main loop %%%%
[new_time,data_out] = my_movmean(t,data(:,1:2),buffer_size,overlap);
figure(2),
plot(t,data(:,1),new_time,data_out(:,1),'*-r');
title('Force');
legend('raw data','5s mean');
xlabel('Time(s)');
ylabel('(N)');
figure(3),
plot(t,data(:,2),new_time,data_out(:,2),'*-r');
title('Position');
legend('raw data','5s mean');
xlabel('Time(s)');
ylabel('(mm)');
%%%%%%%%%% my functions %%%%%%%%%%%%%%
function [new_time,data_out] = my_movmean(t,data_in,buffer_size,overlap)
% NB : buffer size and overlap are integer numbers (samples)
% data (in , out) are 1D arrays (vectors)
shift = buffer_size-overlap; % nb of samples between 2 contiguous buffers
[samples,~] = size(data_in);
nb_of_loops = fix((samples-buffer_size)/shift +1);
for k=1:nb_of_loops
start_index = 1+(k-1)*shift;
stop_index = min(start_index+ buffer_size-1,samples);
x_index(k) = round((start_index+stop_index)/2);
data_out(k,:) = mean(data_in(start_index:stop_index,:),1,'omitnan'); %
end
new_time = t(x_index); % time values are computed at the center of the buffer
end
##### 3 CommentsShow 1 older commentHide 1 older comment
SATYA PAL on 15 Feb 2024
Yes Sir Solved
Mathieu NOE on 15 Feb 2024
:)
it's a polite way to ask you to accept my answer , if , of course, it has helped you !
tahnks

Steven Lord on 15 Feb 2024
Since you have time-based data you might want to read your data into a timetable using the readtimetable function. If you do, the retime function for timetable arrays may be useful.