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

Fortran Discussion :

Communication Fortran(.exe) et Matlab


Sujet :

Fortran

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 37
    Par défaut Communication Fortran(.exe) et Matlab
    Bonjour à tous,

    Voilà mon problème :
    J'ai quelques codes assez longs en Matlab, que je souhaite accélérer en implémentant le cœur en Fortran.
    En appelant le .exe dans Matlab, ça fonctionne très bien jusque là.
    Seulement, pour l'instant je passe par de fichiers .txt écrits en ascii pour transférer des variables ce qui dans certains cas est assez long et produit de gros fichiers...
    J'aimerai donc que ces fichiers soient en binaires. Mais ça je n'y arrive pas. De Fortran à Fortran et de Matlab à Matlab il n'y a pas de problème mais de l'un à l'autre, ça coince. En fait, je n'ai pas trouver la structure des réels et complexes double précision en Matlab pour l'écrire correctement en Fortran. Le type n'est du coup jamais bien reconnu...

    Connaissez-vous précisément ces formats ???

    En attendant, bonnes fêtes de fin d'année à tous !

  2. #2
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    quel type de fichier binaire utilise-tu? des fichiers à accès direct ou bien sequentiel?

    dans le second cas, il faut bien faire attention que fortran utilise des 'enregistrement' qui se termine par un caractère de fin de ligne...
    dans chaqune de ces lignes le premier octet (les deux premier en 64bits) définissent la taille de l'enregistrement (ie le nombre de donnée) cette séquence est d'ailleurs répétée à la fin...
    ensuite, en fortran, les nombre stockés dans un fichier de ce type ont exactement la même structure qu'en mémoire: 4o pour les integer et les real(kind=4), 8o pour les real(kind=8) ... je ne sais pas du tout pour matlab, mais typiquement, cette structure est dépendante de l'architecture machine, donc si tu fais tourné sur la même machine, les structure devraient être identiques...

    par cette méthode, tu ne gagnera pas bcp en temps de calcul par contre, tes nombres seront passés entre les deux application avec la précision machine (ce qui est un gros avantage) et tes fichiers d'échanges seront moins gros!!

    je me trompe peut-être, mais ne serait-il pas mieux de faire une librairie que tu charge dans matlab et que tu utilise alors comme une fonction de matlab?

  3. #3
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Citation Envoyé par genteur slayer Voir le message
    je me trompe peut-être, mais ne serait-il pas mieux de faire une librairie que tu charge dans matlab et que tu utilise alors comme une fonction de matlab?
    Il est tout à fait possible d'exécuter du code Fortran (compilé) sous MATLAB via les fichiers MEX : MEX-files Guide

    Pour ce faire, il te faudra un compilateur Fortran supporté par ta version de MATLAB pour compilé le code Fortran
    => : Quels sont les différents compilateurs supportés ?

  4. #4
    Membre éclairé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Août 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 57
    Par défaut
    Et l'inverse est également vrai, on peut appeler du code Matlab dans un code fortran (bon, je reconnais que pour la rapidité ce n'est pas forcément l'idéal, mais cela peut avoir un gain de temps important si certaines partie du code fortran doivent être modifiées souvent, par exemple pour changer une fonction)

    Amicalement,

  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 317
    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 317
    Par défaut
    Citation Envoyé par François L. Voir le message
    Et l'inverse est également vrai, on peut appeler du code Matlab dans un code fortran
    Effectivement, via le MATLAB Engine
    => Using the MATLAB Engine to Call MATLAB Software from C/C++ and Fortran Programs

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 37
    Par défaut
    Merci à tous pour vos réponses, je vais regarder tout ça.
    C'est sûr que ce sera plus propre d'utiliser les fichiers MEX.
    Je vous tiendrai au courant si ça marche.

    À bientôt !

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

Discussions similaires

  1. Communication Fortran(.exe) et MATLAB
    Par L'hermine dans le forum MATLAB
    Réponses: 0
    Dernier message: 29/12/2010, 13h43
  2. [Compiler] Réaliser un exe sous Matlab 6.1 R12
    Par biquet dans le forum MATLAB
    Réponses: 21
    Dernier message: 16/10/2008, 15h23
  3. [Compiler] création d'un exe en Matlab
    Par T-MAT dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 12/08/2008, 15h44
  4. MATLAB vs Fortran, C, C++ : MATLAB trop rapide ?
    Par rulianf dans le forum MATLAB
    Réponses: 9
    Dernier message: 21/12/2006, 15h06
  5. [MFC] communication inter exe
    Par Kevgeii dans le forum MFC
    Réponses: 2
    Dernier message: 06/01/2004, 16h47

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