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

Interfaces Graphiques Discussion :

Courbe d'un produit (PI) d'une fonction


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Par défaut Courbe d'un produit (PI) d'une fonction
    Bonjour, j'ai un projet Matlab à rendre pour la semaine prochaine, et je bloque sur la fin.
    Mon projet est sur le paradoxe des anniversaires (http://fr.wikipedia.org/wiki/Paradoxe_des_anniversaires).

    J'ai créé pour cela une Interface graphique avec des boutons permettant de définir combien de personne il y a dans la pièce (incrémente une variable "compteur")
    Je calcule le résultat de la probabilité (qui s'affiche).

    Et la où je bloque, c'est que j'aimerais représenter sous forme d'un graphique type immeubles mon résultat.
    Avec en abscisse le nb de personne (allant de 1 à compteur) et en ordonnée le pourcentage (allant de 0 à 100%)

    Ex: Si je rentre 5 dans compteur, j'aurai un graphique composé de 5 immeubles de hauteur égale à leur probabilité.

    J'ai programmé quelque chose, mais je ne comprend pas pourquoi cela ne marche pas !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function calculer(hObject,eventdata)
    global compteur handles p
    k=1:compteur;
    s = prod ((366-k)/365);
    p=(1-s)*100
    % Actualisation de la propriété String de l'objet Uicontrol Text calculer
    set(handles(5),'string',num2str(p));
    La fonction calculer marche, je l'ai jointe pour la compréhension

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function courbe(hObject,eventdata)
    global compteur
     
     k=1:1:compteur
        i=1:k
        s = prod ((366-i)/365);
        p=(1-s)*100
    subplot(2,1,1)
    plot(k,p)
    En espérant avoir été le plus clair possible
    Merci d'avance pour votre aide, qui me serait précieuse.

    Benoit

  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
    Qu'est-ce qui ne marche pas ?

    Note : d'après toi que vaut i dans ta 2ème fonction ?
    (à mon avis ton problème vient de là )

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Par défaut
    Ce qui ne marche pas, c'est que je n'obtiens pas de courbe (à défaut d'immeubles car je ne sais pas comment faire pour le moment)

    Dans ma 2ème fonction, i vaut (si le compteur est à 3 par ex) successivement : i = 1
    i = 1 2
    i = 1 2 3
    (a moins que cela ne soit avec une boucle for (chose que j'ai aussi essayé))

  4. #4
    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
    Citation Envoyé par lebronjames44 Voir le message
    Dans ma 2ème fonction, i vaut (si le compteur est à 3 par ex) successivement : i = 1
    i = 1 2
    i = 1 2 3
    Et bien non puisque justement il n'y a pas de boucle, c'est ça qui est étrange.
    Du coup i est un scalaire, donc s et p aussi, donc ce que tu traces est une ligne (quelque soit k la valeur de p est la même).
    Il faut donc que tu construises le vecteur p.

    Ensuite pour tes "immeubles" (je n'ai jamais entendu ce terme), regarde du côté de la fonction BAR.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Par défaut
    Ok d'accord, j'ai essayé avec une boucle for (for i=1:k), mais je ne vois pas comment construire le vecteur p !

  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 sais pas quel est ton niveau en MATLAB, mais si tu es débutant, un exemple simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i=1:5
       v(i)=i;
    end
    Plus "propre" avec la pré-allocation quand on connait en avance la taille du vecteur (Cf Qu'est-ce que la préallocation de mémoire ?):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    v=zeros(1,5);
    for i=1:5
       v(i)=i;
    end
    Et ta boucle devra aller de 1 à compteur pas de 1 à k (k étant un vecteur)

Discussions similaires

  1. Réponses: 6
    Dernier message: 17/11/2012, 14h54
  2. [Débutant] afficher courbe d'une fonction
    Par mmplv dans le forum MATLAB
    Réponses: 1
    Dernier message: 10/05/2011, 18h40
  3. Affiner une courbe à l'aide d'une fonction cosinus
    Par momo032114 dans le forum MATLAB
    Réponses: 0
    Dernier message: 12/08/2008, 16h42
  4. Expression d'une fonction à partir d'une courbe
    Par ramrouma dans le forum MATLAB
    Réponses: 2
    Dernier message: 08/01/2007, 17h52
  5. Réponses: 1
    Dernier message: 25/12/2006, 16h03

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