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 :

maximum sur 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 maximum sur matlab
    Bonjour
    je dois écrire une fonction Q sur Matlab en fonction de a
    avec a prend 3 valeurs : 0, 1 et 2
    apres le cacul de Q en fonction de a je dois afficher le Q et le a qui prend la valeur maximale
    J ai fais un essai mais ça marche 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    nt=3
    NTmax=10
    eina = 2;
    sigma= 10;
    es= 6;
    et= 4;
    lambda= 0.8 ;
    alpha=0.8;
    beta=0.5;
    state=[0;1;2];
     
    if nt < NTmax
        Q0= eina -sigma;
        Q1= eina -sigma + alpha; 
        Q2= es - et - sigma +(1-lambda)*beta+ lambda*alpha ;
     
        %a= argmax(Q)   
    else
        Q1= -eina -sigma + alpha ;   
    end
     
     Q=[Q0;Q1;Q2];
      maxQ=max(Q)
     for state= 0:2
    Q(state)= maxQ
    a=state
     end

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for state= 0:2
        Q(state) = maxQ
    Attention, les indices dans MATLAB commencent à 1 et non 0.
    Que cherches-tu à faire exactement avec ces dernières lignes ?
    Je te conseille la lecture de la Comment trouver la valeur minimale (ou maximale) avec sa position ?

    Sinon plutôt que d'utiliser les 3 variables Q0, Q1 et Q2 puis de les concaténer, utilise directement Q(1), Q(2) et Q(3).
    Si la condition if nt < NTmax n'est pas vérifiée, Q0 et Q2 ne sont pas définis, seul Q1 est défini.

  3. #3
    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
    j ai fais des modifications sur 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
     
    nt=3
    NTmax=10
    eina = 2;
    sigma= 10;
    es= 6;
    et= 4;
    lambda= 0.8 ;
    alpha=0.8;
    beta=0.5;
    state=[0;1;2];
    if nt < NTmax
        Q0= eina -sigma;
        Q1= eina -sigma + alpha; 
        Q2= es - et - sigma +(1-lambda)*beta+ lambda*alpha ;
     
        %a= argmax(Q)   
    else
        Q1= -eina -sigma + alpha ;   
    end
     Q=[Q0;Q1;Q2];
       [M position]=max(Q)
    Quand j'ai fais ces modifications, le code m'affiche la valeur maximale de Q + sa position.
    la position et la valeur de a sont décalée et moi j'ai besoin de la valeur de a, je sais pas comment je vais faire.

    Avec les dernière lignes je dois afficher le Q maximum et la valeur de a.
    Je sais pas la différence entre Q0, Q1,Q2 et Q(1), Q(2) ,Q(3).
    Pour ta dernière remarque tu as raison et ça bloque le calcul après, je sais pas comment régler le problème .

    Merci pour ton aide

  4. #4
    Invité
    Invité(e)
    Par défaut
    La fonction max te retourne l'indice de Q correspondant à la valeur maximale. Si tu souhaites récupérer la valeur correspondante de state=[0;1;2];, il te suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [maxQ position]=max(Q);
    state(position)
    Pour information, tu as aussi maxQ = Q(position).

    Citation Envoyé par arij25 Voir le message
    Je sais pas la différence entre Q0, Q1,Q2 et Q(1), Q(2) ,Q(3).
    Q0, Q1, Q2 sont trois variables distinctes, alors que Q ( Q(1), Q(2) ,Q(3) ) est un tableau de 3 valeurs.

    Citation Envoyé par arij25 Voir le message
    Pour ta dernière remarque tu as raison et ça bloque le calcul après, je sais pas comment régler le problème .
    Je ne connais pas le contexte, mais je pense à mettre des valeurs par défaut.

  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 bien
    Tes réponses m'ont beaucoup aidé

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

Discussions similaires

  1. Trouver le minimum ou le maximum sur une courbe
    Par neoscanx dans le forum MATLAB
    Réponses: 8
    Dernier message: 22/05/2007, 12h07
  2. Problème variable locale sur MATLAB
    Par nuans dans le forum MATLAB
    Réponses: 10
    Dernier message: 12/04/2007, 10h34
  3. Nombre pair sur Matlab
    Par cricri04 dans le forum MATLAB
    Réponses: 2
    Dernier message: 16/03/2007, 16h46
  4. Un nouveau qui a besoin d'aide sur MATLAB
    Par bf491499 dans le forum MATLAB
    Réponses: 4
    Dernier message: 26/02/2007, 16h10
  5. Nombre de tâches maximum sur un 386
    Par krhamidou dans le forum Assembleur
    Réponses: 3
    Dernier message: 13/11/2005, 22h01

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