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

Signal Discussion :

Analyse harmonique d'un signal


Sujet :

Signal

  1. #1
    Membre du Club Avatar de IFREMER
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 61
    Points : 46
    Points
    46
    Par défaut Analyse harmonique d'un signal
    Salut à vous Matlabeurs et Matlabeuz !

    Alors voici mon interrogation du jours!!

    J'ai deux matrices dont je trace le graphique avec un simple plot...jusque là pas de soucis mais mon maitre de stage me demande de faire un analyse harmonique de se signal... rien de plus simple me diriez vous utilise le problème c'est que je n'ai pas l'équation de ma courbe

    Je vous joint ma courbe

    Merci de votre aide !

    EDIT:
    Oups dsl DUT j'avais oublier cette partie de forum merci
    Ifremer

    "Le savoir n'est pas difficile, seule sa mise en pratique l'est."

    MatLab 7.0.4.352 (R14) Service Pack 2
    Linux Ubuntu 9.04 « Jaunty Jackalope »

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Bonne chance pour trouver l'équation d'une telle courbe : )
    Pas besoin de l'équation (qui n'a en faite pas de sens numérique où tout est discrétisé), il te faut les valeurs que tu sembles posséder, c'est quand même plus simple.

    tu fais donc une fft directement sur tes valeurs (qui représente ta fonction donc) même si ici il semble évident que ta fréquence principal est l'année avec probablement quelques harmoniques saisonnières.. c'est quoi? un truc en fonction de la température, de l'ensoleillement ou bien de la géométrie axiale terrestre?

    lien fft matlab
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  3. #3
    Membre du Club Avatar de IFREMER
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 61
    Points : 46
    Points
    46
    Par défaut
    Cela correspond à un coefficient qui caractérise le taux de sédiment dans l'eau sur l'embouchure de l'amazone....
    Ifremer

    "Le savoir n'est pas difficile, seule sa mise en pratique l'est."

    MatLab 7.0.4.352 (R14) Service Pack 2
    Linux Ubuntu 9.04 « Jaunty Jackalope »

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Oui donc en fonction de l'érosion, donc de la saison des pluies, bon ok c'est pas saisonnier type climat tempéré mais bon, ne chipotons pas
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  5. #5
    Membre du Club Avatar de IFREMER
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 61
    Points : 46
    Points
    46
    Par défaut
    Normalement cela devrait être saisonnier car le taux de sédiment dépend bcp de la saison des pluis qu'il y a en amont de l'embouchure... enfin bref euh je viens d'appliquer FFT à mes valeurs euh.... comment dire... ben c'est que... j'y comprend rien.... quel idée il a eu se Fourrier quand mm.
    Ifremer

    "Le savoir n'est pas difficile, seule sa mise en pratique l'est."

    MatLab 7.0.4.352 (R14) Service Pack 2
    Linux Ubuntu 9.04 « Jaunty Jackalope »

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Tout le problème de la fft réside dans certaine normalisation numérique.

    il te faut certaines valeurs :

    -le nombre de points de ta courbe (un SIZE ou NUMEL devrait faire l'affaire) :
    nbr_points

    -Une fréquence d'échantillonnage choisis arbitrairement mais attention au théorème de Nyquist (pour ton cas je prendrais le jour) :
    freq_ech

    -Tes données brutes :
    data

    et c'est partie ! :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    NFFT = 2^nextpow2(nbr_points); 
    data_fft = fft(data,NFFT)/nbr_points;
    
    freq = freq_ech/2*linspace(0,1,NFFT/2+1);
    
    spectre_data = 2*abs(data_fft(1:NFFT/2+1))/4 ;
    
    plot(freq,spectre_data )
    Ca devrait marcher, le seul souci restant étant qu'il est nécessaire que freq et spectre_data soit de la même taille, une petite interpolation peut arranger cela avec INTERP1

    EDIT : attention j'ai édité, c'est bien sûr la fréquence (freq) qu'il faut ploter et non le temps...
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  7. #7
    Membre du Club Avatar de IFREMER
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 61
    Points : 46
    Points
    46
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    nbr_points =121; 
    freq_ech=0.0365; 
    %car pour moi 1 = 1 mois donc j'ai calculé le nombre jour sur lequel je travaillais soit 3286 que j'ai divisé par le nombre de mois 120
    data=p;
    NFFT = 2^nextpow2(nbr_points); 
    data_fft = fft(data,NFFT)/nbr_points;
    freq = freq_ech/2*linspace(0,1,NFFT/2+1);
    spectre_data = 2*abs(data_fft(1:NFFT/2+1))/4 ;
    plot(freq,spectre_data)
    Pour freq et spectre_data il y a pas de soucis elles sont de la mm taille
    Pourtant il m'affiche rien sniff pourquoi j'y comprend rien !!
    C'est peut être parce que mon point zéro à pour valeur NaN??
    Ifremer

    "Le savoir n'est pas difficile, seule sa mise en pratique l'est."

    MatLab 7.0.4.352 (R14) Service Pack 2
    Linux Ubuntu 9.04 « Jaunty Jackalope »

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Etrange...

    p c'est bien le vecteur de tes valeurs?

    As tu un message d'erreur?

    Mets figure avant plot
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  9. #9
    Membre du Club Avatar de IFREMER
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 61
    Points : 46
    Points
    46
    Par défaut
    p matrice de mes valeurs, elle est de format <1x121>
    Il m'affiche bien la fenêtre de graph mais pas de courbe dessus....
    Ifremer

    "Le savoir n'est pas difficile, seule sa mise en pratique l'est."

    MatLab 7.0.4.352 (R14) Service Pack 2
    Linux Ubuntu 9.04 « Jaunty Jackalope »

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Citation Envoyé par IFREMER Voir le message
    C'est peut être parce que mon point zéro à pour valeur NaN??
    Euh peut être, je sais pas, si tu n'en as qu'un seul, peux tu le changer pour tester (voire l'enlever)?

    Ps : ta fenetre de graphe est elle resté grise ou est elle blanche? si elle est blanche, ne vois tu pas un petit point dessus quand même?
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  11. #11
    Membre du Club Avatar de IFREMER
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 61
    Points : 46
    Points
    46
    Par défaut
    Apparement c'est cela car voici se que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >>p(1,1)
     
    ans =
     
     
       NaN
     
    >> p(1,1)=3;
     
    >>p(1,1)
     
    ans =
     
       3
    et maintenant il m'affiche une courbe mais c'est pas logique....

    EDIT : à voir la courbe c'est la fréquence d'échantillonage qui n'est pas bonne non?
    Alors j'ai changer, la fréquence d'échantillonage,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    nbr_points =121; 
    freq_ech=3281; 
    %Qui correspond au nombres de jour d'après matlab avec la fonction datenum sur lequel je fais mon analyse
    data=p;
    NFFT = 2^nextpow2(nbr_points); 
    data_fft = fft(data,NFFT)/nbr_points;
    freq = freq_ech/2*linspace(0,1,NFFT/2+1);
    spectre_data = 2*abs(data_fft(1:NFFT/2+1))/4 ;figure;
    plot(freq,spectre_data)
    Et voici le résultat...fft2
    Ifremer

    "Le savoir n'est pas difficile, seule sa mise en pratique l'est."

    MatLab 7.0.4.352 (R14) Service Pack 2
    Linux Ubuntu 9.04 « Jaunty Jackalope »

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    La forme semble bonne : un grand pic pour l'année, un plus petit pour les petits sauts qu'on voit, Je pencherais pour un problème d'unité..surement des Hz..
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  13. #13
    Membre du Club Avatar de IFREMER
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 61
    Points : 46
    Points
    46
    Par défaut
    Faudrait que je modifie la variable freq alors c'est ça?
    voici le contenue de la variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    freq
     
    freq =
     
       1.0e+03 *
     
      Columns 1 through 10 
     
             0    0.0285    0.0570    0.0855    0.1141    0.1426    0.1711    0.1996    0.2281    0.2566
     
      Columns 11 through 20 
     
        0.2852    0.3137    0.3422    0.3707    0.3992    0.4277    0.4562    0.4848    0.5133    0.5418
     
      Columns 21 through 30 
     
        0.5703    0.5988    0.6273    0.6559    0.6844    0.7129    0.7414    0.7699    0.7984    0.8270
     
      Columns 31 through 40 
     
        0.8555    0.8840    0.9125    0.9410    0.9695    0.9980    1.0266    1.0551    1.0836    1.1121
     
      Columns 41 through 50 
     
        1.1406    1.1691    1.1977    1.2262    1.2547    1.2832    1.3117    1.3402    1.3687    1.3973
     
      Columns 51 through 60 
     
        1.4258    1.4543    1.4828    1.5113    1.5398    1.5684    1.5969    1.6254    1.6539    1.6824
     
      Columns 61 through 65 
     
        1.7109    1.7395    1.7680    1.7965    1.8250
    Ifremer

    "Le savoir n'est pas difficile, seule sa mise en pratique l'est."

    MatLab 7.0.4.352 (R14) Service Pack 2
    Linux Ubuntu 9.04 « Jaunty Jackalope »

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Quand je dis un problème, c'est pas vraiment ça..en abcsisse ce sont des fréquences, c'est à dire l'inverse du temps (f = 1/T) donc ça va des basses fréquences (= temps long car 1/temp long = petit nombre) aux hautes fréquences (= temps courts car 1/temps court = grand nombre)

    Je bloque. Je ne vois pas, comme ça, comment en faire une belle courbe agréable et compréhensible.
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  15. #15
    Membre du Club Avatar de IFREMER
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 61
    Points : 46
    Points
    46
    Par défaut
    Merci bcp de toute l'aide que tu m'as apportée, je vais essayer de la retravailler.
    Ifremer

    "Le savoir n'est pas difficile, seule sa mise en pratique l'est."

    MatLab 7.0.4.352 (R14) Service Pack 2
    Linux Ubuntu 9.04 « Jaunty Jackalope »

  16. #16
    Membre du Club Avatar de IFREMER
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 61
    Points : 46
    Points
    46
    Par défaut
    Recoucou,

    après en avoir rêvé cette nuit j'ai trouvé pourquoi cela n'allait pas... la fréquence d'échantillonage est en jours or si je la mets en secondes... soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    a=120/(3281*24*3600)
     
    a =
     
       4.2331e-07
    Je tombe sur une fréquence de 3.638e-8 soit 318 jours ^^

    Merci bcp !!
    Ifremer

    "Le savoir n'est pas difficile, seule sa mise en pratique l'est."

    MatLab 7.0.4.352 (R14) Service Pack 2
    Linux Ubuntu 9.04 « Jaunty Jackalope »

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ABAQUS et analyse harmonique?
    Par membreComplexe12 dans le forum Simulation
    Réponses: 4
    Dernier message: 14/07/2010, 18h43
  2. [Débutant] Analyse spectrale d'un signal audio
    Par christs dans le forum Signal
    Réponses: 14
    Dernier message: 14/04/2010, 10h31
  3. Analyse spectrale d'un signal périodique
    Par espoir1976 dans le forum Signal
    Réponses: 1
    Dernier message: 06/04/2009, 13h30
  4. Détermination harmonique d'un signal
    Par ibnking dans le forum Octave
    Réponses: 12
    Dernier message: 05/01/2009, 15h11
  5. Réponses: 7
    Dernier message: 18/05/2008, 14h29

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