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 :

Notation scientifque "str2num"


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 125
    Points : 38
    Points
    38
    Par défaut Notation scientifque "str2num"
    Bonjour,

    J'aimemrai savoir s'il est possible d'avoir en sorti d'un str2num un chiffre sous notation scientifique?

    par exemple, avec str2num('10000000') avoir : 1.0000E+007

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Quel serait l'intérêt ?

    STR2NUM renvoie une valeur numérique. Rien à voir avec l'affichage de cette valeur...
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

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

    Ce serai plutôt sur sa fonction inverse num2str que cela serait possible
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    num2str(1000000, '%10.4e')

    Sinon ce serait plutôt un problème d'affichage, et dans ce cas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    format short eng
    % Ou
    format long eng
    Dernière modification par Invité ; 05/04/2011 à 15h08.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 125
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Dut Voir le message
    Quel serait l'intérêt ?

    STR2NUM renvoie une valeur numérique. Rien à voir avec l'affichage de cette valeur...
    Si c'est pour ensuite l'afficher dans une fenêtre à part.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Ce serai plutôt sur sa fonction inverse num2str que cela serai possible
    num2str(1000000, '%10.4e')
    Merci c'est ce que je vais utiliser pour continuer.
    Ne peut on pas ensuite choisir le nombre de chiffre à afficher derrière le "e"?
    Il y a par défaut 3 chiffres ne peut ont pas avoir seulement : 1.0000E+7

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Citation Envoyé par kira9744 Voir le message
    Ne peut on pas ensuite choisir le nombre de chiffre à afficher derrière le "e"?
    Il y a par défaut 3 chiffres ne peut ont pas avoir seulement : 1.0000E+7
    Une idée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    x = 10000000;
     
    p = floor(log10(abs(x)));
     
    fprintf('%1.4fE%+d\n',x*10^-p,p)
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  6. #6
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 125
    Points : 38
    Points
    38
    Par défaut
    En faite j'insère plutôt mon résultat dans un uicontrol via l'intermédiaire d'un set :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(ChampsSaisie(i), 'string', num2str(N, '%10.4e'));

  7. #7
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(ChampsSaisie(i), 'string', sprintf('%1.4fE%+d\n',N*10^-floor(log10(abs(N))),floor(log10(abs(N)))));


    Ou tu crée une fonction avec le code donné dans mon précédent message.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  8. #8
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 125
    Points : 38
    Points
    38
    Par défaut
    Merci Dut, j'ai essayé les 2 codes que tu m'as proposé mais j'ai un warning que je ne comprends pas entiérement qui s'affiche sur la console :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: Single line Edit Controls can not have multi-line text

    J'ai simplement modifié mon code comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    p = floor(log10(abs(N)));
     
                    Res = sprintf('%1.4fE%+d\n',N*10^-p,p);
                    set(ChampsSaisie(i), 'string', Res);

  9. #9
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Il faut enlever le \n dans le SPRINTF :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(ChampsSaisie(i), 'string', sprintf('%1.4fE%+d',N*10^-floor(log10(abs(N))),floor(log10(abs(N)))));
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  10. #10
    Nouveau membre du Club
    Inscrit en
    Septembre 2009
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 125
    Points : 38
    Points
    38
    Par défaut
    Merci Dut sa marche parfaitement!

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

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