Lecture de spectre fréquence de Transformée de Fourier

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
Mikamat
Messages: 2
Enregistré le: 28 Mar 2013, 16:54

lecture de spectre fréquence de Transformée de Fourier

par Mikamat » 29 Mar 2013, 07:59

Bonjour,

je travaille en thèse sur des profils de rivières, la méthode consiste à représenter ces profils en graphique :

pente = f(distance depuis la source). (Par "pente" comprenez la pente du fond de la rivière entre 2 pixels)

Pour cela j'extrait mes altitudes à partir d'un MNT (Modèle numérique de terrain : Raster découpant une zone géographique en pixel (résolution spatiale = 30m dans mon cas), dont chaque pixel contient une valeur d'altitude).

Lors de l'extraction du profil en altitude je dois choisir certains paramètres de lissage, je m'intéresse particulièrement à un paramètre de lissage horizontal.
Ce paramètre est une longueur L (ici convertit en pixel) telle que pour chaque pixel, la valeur d'altitude va être moyennée sur la longueur L centrée sur le pixel moyenné, la longueur représente donc une fenêtre d'échantillonnage qui se déplace le long de ma rivière.
Les pentes sont ensuite calculées à partir de ces altitudes extraites.

Mon but est d'analyser mes données afin de déterminer quelle valeur de ce paramètre de lissage me permet d'éliminer mon "bruit de fond" (qui ici n'en est pas un en réalité, il s'agit plus d'un éparpillement des données) sans altérer mon signal.

J'ai donc réalisé une transformée de Fourier sur mes données non lissées puis sur mes données lissées en me disant que je verrais peut-être apparaître sur les spectres de fréquence un ou plusieurs pic m'indiquant sur quelle fréquence se trouvait mon signal et choisir mon paramètre en conséquence, même si je ne savais pas dès le départ comment je pourrais remonter de la fréquence à ma longueur de paramètre.
J'ai réalisé les TF sur mes altitudes et sur mes pentes

Donc j'ai quelques questions:

- Tout d'abord je ne suis plus très sûr que l'utilisation d'une TF soit appropriée dans mon cas, et vous?

- Ensuite je ne suis pas sûr de représenter ma TF dans l'espace adéquat (utilisation de la fonction freeqz sur matlab pour ceux qui connaissent). Il s'agit 1) de la fréquence avec magnitude (en Db) en fonction de la fréquence normalisée (en *Pi rad/sample) et 2) de la phase avec phase (en degrés) en fonction de la même fréquence normalisée. (Je ne sais pas comment faire pour mettre mes graphes en pièces jointe ici).

- Je ne sais pas lire ces diagrammes en fréquences!!! et je ne trouve pas d'aide à leur lecture sur internet, je pensais pouvoir voir apparaître une absence de pic sur mon signal traité qui correspondrait à ma fenêtre de lissage mais pas du tout. Bref je met un lien vers un post que j'ai posé dans un forum d'aide Matlab qui détail ma procédure et surtout fait apparaître mes spectre en fréquence réalisé sur mes pentes.
http://www.developpez.net/forums/d1318943/autres-langages/algorithmes/transformee-fourrier-donnees-terrain/#post7204820

Je suis conscient que cela vous demande peu-être un peu de temps, mais si une bonne âme pouvait m'aider.. voilà 2 semaines que je suis bloqué sur ce problème et je dois vraiment avancer dans mon travail.

D'avance merci aux bonnes âmes ^^



Mikamat
Messages: 2
Enregistré le: 28 Mar 2013, 16:54

par Mikamat » 05 Avr 2013, 13:22

Bonjour à tous,

il semblerait que la TF ne soit pas adaptée au traitement de mon signal car celui ci est non périodique.

Je suis toujours à la recherche d'un moyen mathématique afin de sélectionner la meilleure valeur de mon paramètre de lissage, ce qui revient à trouver un moyen d'évaluer mon rapport signal/bruit.

Si des idées vous viennent...

Cordialement

sinusx
Membre Naturel
Messages: 16
Enregistré le: 26 Sep 2009, 16:08

par sinusx » 05 Avr 2013, 19:08

Bonjour,

Pour t'aider, il faudrait éclaircir quelques points.

Si j'ai bien compris, tu cherches à représenter la dérivée de la profondeur, en fonction de la distance à la source. Tu travailles donc à une dimension ? car à deux dimensions, il y aurait 4 "pentes" (ou 8, selon le type de voisinage que tu prends pour les pixels).
Pour faire simple je supposerai que tu est à une dimension. La pente est donc une simple différence finie entre deux pixels successifs.

Tu extrais donc, à partir de données modélisées, ton profil de terrain avec une résolution "30m entre deux pixels".

Je suppose que si tu fais un lissage en pré-traitement, c'est pour éliminer les variations trop brusques de l'altitude (corrige-moi si je me trompe). Ce que tu appelles "bruit de fond" serait alors les hautes fréquences correspondant à ces variations brusques du relief -- c'est relatif vu que tu as une résolution de 30m.
Si c'est le cas, tu peux effectivement te faire une idée des "fréquences" correspondant à ces changements rapides de relief avec la TF. En faisant la TF du profil "altitude = f(distance_source)", les hautes fréquences correspondront au sauts d'altitudes, tandis que les basses fréquences à des évolutions plus lentes du relief.

Sur Matlab, c'est la fonction "fft" qui réalise ce travail (ou fft2 si tu travailles en 2D, attention alors à bien faire un "shift" des cadrans avec fftshift...).
"freqz" est une fonction qui retourne la réponse fréquentielle d'un filtre, ce n'est pas ce qu'il faut utiliser ici.
"fft" travaille sur une séquence de points (comme tous les traitements numériques !), et te renvoie une séquence de points.
fft(ton_signal,K) retourne une TF discrète de ton_signal sur K points (tu peux prendre K = length(ton_signal)).
En numérique, les fréquences sont "normalisées" entre 0 et 1, tu peux écrire :

Code: Tout sélectionner
X = fft(ton_signal,K)
freqs = linspace(0,1,K);
figure()
plot(freqs,abs(X)); %(tu peux aussi representer en log)
xlabel('Frequence');
ylabel('|X(k)|');


Petite remarque : dire qu' "on ne peut pas utiliser la TF parce que le signal n'est pas périodique" est archi-faux ! Si on ne travaillait qu'avec des signaux périodiques, on n'aurait même pas besoin de la TF. Après, selon les applications, faire une TF sur un signal "long" entier n'a pas forcément de sens, on fait plutôt des TF locales. Mais ce qui t'intéresse ici est le spectre de tout ton signal.

Pour revenir à ton problème, tu devrais voir que le lissage "coupe" les fréquence hautes.
Si L est ton paramètre de lissage, par exemple le nombre de points sur lequel tu fais une moyenne glissante sur le signal, alors plus L sera grand (moyennage grossier), plus tu coupes les hautes fréquences (je ne sais pas si tu es à l'aise avec les relations temps-fréquence, convolution-multiplication).


J'espère que je ne suis pas à côté de la plaque pour ton problème, n'hésite pas à ré-expliquer si c'est le cas.

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 11 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite