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 :

Plot vecteurs 2 à 2


Sujet :

MATLAB

  1. #1
    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 Plot vecteurs 2 à 2
    Bonjour,

    Pour une étude de signaux, j'ai plusieurs vecteurs correspondant à une caractéristique du signal (puissance, max, dispersion, energie spectrale etc...)

    J'aimerais ploter toutes les caractéristiques deux à deux, c'est à dire :
    puissance vs max
    puissance vs dispersion
    puissance vs energie spectrale
    max vs dispersion
    max vs energie spectrale
    dispersion vs energie spectrale
    ETC..
    En tout, j'ai 12 caractéristique, peut être bientôt plus, donc j'aimerais savoir si il existait une petite commande ou routine pour faire ça ?

    ---------------------------------
    Question bonus (sujet venant de mon post précédent) :

    La commande ci dessous permet de tracer mes représentations d'une caractéristique par rapport à l'autre en donnant à chaque groupe une couleur
    (groupé par nature du signal : bruit, bon signal, signal court, signal long etc..)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    puissance=[2 5 4 6 2 7 6 5 5 7];
    max = [5 3 6 8 4 2 6 9 1 4];
     
    type = {'bruit' 'bruit' 'bon_signal' 'bruit' 'signal court' 'bon_signal' 'signal court' 'signal long' 'bruit' 'bruit'};
     
    [pasbesoin,a,b] = unique(g);
     
    figure
     
    map = [1 0 0 ; 0 0 1 ; 0 1 0 ; 1 1 0];
    colormap(map)
     
    scatter(puissance,max,[],b)
    Je ne vois pas du tout comment implémenter une légende (dépendante de la nature du signal : 'type') dessus.

    Merci

  2. #2
    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 : 41
    Localisation : France

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

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

    Comment sont stockés tes vecteurs, s'agit-il de variables séparées (surement je me doute). Dans ce cas, pourquoi ne pas les regrouper dans une même matrice et définir une autre matrice pour les courbes à tracer, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    % Group all vectors in one matrix
    data = [puissance, max, dispersion, ...];
     
    % Define curves to plot
    curves = [1, 2; 1, 3; 2, 3; ...];
     
    % Loop on curves
    for i_curve = 1:size(curves,1)
        plot(data(:,curves(i_curve,1), data(:,curves(i_curve,2));
    end
    Après à voir si ca correspond à ce que tu souhaites...

    Pour la question bonus, un simple:
    Ne correspond pas à ce que tu veux faire?

    Bon courage,
    Duf

  3. #3
    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
    Merci pour la réponse à la 1ere question, je vai voir ça !

    Pour la question bonus, j'ai vraiment tout essayé et ce que tu me proposes également :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    puissance=[2 5 4 6 2 7 6 5 5 7];
    max = [5 3 6 8 4 2 6 9 1 4];
    type = {'bruit' 'bruit' 'bon_signal' 'bruit' 'signal court' 'bon_signal' 'signal court' 'signal long' 'bruit' 'bruit'};
    [pasbesoin,a,b] = unique(type);
    figure
    map = [1 0 0 ; 0 0 1 ; 0 1 0 ; 1 1 0];
    colormap(map)
    scatter(puissance,max,[],b) ;
    legend(type)
    me retourne qu'une seule légende :



    avec ce warning :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Warning: Ignoring extra legend entries.
    > In legend at 239
    Ce qui est un peu incompréhensible, c'est que dans l'aide scatter il n'y a rien sur les légendes, aucun exemple n'est légendé... ce qui fait perdre tout l'intérêt d'une telle fonction...

  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
    ok, en fouillant je suis tombé sur la fonction GSCATTER ... plus simple !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    puissance=[2 5 4 6 2 7 6 5 5 7];
    max = [5 3 6 8 4 2 6 9 1 4];
    type = {'bruit'; 'bruit' ;'bonsignal'; 'bruit'; 'signalcourt' ;'bonsignal' ;'signalcourt' ;'signallong' ;'bruit' ;'bruit'};
    gscatter(puissance,max,type,'rbkg','.+*s')




    Merci pour l'aide

  5. #5
    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 Newenda Voir le message
    ok, en fouillant je suis tombé sur la fonction GSCATTER ... plus simple !
    Cette solution risque vite d'être limitée si le nombre de groupe est supérieur au nombre de couleurs disponibles par défaut (8)

    Voici une solution plus flexible :

    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
    puissance=[2 5 4 6 2 7 6 5 5 7];
    max = [5 3 6 8 4 2 6 9 1 4];
    typ = {'bruit' 'bruit' 'bon_signal' 'bruit' 'signal court' 'bon_signal' 'signal court' 'signal long' 'bruit' 'bruit'};
     
    [utyp,a,b] = unique(typ);
     
    figure
    map = hsv(numel(utyp));
    colormap(map)
     
    s = scatter(puissance,max,[],b);
     
    hold on
     
    for n=1:numel(utyp)
        p(n) = plot(nan,nan,'color',map(n,:));
    end
    set(p,'marker',get(s,'marker'),'linestyle','none');
     
    legend(p,utyp,'interpreter','none')

  6. #6
    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
    Oui c'est joliment fait, mais je ne vois pas trop comment dans ce cas, peut on avoir un contrôle sur les légendes. C'est important car en plus de faire ces groupes, certains groupes sont proches caractéristiquement (comme Signal et signal_court ou long par exemple) et j'aimerais qu'ils soient en vert avec des formes différentes ou bien avec différentes nuances de vert..

    Merci

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

Discussions similaires

  1. [Débutant] [plot] Tracé d'un vecteur
    Par arwin dans le forum MATLAB
    Réponses: 2
    Dernier message: 23/09/2012, 19h52
  2. plot de gros vecteurs
    Par jcanivet dans le forum MATLAB
    Réponses: 10
    Dernier message: 15/03/2012, 13h57
  3. Générer un Graph Plot, longueur de vecteur
    Par 1ma91nat10n dans le forum MATLAB
    Réponses: 3
    Dernier message: 11/12/2011, 18h16
  4. [plot] Valeurs positives d'un vecteur seulement
    Par improcess dans le forum MATLAB
    Réponses: 4
    Dernier message: 04/12/2011, 13h52
  5. Plot d'un vecteur
    Par johannj dans le forum MATLAB
    Réponses: 6
    Dernier message: 03/12/2009, 11h23

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