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 :

utilisation de edit avec des valeurs numériques


Sujet :

Interfaces Graphiques

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 358
    Points : 106
    Points
    106
    Par défaut utilisation de edit avec des valeurs numériques
    Bonjour je souhaite utiliser un edit dans mon interface.
    Le probléme est que je veut récuperer une valeur numérique du type 1.12644 .
    J'ai donc utilisé le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    handles(2)=uicontrol('style','text','units','normalized','position',[0.05 0.28 0.4 0.04],'string','Entrer votre correction pour la vitesse de roue avant','tag','resultat');
                    handles(2)=uicontrol('style','text','units','normalized','position',[0.05 0.22 0.4 0.04],'string','Entrer votre correction pour la vitesse de roue arriere','tag','resultat');
                    valeurAVT = uicontrol('Style','edit','String','coef correctif', 'Position',[700,220,120,25])
                    valeurARR = uicontrol('Style','edit','String','coef correctif','Position',[700,170,120,25])
     
                    valeurAVT=str2num(valeurAVT)
                    valeurARR=str2num(valeurARR)
    Voici le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ??? Error using ==> str2num at 33
    Requires string or character array input.
     
    Error in ==> interface_final at 47
                    valeurAVT=str2num(valeurAVT)

  2. #2
    Débutant
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 358
    Points : 106
    Points
    106
    Par défaut
    alors j'ai essayer avec cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     valeurAVT = uicontrol('Style','edit','String','coef correctif', 'Position',[700,220,120,25]);
                    valeurARR = uicontrol('Style','edit','String','coef correctif','Position',[700,170,120,25]);
                    valeurAVT= str2double(get(valeurAVT,'string'));
                    valeurARR= str2double(get(valeurARR,'string'));
    Mais le probléme est que j'ai besoin d'entrer des chiffre a virgule.Et avec cette commande matlab prend seulement les valeur entière.

  3. #3
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Et avec cette commande matlab prend seulement les valeur entière.
    C'est faux, par contre il faut utiliser le point pour séparer les valeurs décimales:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    >> str2double('2.5')
        2.50000
    D'autre part, tu confonds la valeur de l'objet avec son handle, dans ton premier message, tu récupérais le handle qui ne correspond absolument pas à la valeur contenue dans ton objet.

    Enfin, je te déconseille de prendre le même nom pour ton handle et pour la valeur récupérée car tu ne pourras plus accéder à ton objet avec ton handle puisque tu l'as écrasé...

    Bonne apm,
    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  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 830
    Points
    14 830
    Par défaut
    MATLAB est américain, les virgules il ne connait pas.

    Les nombres décimaux s'écrivent avec des points : 3.14

    Donc soit tu laisse l'utilisateur rentrer un nombre avec une virgule et dans ce cas tu dois transformer la virgule en point dans la chaine de caractères (voir STRREP) avant la conversion en double, soit tu l'oblige à utiliser la convention anglo-saxonne.
    Règles du Forum

    Adepte de la maïeutique

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 358
    Points : 106
    Points
    106
    Par défaut
    Après modif des handles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    valeurAV = uicontrol('Style','edit','String','coef correctif', 'Position',[700,220,120,25])
                    valeurAR = uicontrol('Style','edit','String','coef correctif','Position',[700,170,120,25])
                    valeurAVT= str2double(get(valeurAV,'string'))
                    valeurARR= str2double(get(valeurAR,'string'))
    Enrevanche matlab ne prend pas en compte ce que j'éccris :
    ex si je rentre 1.232 , matlab lis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    valeurAV =
     
       14.0093
    et pour valeurAVT

  6. #6
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Oui c'est un peu logique, pour lire la valeur, tu dois placer ton code dans un callback. Dans ton cas, tu crées ton objet et tu lui demandes la valeur immédiatement après (elle n'est alors pas définie).

    Tu devrais ajouter un bouton et récupérer la valeur de ton edit dans le Callback de ce bouton...
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 358
    Points : 106
    Points
    106
    Par défaut
    alors j'ai utiliser un pushbutton pour recuperer les valeur de edit.Mais le probléme est que lors de la compilation , matlab prend deja des valeurs dans le edit sans avoir le temps de mettre qqch dedans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function conversion(obj,event,valeurAVT,valeurARR)
            data=guidata(gcf)
     
            ...
            valeurAVT=data.valeurAVT
            valeurARR=data.valeurARR
            valeurAV= str2double(get(valeurAVT,'string'))
            valeurAR= str2double(get(valeurARR,'string'))
    ....

  8. #8
    Débutant
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 358
    Points : 106
    Points
    106
    Par défaut
    j'ai réussi , il fallait que je mette 'tag' et non 'string' dans la définition du edit.

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

Discussions similaires

  1. [XL-2003] Trier combobox avec des valeurs numériques sans doublon
    Par goldfinger13 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/02/2012, 20h31
  2. Utiliser un index avec des valeurs partielles
    Par camboui dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 02/09/2011, 13h08
  3. souci avec le format des valeurs numériques.
    Par LESOLEIL dans le forum Langage
    Réponses: 9
    Dernier message: 05/04/2006, 16h12
  4. Trier une colonne avec des valeurs numériques ou textes
    Par jfc dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/02/2006, 11h15
  5. Réponses: 6
    Dernier message: 04/04/2003, 15h28

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