Commit a17d8f41 authored by MigAP's avatar MigAP

better filtering for periodic phenomena

parent 81a89683
......@@ -120,7 +120,7 @@ les oscillations rapides observés précédément.
#+begin_src python :results file :session :var matplot_lib_filename="zoomRawData.png" :exports both
# Window's size where we want to zoom.
windowSize = 150;
windowSize = 450;
plotDatesZoom = pltDates.date2num(dates[:windowSize])
plt.figure(figsize=(10,5))
......@@ -138,7 +138,6 @@ Sur cette figure on met plus en évidence les oscillations rapides sur
le niveau de concentration de CO2. D'après la figure, dans un premier
temps supposer que les oscillations ont une période de un ans.
* Analyse fréquentielle de la variation de la concentration de CO2.
On possède des données toutes les semaines.
#+begin_src python :results file :session :var matplot_lib_filename="dataFFT.png" :exports both
import numpy as np
......@@ -147,9 +146,9 @@ On possède des données toutes les semaines.
co2 = np.array(concentration)
#Remove mean value
co2 = co2 - np.mean(co2)
co2NoMean = co2 - np.mean(co2)
# Concentration FFT
concentrationFFT = np.fft.fft(co2)
concentrationFFT = np.fft.fft(co2NoMean)
# We take the norm of the FFT
concentrationFFTNorm = np.absolute(concentrationFFT)
concentrationFFTAngle = np.angle(concentrationFFT)
......@@ -194,16 +193,23 @@ caractériser les différérentes fréquences d'oscillations du signal.
#+RESULTS:
[[file:fftZoom.png]]
On remarque que les "petites" oscillations ont une amplitude
d'environ 1400. On tentera de filtrer donc le signal au dessus de ce
seuil.
** Filtrage des grandes oscillations
On remarque sur le spectre du signal que le phénomène périodique
possède deux pics d'amplitudes d'environ 1400 et 4000. On suppose que
le premier pic avec une plus grande amlitude correspond au phénomène
périodique que l'on a mis en évidence dans le graphique temporel des
données. En effet on a supposé précédemment que les oscillations
avaient une période de un an, notre unité de temps étant une semaine,
on peut déduire la fréquence des oscillation en supposant que une
année a 52 semaine : \( f = \frac{1}{52} \approx 0.019 \) ce qui reste
cohérent avec notre analyse fréquentielle.
** Filtrage de la contribution lente
On élimine toutes les valeurs au dessus du seuil établit précédemment.
On élimine toutes les valeurs au dessus des seuis établis
précédemment.
#+begin_src python :results file :session :var matplot_lib_filename="smallOsillations.png" :exports both
# Extraction of the small oscillations
smallAmplitude = 1400
smallAmplitude = 4000
smallNorm = np.copy(concentrationFFTNorm)
smallNorm[smallNorm > smallAmplitude] = 0
......@@ -237,13 +243,29 @@ On élimine toutes les valeurs au dessus du seuil établit précédemment.
#+RESULTS:
[[file:smallOsillationsTime.png]]
** Filtrage des petites oscillations
#+begin_src python :results file :session :var matplot_lib_filename="smallOsillationsTimeZoom.png" :exports both
plt.figure(figsize=(10,5))
plt.plot(t,smallSignal)
plt.ylim(-10,10)
plt.tight_layout()
plt.savefig(matplot_lib_filename)
matplot_lib_filename
#+end_src
#+RESULTS:
[[file:smallOsillationsTimeZoom.png]]
On peut déduire que le phénomère périodique a une amplitude de cinq d'après le graphique.
** Filtrage du phénomène périodique
On élimine toutes les valeurs au dessus du seuil établit précédemment.
#+begin_src python :results file :session :var matplot_lib_filename="bigOsillations.png" :exports both
# Extraction of the big oscillations
bigAmplitude = 1400
bigAmplitude = 4000
bigNorm = np.copy(concentrationFFTNorm)
bigNorm[bigNorm < bigAmplitude] = 0
......@@ -276,3 +298,31 @@ On élimine toutes les valeurs au dessus du seuil établit précédemment.
#+RESULTS:
[[file:bigOsillationsTime.png]]
** Comparaison des signaux bruts et filtrés
#+begin_src python :results file :session :var matplot_lib_filename="bigOsillationsComparisons.png" :exports both
plt.figure(figsize=(10,5))
plt.plot(t,co2,label="measures")
plt.plot(t,bigSignal+np.mean(co2),label="filtered")
plt.legend()
plt.tight_layout()
plt.savefig(matplot_lib_filename)
matplot_lib_filename
#+end_src
#+RESULTS:
[[file:bigOsillationsComparisons.png]]
* Modélisation des phénomènes et extrapolations
** Oscillations périodiques
L'analyse fréquentielle nous a permis caractériser le phénomène
périodique par un signal de fréquence \( f = 0.02 \) par unité de
temps (par semaine), et avec une amplitude de 5. Ainsi, soit \(s_p(t)\) le
signal périodique avec \(t\) en semaine on a :
\begin{equation}
s_p(t) = 5 \cos (0.02 t)
\end{equation}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment