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 :

figure sous MATLAB


Sujet :

MATLAB

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Points : 47
    Points
    47
    Par défaut figure sous MATLAB
    J ai un code qui me donne plusieurs valeurs de a et de lambda, je veux a la fin du code dessiner un graphe pour avoir l évolution de ces valeurs
    je sais pas comment stocker tous les résultats dans une seul variable pour les dessiner a la fin.
    mon code me dessine seulement le dernier resultat
    voici le code:
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
    nt=1;
    NTmax=12;
    state=[0;1;2];
    eina = 1;
    sigma= 1;
    es= 3;
    et= 1;
    alpha=0.9;
    beta=0.4;
    Oalpha=alpha;%omega de alpha
    Obeta=beta;
    a=2;
     
    Talpha(NTmax,1)=alpha;
    for i=NTmax-1:-1:1
        Oalpha=alpha*Oalpha+(1-Oalpha)*beta;
        Talpha(i,1)=Oalpha;
    end
    %belief starting from beta
    Tbeta(1,1)=beta;
    for i=2:NTmax
        Obeta=alpha*Obeta+(1-Obeta)*beta;
        Tbeta(i,1)=Obeta;
    end
    %corresponding value of the belief and their indice in the value matrix
    Tbelief=[Tbeta;Talpha];
    for i=1:2*NTmax
    Tbelief(i,2)=i;
    end
    Tbelief(:,1)
    pause
     
     
    %Initialiser V et Vold
    Vold=ones(2*NTmax,NTmax);
    V=zeros(2*NTmax,NTmax);
     lambda=alpha;
    %boucle while
     
     while a==2   
        Vold=V;
        Olambda=alpha*lambda+(1-lambda)*beta;
        for i=1:2*NTmax
            if Tbelief(i,1)==Olambda
                ind=Tbelief(i,2)
            end
        end
        if nt < NTmax
     
     Q0= -eina -sigma +Vold(ind,nt);
     Q1= -es -sigma + Vold(1) ;
     
        Q=[Q0;Q1];
      [maxQ position]=max(Q);
      a=state(position);
     
     
    else (nt==NTmax);
       Q1= -es -sigma + Vold(1);
        maxQ=Q1 ; 
        a= 1   ;
        end
    %la mise a jour de nt, V et lambda selon la valeur de a
    if a==0
        for i=1:2*NTmax
            if Tbelief(i,1)==lambda
                ind2=Tbelief(i,2);
            end
        end
         V(ind2,nt)=Q0;
         lambda=Olambda;
         nt
    end
     
    if a==1    
       for i=1:2*NTmax
            if Tbelief(i,1)==lambda
                ind3=Tbelief(i,2);
            end
       end
        ind3=Tbelief(i,2);
         V(ind3,nt)=Q1;
         lambda=alpha;
        nt=0
    end
     a
    lambda
    if a==0
          a=2;
      else
          a=3;
    end
    plot(lambda,a)
    end
    Merci pour votre aide

  2. #2
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    Salut,
    je te conseil de jeter un coup d'oeil à la fac
    Pour faire simple, regarde ce que font ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tableauA = zeros(1,10);
    for i=0:10
        a = rand;
        tableauA(i) = a;
    end
    plot(0:10,tableauA);

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Bonjour,


    petite remarque en passant: l'indice doit commencer à 1...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tableauA = zeros(1,10);
    for i=1:10
        a = rand;
        tableauA(i) = a;
    end
    plot(1:10,tableauA);

    Sinon, il suffit de stocker a et lambda dans un vecteur que tu incrémentes à chaque ittération. Au final, tu auras toutes tes valeurs. Il y aura peut-être une petite subtilité dans ton code puisque tu as des conditions sur les valeurs de a...

  4. #4
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    En effet, désolé pour cette petite bourde.
    Je code trop en java et pas assez en Matlab ces derniers temps

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Points : 47
    Points
    47
    Par défaut
    Merci pour vos réponses FLB et Merel
    voici ce que j'ai fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    tableauA = zeros(1,10);
    for i=1:10
        tableauA(i) = a; 
    end
    tableauB = zeros(1,10);
    for i=1:10
       tableauB(i) = lambda; 
    end
    figure()
    plot(1:10,tableauA);
    figure()
    plot(1:10,tableauB);
    j'ai rassemblé les valeurs de a et lambda dans deux tableaux, et j'ai pas su comment les rassembler en une seule figure.
    car ce code me donne plusieurs figures
    j'ai mis l'instruction suivante, mais ça marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    figure()
    plot(tableauB,tableauA);

  6. #6
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    Salut,
    un petit tour dans la doc t'informera bien sur l'utilisation de plot.
    Si tu veux tracer 2 courbes sur une meme figure, de façon superposée, utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    figure;
    plot(1:10,tableauA,'b');
    hold on;
    plot(1:10,tableauB,'r');
    Si tu veux tracer lambda en fonction de a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    figure;
    plot(a,lambda);
    Et si tu veux avoir 2 graphes côte à côte, utilise subplot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    figure;
    subplot(2,1,1);
    plot(1:10,tableauA,'b');
    subplot(2,1,2);
    plot(1:10,tableauB,'r');

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Au niveau de la subtilité, penses éventuellement à changer tes valeurs de a. Je ne sais pas ce que ca représente in fine et quelles valeurs tu souhaites conserver.

    Mais dans tes tests sur a, à ce niveau là de ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if a==0
            a=2;
    else
            a=3;
     
    end
    regarde si tu souhaites conserver la valeur a=0 ou la remplacer par a=2 ou a=3 pour tes graphes.

  8. #8
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Points : 47
    Points
    47
    Par défaut
    Merci pour votre aide
    Pour les tests de a c étais seulement pour arrêter le while
    je l ai change par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if a==0
            a=2;
    else
            break;
    end

Discussions similaires

  1. figure sous matlab
    Par arij25 dans le forum MATLAB
    Réponses: 3
    Dernier message: 21/01/2013, 20h58
  2. [Débutant] Créer une figure sous MATLAB sans l'afficher
    Par heaven__ dans le forum Images
    Réponses: 15
    Dernier message: 22/10/2010, 21h43
  3. Lire un programme écrit sous MATLAB
    Par tipi09 dans le forum Octave
    Réponses: 2
    Dernier message: 06/10/2006, 10h43
  4. Curseur sous MATLAB
    Par philatex dans le forum MATLAB
    Réponses: 2
    Dernier message: 23/08/2006, 09h02
  5. Exécutable sous MATLAB
    Par julien_arche dans le forum MATLAB
    Réponses: 6
    Dernier message: 01/08/2006, 09h54

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