IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Traitement du signal Discussion :

Transformée de fourrier sur des données de terrain


Sujet :

Traitement du signal

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Doctorant
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Transformée de fourrier sur des données de terrain
    Bonjour,

    je suis doctorant et je travaille sur les profils de rivières dans le Jura. Le principe est de tracer plusieurs graphiques et d'étudier le comportement des rivières.

    J'aimerais effectuer une transformée de fourrier sur certains de mes graphiques:

    ces graphiques sont du type:

    Pente=f(distance à la source)
    Pente=f(aire drainée)

    J'obtiens ces graphiques en utilisant des script matlab. Ces script font les calculs à partir de MNT dont j'exporte des paramètres de calculs depuis Arcgis. Mon problème est que je ne sais pas du tout comment faire une TF sur ces graphes, visiblement la fonction TF nécessite d'avoir l'expression algébrique du graphique (fft(x) avec x=ax+b par exemple). le problème est que je ne sais pas comment récupérer l'expression algébrique de mon signal. Ou peut-être existe-t-il une autre façon d'effectuer la TF?

    En fait il me faudrait une TF discrète mais comment faire?

    Please help me!!!

  2. #2
    Membre habitué Avatar de sologne
    Homme Profil pro
    Chargé de missions
    Inscrit en
    Mai 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Chargé de missions
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2011
    Messages : 73
    Points : 125
    Points
    125
    Par défaut
    Bonjour voici un lien qui devrait t'aider pour faire
    une TF discrète

    Bon courage

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Doctorant
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    en fait je cherche comment faire une TF sur une série de points dans Matlab.

  4. #4
    Membre habitué Avatar de sologne
    Homme Profil pro
    Chargé de missions
    Inscrit en
    Mai 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Chargé de missions
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2011
    Messages : 73
    Points : 125
    Points
    125
    Par défaut
    Bonjour,

    Pour faire cela dans Matlab, tu peux utiliser Wavelab qui est une boite à outil gratuite pour Matlab.
    Voici un pdf qui t'explice comment faire : Ici

    Bon courage

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Doctorant
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour à tous

    j'ai avancé dans mon travail, j'arrive maintenant à réaliser une fft sur ma série de données, seulement je ne suis pas sûr de représenter ma fft correctement en graphique, mon signal ne me montre aucun pic et j'ai une valeur incroyablement haute en bordure de signal.

    Je vais donc expliquer plus clairement ce que je fais (attention ça peut être long..):

    Tout d'abord je possède un MNT avec une résolution de 30m (raster possédant une valeur d'altitude par pixel avec des pixel de 30m de cotés).

    En combinant ceci à un autre raster répertoriant les pixels où passe une rivière, j'extrait une matrice référençant les altitudes de chaque pixel de ma rivière, ainsi que leur position géographique (en mètres).
    Je peux ainsi tracer un "profil de rivière" qui consiste à tracer l'altitude en fonction de la distance depuis la source de ma rivière.

    Ceci induit un premier soucis, ma fréquence d'échantillonnage exprimée en distance n'est pas fixe car la valeur de chaque pixel est affilié au centre de celui ci, donc selon si la suite de pixels le long de ma rivière se suivent en ligne ou en diagonale, la distance entre leur centre successif change (j'espère être clair).

    Ensuite je calcul mes pentes:
    Code MATLAB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for a = 1:length(pelev)-1
        pslope(a) = (pelev(a+1)-pelev(a))/(dfd(a)-dfd(a+1));
    end
    for a = pmax
        pslope(a) = (pelev(a)-pelev(a-1))/(dfd(a-1)-dfd(a));
    end
    pslope = abs(pslope);
    avec pelev= mes altitudes de chaque pixel de ma rivère
    pmax= length(dfd)
    dfd= la distance depuis l'embouchure de ma rivière
    c-a-d que fliplr(dfd)= dfm= distance depuis la source

    Je réalise donc ma fft:
    Code MATLAB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    reshape(pslope,pmax,1)
     
    fft(ans,length(dfd))
    TFD=ans
    save TFD

    J'ai maintenant besoin de représenter mes amplitudes en fonctions de mes fréquences... je crois -_-...

    Donc je calcul mes fréquences en calculant ma distance entre deux points, et ce pour chaque point. Je calcul ensuite la distance moyenne entre mes points afin d'obtenir une fréquence d'échantillonnage moyenne.
    Code MATLAB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    d_tot = 0
    n = length(dfm)
    for a = 1:n-1
       d_sts(a) = dfm(a+1)-dfm(a);
       d_tot = d_tot + d_sts(a)
    end
    Fs = d_tot / n

    Pour calculer la fréquence proprement dit j'avoue ne pas être sûr de moi du tout... j'ai testé plusieurs formules issues de diverses discussions fofo ect...
    Voici 5 façon différente de calculer ma fréquence:
    Code MATLAB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    f1=[-n/2: (n-1)/2]*Fs/n
    f2 = 0 : Fs / n : Fs - 1 / n
    f3=Fs/n.*(0:(n)-1)
    f4=(0:n/2)/(n/2)*Fs/2
    f5=(0:n-1)/(n-1)*Fs

    J'ai également testé la fonction freqz, mais je ne sais pas si elle est applicable dans ce cas...

    Ensuite je plot mon résultat:
    Code MATLAB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    figure(5)
    orient tall
    hold off
    plot(f,abs(TFD))
    hold on

    Pour f4 je ne représente qu'un moitié de la transformée:
    Code MATLAB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    plot(f4,abs(TFD(1:n/2+1)))

    Voila, en espérant avoir été clair.

    Mon soucis est que, n'observant pas de pic en particulier sur mes données, je me dit que je dois me planter quelque par dans mes manip avec la TF mais où?

    C'est à ce moment que je vous demande votre aide svp.

    PS: je suis newbie en matlab, les codes que vous venez de lire j'ai appris à les faire cette dernière semaine...

    En espérant vraiment que vous pourrez m'aider à m'en sortir...

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Doctorant
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bon,
    pas de réponse...
    J'ai opté pour la fonction freeqz et ça me donne:
    - Spectres des données sans lissage
    Nom : Unsmooth_30_0-45_0_0_0_150_12-192_0-5_10_10.png
Affichages : 110
Taille : 98,1 Ko
    - Spectres après un traitement A
    Nom : 30_0-45_0_0_1_210_12-192_0-5_10_10.png
Affichages : 107
Taille : 95,7 Ko
    - Spectres après un traitement B
    Nom : 30_0-45_1_0_0_150_12-192_0-5_10_10.png
Affichages : 96
Taille : 109,4 Ko

    J'aurais besoin de gens ayant l'habitude de traiter du signal pour m'aider à interpréter ces spectres. Je coince un peu et ne suis pas vraiment familier des TF.

    Si ça vous parle...

    Merci d'avance

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Doctorant
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Rebonjour,

    j'essai une dernière fois sur votre forum en espérant avoir une ou deux réponse.

    Question très bête dont je soupçonne la réponse (et ça m’effraie un peu):

    - La fonction freqz de matlab reviens à faire une fft?

    Ce qui veut dire que faire freqz(fft(x)) n'aurait aucun sens....

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    Pour les question "techniques" sur Matlab, tu aurais certainement bien plus de réponses en postant dans la section Matlab du Forum.

    Pour ce qui est de ta méthode, j'ai de gros doutes. Une FFT ne s'applique que sur un jeu de points équidistants et périodiques (le "dernier" est voisin du "premier"; comme les cercles de longitude).
    Mais à lire ton explication sur le calcul des pentes "pslope", aucune de ces conditions n'est remplie...

  9. #9
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Une FFT ne s'applique que sur un jeu de points équidistants et périodiques (le "dernier" est voisin du "premier"; comme les cercles de longitude).
    Etant sur une fonction strictement monotone (décroissante d'amont en aval), rien n'empêche d'extrapoler les altitudes pour avoir un pas régulier.

    Sinon, je serais surpris qu'on puisse obtenir des résultats à partir d'une transformée de Fourrier, compte tenu du fait que profil du lit de la rivière dépend de nombreux paramètres difficiles à modéliser comme :
    - nature des couches géologiques traversées,
    - inclinaison de ces couches,
    - paléoclimatologie,
    - modifications d'origine humaine (canaux, barrages, ...)
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    Citation Envoyé par Graffito Voir le message
    Etant sur une fonction strictement monotone (décroissante d'amont en aval), rien n'empêche d'extrapoler les altitudes pour avoir un pas régulier.
    Oui, mais il reste néanmoins ensuite l'épineux problème de la "périodicité implicite" (l'aval d'une rivière est rarement à la même altitude que l'amont).

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Doctorant
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour à tous,

    Merci à ceux qui m'ont répondu, il semblerait effectivement 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

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    Citation Envoyé par Mikalab Voir le message
    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.
    Quel lissage? Pour quoi faire ? Quel "bruit" ?
    Sauf erreur de ma part, il n'en était pas vraiment question jusqu'ici.
    Tu devrais clarifier ce que tu cherches à faire (éventuellement ouvrir un nouveau fil ?).

Discussions similaires

  1. Réponses: 16
    Dernier message: 14/04/2006, 18h38
  2. Parsing XML gestion DB I/O sur des données de type CLOB
    Par stchitembo dans le forum Oracle
    Réponses: 5
    Dernier message: 22/03/2006, 11h14
  3. Réponses: 12
    Dernier message: 02/01/2006, 22h13
  4. Réponses: 5
    Dernier message: 13/07/2005, 10h03
  5. Travailler sur des données qui doivent être triées
    Par haypo dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 19/07/2003, 17h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo