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 :

calcul avec faux résultat


Sujet :

MATLAB

  1. #1
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 275
    Points : 70
    Points
    70
    Par défaut calcul avec faux résultat
    Bonsoir
    merci de m'aider à savoir pourquoi j'ai obtenu ce faux résultat parce que (249*30)/100=74.7 non pas 3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    a=max(I(:))
    b=(a*30)/100
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    a =
     
      249
     
     
    b =
     
        3

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

    Pour cela je t'invite à voir ce que retourne :

  3. #3
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 275
    Points : 70
    Points
    70
    Par défaut
    Bonsoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    >> class a
     
    ans =
     
    char
     
    >> class b
     
    ans =
     
    char

  4. #4
    Invité
    Invité(e)
    Par défaut
    Attention de bien mettre des parenthèses, sinon c'est comme si tu rentrais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    class('a')
    class('b')

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2012
    Messages : 95
    Points : 150
    Points
    150
    Par défaut
    Très bizarre, chez moi ça marche en faisant un copier/coller de ton 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
    >> I=[20 30 40 50 249]
     
    I =
     
        20    30    40    50   249
     
    >> a=max(I(:))
    b=(a*30)/100
     
    a =
     
       249
     
     
    b =
     
       74.7000
     
    >>
    Ma version Matlab:Matlab R2011b

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    Citation Envoyé par TRSRT Voir le message
    Très bizarre, chez moi ça marche en faisant un copier/coller de ton code
    c'est juste que tes données n'ont pas la même classe que celles de Marie_7.

    Le résultat de Marie_7 est logique par rapport à ses données, tout comme ton résultat est logique par rapport à tes données.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2012
    Messages : 95
    Points : 150
    Points
    150
    Par défaut
    Merci pour cette réponse
    Ma version Matlab:Matlab R2011b

  8. #8
    Membre habitué
    Homme Profil pro
    étudiant ingénieur traitement images médicales
    Inscrit en
    Juin 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : étudiant ingénieur traitement images médicales
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2012
    Messages : 74
    Points : 131
    Points
    131
    Par défaut
    Winjerome a raison, cela dépend de la classe de tes variables.

    Vraissemblablement, ta variable a est en uint8 (unsigned 8-bit integers). En gros, elle ne peut être qu'un entier compris entre 0 et 255.

    Donc, quand tu lui demande de faire 30*249, normalement ca doit te donner 7470. Mais comme tu travailles en uint8, 'a' prend son maximum, à savoir 255.

    Et quand tu divises 30*a par 100, Matlab comprend 255/100. Cela fait 2.5, mais 'a' ne pouvant être qu'un entier, Matlab arrondi à 3.

    Elémentaire, mon cher Watson!



    Parlons maintenant de solutions!

    tu as juste une toute petite commande à ajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    a=double(max(I(:)))
    b=(a*30)/100

    ensuite, fais attention. je ne sais pas comment tu génères ta liste I, mais dans la mesure où elle est en uint8, son maximum ne pourra pas être supérieur à 255. Si tu veux pouvoir travailler avec de plus grands nombres, tu peux passer ta liste I en double :

  9. #9
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 275
    Points : 70
    Points
    70
    Par défaut
    Bonjour
    merci à vous tous, j'ai utilisé la méthode de tanguy4724 et ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    a=double(max(I(:)))
    b=(a*30)/100

  10. #10
    Membre habitué
    Homme Profil pro
    étudiant ingénieur traitement images médicales
    Inscrit en
    Juin 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : étudiant ingénieur traitement images médicales
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2012
    Messages : 74
    Points : 131
    Points
    131
    Par défaut
    Ravi d'avoir pu t'être utile

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/07/2014, 10h01
  2. Calcul avec la boucle for et stockage des résultats
    Par Wel Kol dans le forum MATLAB
    Réponses: 5
    Dernier message: 02/04/2014, 11h21
  3. Lecture de matrice avec faux résultat
    Par Sonia_ dans le forum MATLAB
    Réponses: 4
    Dernier message: 01/09/2012, 17h42
  4. Remplir feuille calcul avec résultat formulaire
    Par hmartin1414 dans le forum Langage
    Réponses: 6
    Dernier message: 23/12/2010, 14h18
  5. Affichage résultat calcul avec fenetre tk
    Par sverdo dans le forum Tkinter
    Réponses: 1
    Dernier message: 31/12/2009, 16h54

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