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