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

Interfaces Graphiques Discussion :

Afficher Pwelch dans un graph


Sujet :

Interfaces Graphiques

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 38
    Points : 24
    Points
    24
    Par défaut Afficher Pwelch dans un graph
    Bonjour,

    Je rencontre un petit problème avec la fonction, pwelch, cette fonction détermine la dsp, créer une figure et plot le résultat.

    Mon problème est que je suis entrain entrain une petite interface ac guide.

    Pour les autres graphiques il n'y a pas de problèmes, mais là je ne sais pas comment faire pour que ma fonction pwelch s'affiche dans "l'axes" que je veux...

    Quelqu'un a une idée ?

    Merci
    Jonathan

  2. #2
    Expert éminent sénior
    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
    Points : 14 830
    Points
    14 830
    Par défaut
    Comme a priori on ne peut définir l'axe de destination dans la fonction PWELCH, il doit suffire de faire en sorte que l'axe de destination soit mis en axe courant avant l'appel à cette fonction.
    Tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    axes(handle de l'axe souhaité);
    pwelch(...);
    Règles du Forum

    Adepte de la maïeutique

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    C'est ce que j'ai fais mais ça ne marchais pas.

    Enfin ca marche maintenant que je test chez moi avec une version assez récente de Matlab

    Je vais réessayer mais j'ai l'impression qu'avec la version du taf (7.0..) ca ne marchait pas. Je confirmerai...

  4. #4
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Bon malheuresement je confirme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    axes(handle de l'axe souhaité);
    pwelch(...);
    Ceci ne fonctionne pas avec la version R14 a mon boulot...
    Quelqu'un aurait eventuellement une autre solution ? (A part demander une nouvelle version de Matlab )

  5. #5
    Expert éminent sénior
    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
    Points : 14 830
    Points
    14 830
    Par défaut
    Citation Envoyé par Kichott Voir le message
    Ceci ne fonctionne pas avec la version R14 a mon boulot...
    Etrange...
    Quel est le comportement exactement ?
    Le graphe se fait obligatoirement dans un nouvel objet axes ou alors il se met au hasard ?

    Je n'ai pas cette fonction sur ma version mais est-elle éditable ?
    Peut-être y a-t-il quelques lignes à modifier dedans pour améliorer le comportement.

    Hum, ça doit venir de là :
    Version 6.3 (R14SP2) Signal Processing Toolbox Software
    => Spectral Analysis Changes

    Pas sur que tu puisses faire quelque chose (à part donc changer de version)
    Règles du Forum

    Adepte de la maïeutique

  6. #6
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Pourquoi ne pas récupérer les valeurs de PWELCH et les tracer ensuite à l'aide d'un PLOT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    % Calcul avec PWELCH
    [ydata, xdata] = pwelch(...);
     
    % Tracé des données
    plot(axe_handles, xdata, ydata);
    A tester...

    Bonne journée,
    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  7. #7
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par Caro-Line Voir le message
    Etrange...
    Quel est le comportement exactement ?
    Le graphe se fait obligatoirement dans un nouvel objet axes ou alors il se met au hasard ?

    Je n'ai pas cette fonction sur ma version mais est-elle éditable ?
    Peut-être y a-t-il quelques lignes à modifier dedans pour améliorer le comportement.

    Hum, ça doit venir de là :
    Version 6.3 (R14SP2) Signal Processing Toolbox Software
    => Spectral Analysis Changes

    Pas sur que tu puisses faire quelque chose (à part donc changer de version)
    C'est assez bizarre, il se met dans un axes que j'ai dans mon gui mais juste le titre la courbe ne s'affiche pas.

    Duf je crois avoir déjà essayer ça mais je réessayerai Lundi...

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 52 880
    Points
    52 880
    Par défaut
    Citation Envoyé par Kichott Voir le message
    Duf je crois avoir déjà essayer ça mais je réessayerai Lundi...
    Cela marche sous MATLAB 6.5.1 car dans PWELCH il y a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if nargout==0, % Plot when no output arguments are specified      
       yscale = 'db';
       titlestring = 'Welch PSD Estimate';
       psdplot(Pxx,w,units,yscale,titlestring);    
    elseif nargout == 1,
       varargout = {Pxx};
    elseif nargout == 2,
    	varargout = {Pxx,w};
    end
    Donc si tu mets des arguments de sortie, ke tracé n'apparait pas.

    Le problème vient de la fonction PSDPLOT qui contient la ligne suivante :
    Tu fais donc une copie de PSDPLOT que tu enregistres sous MYPSDPLOT.M

    Et dans MYPSDPLOT.M, tu supprimes la ligne ci-dessus.

    Ensuite tu fais comme ceci pour tracé dans l'axe courant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Fs = 1000;   t = 0:1/Fs:.296;
    x = cos(2*pi*t*200)+randn(size(t));
    [Pxx,W] = pwelch(x,[],[],[],Fs,'twosided');
     
    mypsdplot(Pxx,W,'Hz','db','Welch PSD Estimate');
    ou pour tracer dans un axe en particulier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Fs = 1000;   t = 0:1/Fs:.296;
    x = cos(2*pi*t*200)+randn(size(t));
    [Pxx,W] = pwelch(x,[],[],[],Fs,'twosided');
     
    axes(...)
    mypsdplot(Pxx,W,'Hz','db','Welch PSD Estimate');
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  9. #9
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    % Calcul avec PWELCH
    [ydata, xdata] = pwelch(...);
     
    % Tracé des données
    plot(axe_handles, xdata, ydata);
    En effet cela trace quelque chose mais ce n'est pas le bon résultat.

    Moi dans pwelch, j'ai ça :

    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
    function varargout = pwelch(x,varargin)
     
    error(nargchk(1,7,nargin));
    error(nargoutchk(0,3,nargout));
     
    esttype = 'psd';
    if nargin > 1 & isstr(varargin{end}) & strcmpi(varargin{end},'ms'),
        esttype = 'ms';
        varargin(end)=[];
    end
     
    % Possible outputs are:
    %       Plot
    %       Pxx
    %       Pxx, freq
    [varargout{1:nargout}] = welch(x,esttype,varargin{:});
    Je ne pense pas que j'ai les données x et y en sortie.

  10. #10
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Fs = 1000;   t = 0:1/Fs:.296;
    x = cos(2*pi*t*200)+randn(size(t));
    [Pxx,W] = pwelch(x,[],[],[],Fs,'twosided');
     
    axes(...)
    mypsdplot(Pxx,W,'Hz','db','Welch PSD Estimate');
    Dut j'ai aussi essayé ça, il y a bien un trace qui s'affiche mais ce n'est pas le bon résultat non plus.

  11. #11
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Bon comme je trouvais pas de solution, j'ai finalement j'réussi a changer de version au boulot, donc je n'ai plus ce problème.

Discussions similaires

  1. [Vxi3] Afficher les 30 derniers jours dans un graph
    Par Marshall06 dans le forum Deski
    Réponses: 4
    Dernier message: 23/03/2011, 16h16
  2. afficher une matrice dans un graphe 3D
    Par fcboumi13 dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 12/06/2009, 19h08
  3. Réponses: 2
    Dernier message: 15/03/2009, 22h52
  4. afficher dans un graphe 2 vecteur
    Par hanane78 dans le forum MATLAB
    Réponses: 2
    Dernier message: 05/08/2007, 20h41

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