41 lines
1.1 KiB
Matlab
41 lines
1.1 KiB
Matlab
function signal_filtered = movingAverage(t, signal, nbSamples, plt)
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% function signal_filtered = movingAverage(t, signal, nbSamples, 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: flag if equal to 1, figures are displayed
|
|
%
|
|
% 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
|