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 :

format nombre equivalent au F9 Fortran


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 16
    Points : 12
    Points
    12
    Par défaut format nombre equivalent au F9 Fortran
    Bonjour,

    je cherche un format de nombre equivalent à celui appelé F9 en fortran.
    celui-ci donne un nombre ecrit si il est positif:
    0.1234E02 (le zero est important)

    soit si il est negatif:
    -.1234E02

    (ici le format en fortran c'est F9.4)

    Je n'ai pas trouvé un tel format sous matlab (j'ai essayé de bidouiller avec le format '.4e' mais ça n'a pas donné grand chose...)

    Avez vous des idées pour pouvoir récuperer ce format de nombre?

    Merci de votre participation

  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 166
    Points
    53 166
    Par défaut
    Je ne vois pas où se situe le problème mais ta question n'est pas très claire

    Que comptes-tu faire avec ce format ?

    Par exemple, à la lecture :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >> sscanf('0.1234E02','%f')
     
    ans =
     
       12.3400
     
    >> sscanf('-.1234E02','%f')
     
    ans =
     
      -12.3400
    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
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    ah oui j'ai pas donné le contexte, du coup c'est pas tres claire...

    Je veux créer des fichiers contenant des plages de valeurs, à partir d'un autre fichier contenant ses valeurs, mais sous un autre format. Actuellement je récupère mes valeurs comme char dans le premier fichier (format du nombre: -1.593667828E-002), et je veux les transposer dans mon nouveau fichier sous le format: -.159367E-01

    Pour cela j'utilise la fonction str2num, puis num2str pour le formater comme je le veux... (et c'est là que ça coince!)

    Es ce plus claire? (je suis pas convaincue de mon explication...)
    c'est pour preparer un calcul dans un logiciel.

  4. #4
    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 166
    Points
    53 166
    Par défaut
    Je ne connais pas le Fortran mais ne serait-ce pas le format E.4 plutôt que F.4 que tu cherches à convertir ?

    Essaie quand même ceci :

    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
    function str = conv2E4(x)
     
    if x==0
       str = sprintf('%#.4E',x);
       return
    end
     
    p = floor(log10(abs(x)));
     
    str = sprintf('%.4E',x);
     
    if x>0
     
        str = sprintf('0.%c%sE%c%02d',str(1),str(3:5),44-sign(p),abs(p+1));
     
    else
     
        str = sprintf('-.%c%sE%c%02d',str(2),str(4:6),44-sign(p),abs(p+1));
     
    end
     
    if ispc
       str(end-2) = []; 
    end
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    x = 1.593667828E-002;
    conv2E4(x)
     
    x = 12.34;
    conv2E4(x)
     
    x = -1.593667828E-002;
    conv2E4(x)
     
    x = -12.34;
    conv2E4(x)
     
    x = 0;
    conv2E4(x)
    donne :

    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
    ans =
     
    0.1593E-01
     
     
    ans =
     
    0.1234E+02
     
     
    ans =
     
    -.1593E-01
     
     
    ans =
     
    -.1234E+02
     
     
    ans =
     
    0.0000E+00
    Une autre solution plus élégante serait de passer par un fichier MEX Fortran pour faire la conversion "numérique => chaîne de caractères" avec le vrai format E.4
    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)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    yes ça marche merci!!!

    quelques petites modifs pour l'incorporer dans mon code et c'est nikel!!


    Pour info en Fortran mes lignes de format etaient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    011	FORMAT(F9.6,'	 ',F9.4,'	 ',F9.4,'		 ',F12.6)
    012	FORMAT(A18,' Poste',I1)
    donc j'imagine que F9.4 et E9.4 doivent correspondre...

    Je ne passe pas par un fichier mex, car je dois envoyer des infos au fortran, et il n'est pas ecrit de façon à ce que ce soit possible... (il attend une entrée clavier, et je lui envoi des arguments...)

    Bref merci beaucoup pour ton aide!

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 29/01/2024, 15h32
  2. Format nombre dans zone de liste
    Par rogeryzf dans le forum Access
    Réponses: 1
    Dernier message: 18/09/2006, 13h59
  3. [FB1.5.3] Date au format "nombre de secondes"
    Par SamRay1024 dans le forum Débuter
    Réponses: 2
    Dernier message: 16/03/2006, 05h38
  4. Formater des cellules excel en format nombre
    Par _developpeur_ dans le forum Access
    Réponses: 7
    Dernier message: 09/01/2006, 14h13
  5. [Format]nombres avec des 0
    Par zozolh2 dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 01/06/2004, 08h43

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