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 :

Exécuter une fonction Fortran dans MATLAB


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 21
    Points : 11
    Points
    11
    Par défaut Exécuter une fonction Fortran dans MATLAB
    Bonjour,
    Je suis désolée de devoir poser cette question dans ce forum mais je sèche et le temps m'est compté
    Voilà, je dois exécuter une fonction Fortran (qui s'appelle rewrite) dans Matlab (sous Linux). J'ai 3 problèmes:
    * j'ai beau essayer plusieurs combinaisons, aucune ne marche
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mex('-f', /home/,'rewrite');
    voici l'erreur affichée:
    /opt/matlab-7.0.1/bin/mex: line 1687: .: rewrite : fichier introuvable
    /opt/matlab-7.0.1/bin/mex: line 1700: .: rewrite : fichier introuvable

    mex: no file name given.

    Usage:
    MEX [option1 ... optionN] sourcefile1 [... sourcefileN]
    [objectfile1 ... objectfileN] [libraryfile1 ... libraryfileN]

    or (to build an Ada S-function):
    MEX [-v] [-g] -ada <sfcn>.ads

    Use the -help option for more information, or consult the MATLAB External Interfaces Guide.
    * La fonction demande le nom d'un fichier qu'elle doit "réecrire" justement. J'ai mis le fichier dans un dossier avec la fonction, il suffirait donc de lire le (list(3).name) qui correspond au fichier demandé et que je veux réecrire; list=dir('mon répertoire').
    * Je n'arrive pas à visualiser correctement le fichier Fortran (nommé rewrite),
    même en utilisant "vi rewrite" dans un terminal. Un texte illisible apparait et donc je ne peux pas modifier la fonction...
    Merci beaucoup de bien vouloir m'aider...

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

    Le message d'erreur est plutôt clair, le chemin spécifié n'est pas correct.
    As-tu essayé:

  3. #3
    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,

    Pour spécifier que c'est un fichier fortran, il faut utiliser -fortran et non -f.

    Pour ton problème de visualisation, as-tu essayé dans un autre éditeur que vi? Es-tu sûr que c'est un fichier texte avec du fortran dedans?
    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.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Merci de m'avoir répondu.

    Alors, j'ai changé -f par -fortran et ça n'a rien changé. J'ai mis "rewrite.f" au lieu de "rewrite" et ça ne marche pas non plus. Je suis sure d'être dans le bon répertoire. Voici deux exemples d'essais vains:
    exemple 1:
    mex ('-f', 'home/', rewrite)
    ??? Undefined function or variable 'rewrite'.
    exemple 2:
    mex ('-f', 'home/', 'rewrite')


     Error: An invalid options file name was specified:
    is not a normal file or does not exist.

    ??? Error using ==> mex
    Unable to complete successfully

  5. #5
    Invité
    Invité(e)
    Par défaut
    Pourquoi sépares-tu le dossier du fichier? Où est l'extension?
    Le chemin du fichier est bien home/rewrite.f ?
    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mex('-fortran','home/rewrite.f')
    % Ou
    mex -fortran home/rewrite.f

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Pourquoi sépares-tu le dossier du fichier? Où est l'extension?
    Le chemin du fichier est bien home/rewrite.f ?
    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mex('-fortran','home/rewrite.f')
    % Ou
    mex -fortran home/rewrite.f
    J'ai essayé mais ça ne marche toujours pas. Ça donne les mêmes erreurs que j'ai citée.
    Rq: il n'y a pas d'extension à mon fichier. Il s'appelle "rewrite" tout court. J'ai réessayé en le renommant "rewrite.f" et pareil...

    Merci beaucoup ^^

  7. #7
    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
    As-tu essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mex -fortran /home/rewrite
    Si une erreur est renvoyé, quelle est-elle?
    Si tu es bien sous linux, le dossier home devrait se trouver à la racine.

    Que renvoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exist('/home/rewrite','file')
    ?

    De toute manière, vu ta première remarque à propos de la visualisation du fichier, a priori ce n'est pas un fichier texte, ce ne serait pas plutôt un executable compilé à partir d'un fichier fortran?
    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.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par magelan Voir le message
    As-tu essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mex -fortran /home/rewrite
    Si une erreur est renvoyé, quelle est-elle?
    Si tu es bien sous linux, le dossier home devrait se trouver à la racine.

    Que renvoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exist('/home/rewrite','file')
    ?

    De toute manière, vu ta première remarque à propos de la visualisation du fichier, a priori ce n'est pas un fichier texte, ce ne serait pas plutôt un executable compilé à partir d'un fichier fortran?
    Oui c'est un fichier exécutable. Bon pour simplifier j'ai mis ici /home/rewrite (je suis sure du vrai chemin).
    Quant au test, il me retourne la valeur 2.

  9. #9
    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
    Citation Envoyé par salloum Voir le message
    Oui c'est un fichier exécutable.
    Ok, inutile de continuer alors, mex sert à compiler un fichier fortran, pas à l'exécuter...

    Que veux-tu faire précisément avec ce fichier? L'exécuter comme programme externe dans MATLAB?
    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.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par magelan Voir le message
    Ok, inutile de continuer alors, mex sert à compiler un fichier fortran, pas à l'exécuter...

    Que veux-tu faire précisément avec ce fichier? L'exécuter comme programme externe dans MATLAB?
    Oui exactement.. N'y a-t-il pas d'autres moyens de le faire?

  11. #11
    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
    Tu peux utiliser la commande system (ou !), elle permet d'appeler ton programme :
    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.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par magelan Voir le message
    Tu peux utiliser la commande system (ou !), elle permet d'appeler ton programme :
    "Permission non accordée"
    Ben je vais m'acharner sur les quelques 580 fichiers que j'ai, je n'ai plus le temps

    Merci à vous tous

Discussions similaires

  1. Exécuter une fonction JS dans un HTML inséré par un <object>
    Par GRAF dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/03/2011, 21h23
  2. Exécuter une fonction contenue dans un string
    Par ninikkhuet dans le forum Langage
    Réponses: 5
    Dernier message: 06/05/2010, 15h18
  3. Réponses: 2
    Dernier message: 28/11/2007, 17h49
  4. Exécuter une fonction dans un thread
    Par Silverstone dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 23/06/2007, 12h24
  5. Exécuter une fonction PL/SQL dans SQL*PLUS
    Par soumou dans le forum PL/SQL
    Réponses: 5
    Dernier message: 03/11/2006, 00h07

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