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 :

Plot avec boucle


Sujet :

Signal

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Points : 44
    Points
    44
    Par défaut Plot avec boucle
    Salut chers developpeurs!
    J'aimerais faire un plot avec une boucle.

    Voici un code que j'ai essayé de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    in = stereo(1:N*31,1);
    out = stereo(1:N*31,2);
    ir = xcorr(in,out)/length(in); figure, plot(ir); grid on;
    Là j'ai un signal - stereo - à deux colonnes que j'ai scindé. "Stereo" en lui est un signal provenant des MLS (dans le code le MLS à une longeur de 31).
    J'aimerais á chaque fois incremeter le "N" et "ploter" le "ir". à chaque fois que je plote le "ir", le nombre de N doit y être porté (sur la figure), par exemple "2 x 31", ...

    Comment dois-je m'y prendre? Quelqu'un a-t-il déja eu à se confronter à ce genre de probleme?

    Merci d'avance

  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 828
    Points
    14 828
    Par défaut
    Pour pouvoir faire plusieurs tracés il va te falloir utiliser la commande :
    Pour l'affichage du N je pense que tu dois pouvoir utiliser la commande LEGEND.
    Il n'y a plus qu'à faire ta boucle FOR.

  3. #3
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Points : 44
    Points
    44
    Par défaut
    Salut, Caro-Line!
    Je pense que la commande "hold on" sert à tracer sur la même figure. J'aimerais tracer sur des figure differentes, le nombre de figure dependant du nombre de fois que j'incremente.
    Serait t'il possible de me donner un exemple-code de ce que tu dis?

    Merci

  4. #4
    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 828
    Points
    14 828
    Par défaut
    Citation Envoyé par merlinerick Voir le message
    Je pense que la commande "hold on" sert à tracer sur la même figure. J'aimerais tracer sur des figure differentes, le nombre de figure dependant du nombre de fois que j'incremente.
    Ah OK je n'avais pas compris, au temps pour moi.

    Pour l'exemple, je ne connais pas ton niveau, qu'est-ce qui te bloque ?
    Essaye déjà juste de rajouter une boucle avec N comme compteur.

  5. #5
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Points : 44
    Points
    44
    Par défaut
    Je pense que je me prends beaucoup la tête pour les petite choses. Tellement le projet que j'ai est difficile que même formé une boucle me depasse.
    En fait je l'ai resolu entre temps

    Merci Caro-Line

    Merlinerick

  6. #6
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Caro-Line Voir le message
    Ah OK je n'avais pas compris, au temps pour moi.

    Pour l'exemple, je ne connais pas ton niveau, qu'est-ce qui te bloque ?
    Essaye déjà juste de rajouter une boucle avec N comme compteur.
    Mais que non, Caro-Line!
    Je n'ai pas resolu comme je pensait.
    Comme je l'ai dit, j'aimerais tracer mon le signal avec la boucle for.
    voici le code que j'ai utilisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for N = 1:10
        in = stereo(1:N*length(mls),1);
        out = stereo(1:N*length(mls),2);
        ir = xcorr(in,out)/length(in); 
        figure; plot(ir); 
        grid on;
    end
    mls = Maximal Length sequence
    stereo = Signal (n x 2).

    j'aimerais tracer le signal "ir" de N-fois, en prolongeant à chaque fois la longueur du MLS et en inscrivant sur chaque figure le nombre de fois que j'ai incrementé le MLS (Exemple "avec 3 fois le mls", "avec 4 fois le mls"...).
    Tout d'abord avec ce code je n'ai pas pu tracer comme je pretandait auparavant. Je me demande comment je doit m'y prendre

    Merci pour votre aide

    Merlinerick

  7. #7
    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 828
    Points
    14 828
    Par défaut
    Citation Envoyé par merlinerick Voir le message
    j'aimerais tracer le signal "ir" de N-fois, en prolongeant à chaque fois la longueur du MLS
    J'ai pas bien compris
    Elle est définie où cette variable mls ?
    Si tu veux qu'elle varie ben il faut la faire varier dans la boucle.

    Citation Envoyé par merlinerick Voir le message
    en inscrivant sur chaque figure le nombre de fois que j'ai incrementé le MLS (Exemple "avec 3 fois le mls", "avec 4 fois le mls"...)
    Là il faut par exemple utiliser LEGEND (ou TEXT)
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for N = 1:10
        in = stereo(1:N*length(mls),1);
        out = stereo(1:N*length(mls),2);
        ir = xcorr(in,out)/length(in); 
        figure; plot(ir); 
        legend(sprintf('avec %d fois le mls',N));
        grid on;
    end

  8. #8
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Caro-Line Voir le message
    J'ai pas bien compris
    Elle est définie où cette variable mls ?
    Si tu veux qu'elle varie ben il faut la faire varier dans la boucle.
    [/code]
    S'lut!
    J'avoue que je me suis mal exprimé à ce niveau. En me relisant j'ai du mal à comprendre.
    En fait le signal "ir" varie selon la longueur du "mls".
    J'espère que tu as compris ce que je veux dire

    Merci une fois de plus

  9. #9
    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 828
    Points
    14 828
    Par défaut
    J'ai essayé de relire depuis le début mais j'avoue que je suis perdue.
    Au début tu disais vouloir faire varier le N, maintenant c'est la variable mls

    Tu veux tracer ir en fonction de mls ? C'est ça ton problème ?
    Dans ce cas (si ir et mls font bien la même taille) :

  10. #10
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Caro-Line Voir le message
    J'ai essayé de relire depuis le début mais j'avoue que je suis perdue.
    Au début tu disais vouloir faire varier le N, maintenant c'est la variable mls

    Tu veux tracer ir en fonction de mls ? C'est ça ton problème ?
    Dans ce cas (si ir et mls font bien la même taille) :
    En fait Caro-Line, il n'ya pas de quoi être perdu.
    J'axplique clairement:
    J'ai une sequence (MLS = Maximal length Sequence) que je passe dans un filtre.
    Il peut être que je ne genère pas le MLS seulement une fois, mais que ce soit plusieur fois le même mls que je fais passer dans le filtre.
    Exemple:
    Suposons mls = [1 1 1 -1 -1 1 -1] que je fais passer dans le filtre. Le tracé du "ir" (correlation du mls avec son filtré[mls filtré]) sera different si j'avait utilisé MLS = [mls mls mls mls] ( concatenation de mls N = 4 fois).
    le signal "stereo" dans mon code n'est composé autre que du "mls" envoyé (le signal plus haut) en première colonne et le "mls filtré" en deuxieme colone;
    Je fais en effet la correlation de ces deux colonnes

    Dans le code que j'ai envoyé, tu peux remplacer length(mls) comme suis, si nous nous basons sur l'exemple de mls sus-mentioné avec 7 elements:
    (rappel: mls = [1 1 1 -1 -1 1 -1])
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for N = 1:10                             % N est le nombre de concatenation de mls
        in = stereo(1:N*7,1);             % premiere colonne, length(mls) = 7
        out = stereo(1:N*7,2);           % deuxieme colonne, length(mls) = 7
        ir = xcorr(in,out)/length(in);    
        figure; plot(ir); 
        legend(sprintf('avec %d fois le mls',N));
        grid on;
    end
    La fonction "legend" que tu as a utilisé est pour ma part dejà bonne, je dois seulement tester.
    Tu vois que si je trace "ir" à chaque fois que j'ajoute le "mls", sa longueur varira. Et c'est cette variation que je veux observer. J'aimerais ainsi repondre á la question de savoir avec combien de "mls" concatené j'obtient la reponse escompté (il s'agit en fait de la reponse impulsionnelle de mon filtre utilisé).

    J'ose croire que tu a compris mon probleme. Le code que j'ai ici, avec ton aide, est déja sur la bonne voix. Il faut seulement l'affiner.

    Merci encore

  11. #11
    Débutant
    Profil pro
    Inscrit en
    Août 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 62
    Points : 43
    Points
    43
    Par défaut
    Bonjour;
    Je me permets de modifier votre code selon ce que j'ai compris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for N = 1:10
        in = stereo(1:N*length(mls),1);
        out = stereo(1:N*length(mls),2);
        ir = xcorr(in,out)/length(in); 
        figure; plot(ir); 
        legend(sprintf('avec %d fois le mls : ',length(mls)));
        grid on;
    end
    J'espere que j'ai bien compris la problematique;

Discussions similaires

  1. plot avec une boucle for
    Par zaitIX dans le forum MATLAB
    Réponses: 4
    Dernier message: 29/01/2013, 16h26
  2. [Tableaux] Problème avec boucle
    Par MYster dans le forum Langage
    Réponses: 6
    Dernier message: 11/11/2005, 19h39
  3. [Debutant/WinAPI] Souci avec boucle While et GetMessage()
    Par SnowStyle dans le forum Windows
    Réponses: 11
    Dernier message: 15/10/2005, 20h19
  4. pb requete avec boucle
    Par kidu dans le forum Requêtes
    Réponses: 1
    Dernier message: 31/08/2005, 15h27
  5. Réponses: 10
    Dernier message: 05/04/2005, 11h25

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