SignalProcessing_filtering/movingAverage.m

41 lines
1.0 KiB
Matlab

function signal_filtered = movingAverage(t, signal, nbSamples, plt)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% function signal_filtered = movingAverage(t, signal, 10, plt)
% ex.: signal_filtered = movingAverage(t, signal, 10, 1);
%
% Task: To apply a moving average filter
%
% Inputs:
% -t: temporal vector(in s)
% -signal: signal amplitude (length is the same as t), in a.u
% -nbSamples=nb of samples taken into account to complete the moving
% amplitude
% -plot
%
% Outputs: -signal_filtered:filtered signal amplitude is a.u. after
% windowing
%
%
% Author: Lymeng LY, lymeng.ly@ecam.fr
% Date: 07/04/2025
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
signal_filtered = zeros(1,length(signal));
for l_samples = nbSamples:length(signal)
sum = 0;
for l_avg=0:nbSamples-1
sum = sum+signal(l_sample-l_avg);
end
signal_filtered(l_samples)= sum/nbSamples;
end
if(plt)
figure;
plot(t, signal, 'b'); hold on;
plot(t, signal_filtered, 'r');
ylim([99 101]);
xlabel('Time(s)');
ylabel('Amplitude(a.u.)');
legend('raw','filtered');
end