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 :

[hold] pour une boucle [for] de plot


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 [hold] pour une boucle [for] de plot
    Bonjour, j'aimerais tracer dans une seule figure plusieurs PLOT définis par une boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    n=21;
    couleurs=hsv(n);
    hold on
    for j=1:21
    plot(freq_plot_pas{j},v1_spect_pas{j},'color',couleurs(j,:));
    end
    hold off
    La code ci dessus me donne toujours 21 plots...

    Une idée?

    Merci

  2. #2
    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
    Je ne comprends pas très bien : ce n'est pas ce que tu veux ?

  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
    Non, en faite j'ai séparé le spectre d'un signal par tiers d'octave (pas divisé par la racine cubique de 2). Donc j'ai 21 plot représentant le spectre sur :

    5 000 Hz > 3 969 Hz
    3 969 Hz > 3 150 Hz
    3 150 Hz > 2 500 Hz
    etc.. jusqu'a 50 Hz

    j'aimerais tracé sur une seule figure tous ces plots afin de reconstituer le spectre initial mais avec une couleur différente par pas.

    Merci

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Juin 2009
    Messages : 53
    Par défaut
    D'après ce que j'ai compris, Newenda veut 21 plot sur une même figure, et son code lui renvoie 21 figures, c'est ça ?

    Peut-être faut-il plutôt mettre le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    n=21;
    couleurs=hsv(n);
    figure(1)
    for j=1:21
    hold on
    plot(freq_plot_pas{j},v1_spect_pas{j},'color',couleurs(j,:));
    hold off
    end

  5. #5
    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 ta réponse mais, non, j'ai un peu près essayé toutes les configurations de HOLD et rien n'arrete la boucle

  6. #6
    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
    Je ne comprends toujours pas désolée.

    Ce que j'ai compris :
    - tu veux une seule figure => on est OK ?
    - sur cette figure tu vas tracer 21 "segments" (1 sur x1 à x2 hz, le 2 de x2 à x3 hz ...) => OK ?

    Le code que tu as mis fait a priori cela si tu as les bonnes valeurs dans les données que tu présentes.

    Pour plus de compréhension peux-tu nous montrer :
    - Ce que tu obtiens
    - Ce que tu souhaites
    - A quoi ressemblent tes données freq_plot_pas et v1_spect_pas (dans MATLAB et non pas ce qu'elles représentent)


    PS : pourquoi parles-tu d'arrêter la boucle dans ton dernier message ?

  7. #7
    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
    Je ne comprends toujours pas désolée.

    Ce que j'ai compris :
    - tu veux une seule figure => on est OK ?
    - sur cette figure tu vas tracer 21 "segments" (1 sur x1 à x2 hz, le 2 de x2 à x3 hz ...) => OK ?
    OK

    Citation Envoyé par Caro-Line Voir le message
    - Ce que tu obtiens
    Voici les deux premiers plots :





    Citation Envoyé par Caro-Line Voir le message
    Ce que tu souhaites
    J'aimerais que tous ces plots se suivent dans une seule et même figure

    Citation Envoyé par Caro-Line Voir le message
    A quoi ressemblent tes données freq_plot_pas et v1_spect_pas (dans MATLAB et non pas ce qu'elles représentent)
    Bon alors là, y'a un problème, voici freq_plot_pas :
    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
    freq_plot_pas = 
     
      Columns 1 through 6
     
        [516x1 double]    [409x1 double]    [325x1 double]    [258x1 double]    [204x1 double]    [163x1 double]
     
      Columns 7 through 12
     
        [129x1 double]    [102x1 double]    [81x1 double]    [65x1 double]    [51x1 double]    [40x1 double]
     
      Columns 13 through 18
     
        [33x1 double]    [25x1 double]    [20x1 double]    [17x1 double]    [12x1 double]    [10x1 double]
     
      Columns 19 through 21
     
        [9x1 double]    [6x1 double]    [5x1 double]
    Le problème étant qu'il m'affiche cette variable même quand il y a un ';' après, j'ai même redémarré matlab...et il me l'affiche toujours...
    Le deuxième problème : en revanche quand j'enlève le ";" de v1_spect_pas, il ne m'affiche rien du tout...

    Citation Envoyé par Caro-Line Voir le message
    PS : pourquoi parles-tu d'arrêter la boucle dans ton dernier message ?
    Non je voulais dire arreter de ploter en boucle.

    Bon voici le code en entier :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
     
    %%%% LECUTURE DES DEUX VOIES
     
    fseek(fid,premiere,'bof');
    voie1 = fread(fid,n,'int16');
     
    fseek(fid,premiere+decalage,'bof');
    voie2 = fread(fid,n,'int16');
     
     
    %%%% SPECTRE 
     
    voie1_fft = fft(voie1,n);
    voie2_fft = fft(voie2,n);
     
    % normalisation
    voie1_fft = abs(voie1_fft)/n ;
    voie2_fft = abs(voie2_fft)/n ;
     
    freq_ech = 10000;
    f=(1:n-1)/n*freq_ech;
     
    freq_plot = f(1:n/2)';
    v1_spect = voie1_fft(1:n/2)/2 ;
    v2_spect = voie2_fft(1:n/2)/2;
     
    bande_freq=[] ;
    bande_freq(1)=4999 ;
    for i=2:22
        bande_freq(i) = bande_freq(i-1)/(2^(1/3));
    end
     
    nc=21;
     
    for j = 1:nc
    freq_plot_pas{j} = freq_plot(freq_plot>bande_freq(i+1) & freq_plot<=bande_freq(i));
    v1_spect_pas{j} = v1_spect(freq_plot>bande_freq(i+1) & freq_plot<=bande_freq(i));
    end
     
    couleurs=hsv(nc);
     
    for j=1:nc
        hold on
    plot(freq_plot_pas{j},v1_spect_pas{j},'color',couleurs(j,:));
    hold off
    end
    Merci

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

Discussions similaires

  1. Syntaxe pour une boucle for sur des combobox
    Par Tifriis dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/10/2010, 13h52
  2. Utiliser les noms de colonne pour une boucle for
    Par RémiCA33 dans le forum R
    Réponses: 2
    Dernier message: 01/07/2010, 09h52
  3. Réponses: 5
    Dernier message: 05/02/2010, 19h04
  4. création d'une boucle for pour interrogation requête sql
    Par philder62 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/12/2007, 15h14
  5. utiliser une valeur float pour une boucle for
    Par didi59650 dans le forum Débuter
    Réponses: 6
    Dernier message: 18/04/2006, 17h32

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