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

MATLAB Discussion :

donnees caracteristiques d'un pic de diffraction


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut donnees caracteristiques d'un pic de diffraction
    Bonjour,
    Je travaille sur des pics de diffraction, je prend leur FFT...ce qui me donne des pics egalement.
    Maintenant j'aimerais ecrire un script pour mesurer la valeur maximale de ma FFT et sa position en abscisse, la largeur a mi-hauteur, la largeur au dixieme de la hauteur et peu etre d'autre largeur et donnees caracteristiques...
    Je vois pas trop comment mis prendre:

    deja pour determiner le maximum, je dois peu etre pouvoir utiliser la fonction max?
    Apres pour retourner la valeur de l'abscisse corresponde, j'arrive pas vraiment a trouver une maniere simple et rapide.

    Par contre pour determiner les largeur, je n'est pas encore trouve si il existe des fonction predefinit dans matlab.


    ps: comment fait on pour augmenter la largeur des traits de mes plots de facon general sur toutes mes figures?

  2. #2
    Membre éprouvé
    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
    Par défaut
    Citation Envoyé par dani_dan Voir le message
    Bonjour,
    Je travaille sur des pics de diffraction, je prend leur FFT...ce qui me donne des pics egalement.
    Maintenant j'aimerais ecrire un script pour mesurer la valeur maximale de ma FFT et sa position en abscisse, la largeur a mi-hauteur, la largeur au dixieme de la hauteur et peu etre d'autre largeur et donnees caracteristiques...
    Je vois pas trop comment mis prendre:

    deja pour determiner le maximum, je dois peu etre pouvoir utiliser la fonction max?
    Oui bien sur !

    Citation Envoyé par dani_dan Voir le message
    Apres pour retourner la valeur de l'abscisse corresponde, j'arrive pas vraiment a trouver une maniere simple et rapide.
    Normalement lors de ton plot, tes deux matrices sont de même taille. Donc trouve l'indice du max avec FIND :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    indice_max = find(FFT==max(FFT))
    et ensuite récupère l'abscisse avec cet indice

    Citation Envoyé par dani_dan Voir le message
    ps: comment fait on pour augmenter la largeur des traits de mes plots de facon general sur toutes mes figures?
    Utilises LineWidth (voir >>doc plot pour plus d'infos)

  3. #3
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Citation Envoyé par dani_dan Voir le message
    deja pour determiner le maximum, je dois peu etre pouvoir utiliser la fonction max?
    Ça parait pas mal
    Et si tu regardes l'aide tu verras que tu peux avoir l'indice en 2ème argument, ça peut servir.

    Après il y a peut-être des choses plus adaptées, voir ce sujet : Détection de pics

    [EDIT]@Newenda : non même pas besoin de FIND ici c'est ce que je dis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [dummy,indice_max]=max(FFT)

  4. #4
    Membre éprouvé
    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
    Par défaut
    Citation Envoyé par Caro-Line Voir le message

    [EDIT]@Newenda : non même pas besoin de FIND ici c'est ce que je dis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [dummy,indice_max]=max(FFT)
    Ha oui tient, pratique.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut
    Super, merci pour votre aide, j'obtiens ce qu'il me faut pour le max et en abscisse.
    Par ailleurs je suis alle voir le topic que tu m'as mis en lien Caro-line. C'est pas vraiment ce que je souhaite obtenir (si j'ai bien compris).
    Maintenant ce qu'il me faudrait c'est calculer les largeurs a mis hauteur de mes FFT(puis d'autres largeur comme 1/10, 1/30 ...).

    Voir ce que j'obtiens typiquement sur l'image attachée

    J'ai bien une idee mais c'est un peu brutal et pas assez precis!
    Travailler sur les indices de mes vecteurs et soustraire leur valeurs en abscisse(les FFT de mes pics sont symetriques par rapport au max)..
    L'ideal serait de prendre les largeur a mis hauteur et non pas en raisonnant sur les indices de mes vecteurs car sinon je n'est pas de point de comparaison entre mes differentes series, car pour chaque series les 2 prochains points en dessous de mon max peuvent representer la 1/2 hauteur comme la 1/(2+0.1)....
    Images attachées Images attachées  

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut
    Peu etre une autre idee, j'ai cas approcher ma courbe(FFT) avec un polynome, apres je prend dummy/2 et je resoud en trouvant les 2 abscisse correspondant.
    Si vous avez une meilleure idee, je suis preneur

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut
    Du coup je fais une interpolation par un polynome d'ordre n.
    j'ai donc y= a0 +a1*x^1+....+an*x^n.
    quand j'ai une valeur y (typiquement y=dummy/2) fixe et que je cherche les solutions en x, apriori faut que je me serve de solve.
    Pblm: j'ai pas la Symbolic Math Toolbox
    Comment puis je faire?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut
    j'avais dis cela auparavant:
    J'ai bien une idee mais c'est un peu brutal et pas assez precis!
    Travailler sur les indices de mes vecteurs et soustraire leur valeurs en abscisse(les FFT de mes pics sont symetriques par rapport au max)..
    L'ideal serait de prendre les largeur a mis hauteur et non pas en raisonnant sur les indices de mes vecteurs car sinon je n'est pas de point de comparaison entre mes differentes series, car pour chaque series les 2 prochains points en dessous de mon max peuvent representer la 1/2 hauteur comme la 1/(2+0.1)....
    Cela n'a vraiment pas d'interet car le pas est constant, donc j'obtiens toujours les memes valeurs pour les memes indices de points symetriques de mes differentes datas. Avec le recul, biensur!

    L'interpolation par un polynome reste la seule solution a mes yeux (en prenant plus de points dans ma FFT que sur le graphe ci dessus, car sinon ;les resultats sont biaises pour l'interpolation), mais reste le probleme de resoudre l'equation precedente sans solve...

  9. #9
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Citation Envoyé par dani_dan Voir le message
    L'interpolation par un polynome reste la seule solution a mes yeux
    Je vois mal comment un polynôme pourrait interpoler tes valeurs de façon robuste... si ce n'est en montant l'ordre du polynôme... ce qui entrainera inévitablement d'autres problèmes...

    Je pense plutôt que tu devrais utiliser une fonction polynomiale par morceau (genre spline, pchip)

    As-tu essayé avec l'outil Basic Fitting (Menu Tools > Basic Fitting de la Figure courante) ?

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut
    Bien c'est justement le probleme que j'ai la robustesse de l'interpolation, je pense pouvoir l'ameliorer si je passe de 512 pts a 512*2^n pour ma FFT, pour l'instant n=3 me semble pas mal.
    Mais j'ai pas tenter l'interpolation dessus.
    Pour l'instant le serveur ou je bosse est en maintenance (), donc je verrai donc cela demain, merci des tuyaux
    bonne soiree a tous

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut
    J'arrive a une bonne interpolation avec spline de mes fft.
    Par contre, cette interpolation me permet elle de determiner la largeur a mis hauteur de ma fft?

    exemple
    y=ordonnee de ma fft (abs(fft)) (tout est shift pour les fft)
    x= abscisse fft
    ymax= maximum de ma fft

    je cherche les 2 valeurs de x pour laquelle y=ymax/2;
    Ce qui revient a resoudre ymax/2= interpolation(abs(fft))

    je comprend pas trop comment fonctionne spline (d'apres ce que j'ai compris, interpolation par morceau par des polynome, donc je n'ai pas de polynome uniquement sur mon domaine totale mais j'en ai autant que j'ai de morceau et ils sont relatifs respectivement a leur portion).
    A partir de la je vois pas trop comment je pourrais recuperer les valeurs de x qui m'interessent?

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

Discussions similaires

  1. taille maximale d'une base de donnée paradox
    Par Anonymous dans le forum Paradox
    Réponses: 5
    Dernier message: 14/02/2004, 17h39
  2. [VB6] [Datareport] Caracteristiques et utilisation
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 17/05/2003, 16h52
  3. [VBA-E] [Excel] Filtrer le donnees d'une sheet
    Par donia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/09/2002, 10h55
  4. [VB6] [Access] Compacter une base de donnée
    Par mdoyer dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 24/09/2002, 11h33
  5. [VB6] [ODBC] Référencer une base de données avec vb
    Par af.balog dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 13/09/2002, 09h51

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