From 4cff4f1d49c5388200e57c398ddc8e4200bf2256 Mon Sep 17 00:00:00 2001 From: "lymeng.ly" Date: Mon, 7 Apr 2025 09:50:01 +0200 Subject: [PATCH] Added new file of MovingAverage --- applyMovingAverage.m | 33 +++++++++++++++++++++++++++++++++ movingAverage.m | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 applyMovingAverage.m create mode 100644 movingAverage.m diff --git a/applyMovingAverage.m b/applyMovingAverage.m new file mode 100644 index 0000000..7232ea3 --- /dev/null +++ b/applyMovingAverage.m @@ -0,0 +1,33 @@ +function applyMovingAverage(freq_sampling, duration_signal, signal_constant, nbSamples, plt) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% function applyMovingAverage(freq_sampling, duration_signal, signal_constant, nbSamples, plt) +% ex.:applyMovingAverage(500, 10, 100, 10, 1); +% +% Task: To generate a digital constant signal with noise and apply moving +% average filter +% +% Inputs: +% -freq_signal: frequency of the signal (in Hz) +% -signal_contant:constant value of our signal(a.u.) +% -duration_signal: duration of the signal (in s) +% -signal_noise_range: range of noise in our signal(a.u.) +% -nbSamples: +% -plt: if greater than 0, signal will be plotted +% +% Outputs:None +% +% Author: Lymeng LY, lymeng.ly@ecam.fr +% Date: 07/04/2025 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%generates time vector +t=0:1/freq_sampling:duration_signal; + +%generate the signal samples +for l_sample=1:length(t) + signal(l_sample)=signal_constant+(rand()-0.5); +end + +%apply the moving average filter +signal_filtered=movingAverage(t, signal,nbSamples, plt); + diff --git a/movingAverage.m b/movingAverage.m new file mode 100644 index 0000000..983b3d7 --- /dev/null +++ b/movingAverage.m @@ -0,0 +1,40 @@ +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