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 :

Communication de paramètres à un executable standalone [Compiler]


Sujet :

MATLAB

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 17
    Par défaut Communication de paramètres à un executable standalone
    Bonjour,
    comment écrire un fichier ".m" duquel on peut générer un exécutable standalone à utiliser hors matlab, et qui prend en entrée n'importe quel nom de fichier texte et qui génère en sortie n'importe quel fichier sortie, comme:

    > Mon_exe.exe aléatoire1_entrée.txt aléatoire2_sortie.txt

    ou

    > Mon_exe.exe aléatoire1_entrée.mat aléatoire2_sortie.mat

    Le but est de prendre en entrée des paramètres sous formes d'entiers et de matrices, ... et de sauvegarder des paramètres précis d'une façon pareille.

    La méthode actuelle consiste à définir un fichier d'entrée input.mat et un fichier de sortie output.mat

    (exe.m à utiliser avec compiler: mcc -mv exe)
    load input.mat
    action
    save output.mat

    tel que input.mat contient des matrices, ....

    Merci d'avance à ceux qui me répondent.

  2. #2
    Membre Expert
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Par défaut
    Citation Envoyé par dido_k83 Voir le message
    Bonjour,
    comment écrire un fichier ".m" duquel on peut générer un exécutable standalone à utiliser hors matlab, et qui prend en entrée n'importe quel nom de fichier texte et qui génère en sortie n'importe quel fichier sortie, comme:

    > Mon_exe.exe aléatoire1_entrée.txt aléatoire2_sortie.txt
    Beh sans parler de MATLAB Compiler (et si j'ai bien saisi ta requête) , il te suffit d'utiliser uigetfile au début de ton programme , l'utilisateur choisira donc un fichier en entrée de son choix et enfin de ton programme tu appelles uiputfile qui te demanderas un nom pour sauver ton fichier de sortie.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 17
    Par défaut
    les fonctions uigetfile et uiputfile sont interactives; on aura une fenêtre graphique pour montrer le chemin d'accès et les noms des fichiers.
    y a t il un moyen pour donner les noms des fichiers d'une façon directe:

    > Mon_exe inputfile outputfile

    tel que inputfile et outputfile peuvent avoir n'importe quel nom: entree1 sortie1
    ou toto titi ...
    en d'autre terme utiliser Mon_exe avec un fichier d'entrée qu'on spécifie dans la ligne de commande et génrer une sortie avec un fichier qu'on spéicfie.

  4. #4
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    y a t il un moyen pour donner les noms des fichiers d'une façon directe:
    Salut!

    Si j'ai bien compris tu veux utiliser la fonction saveas du matlab?



  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 17
    Par défaut
    non, il ne s'agit pas de la fonction save ou saveas ou des extensions.

    Le but est d'avoir un executable. si on lui donne un fichier avec n'importe quel nom il peut lire ce qu'il y dedans (avec load peut être) et écrire après les résultats dans un autre.

    exemple: > executable.exe toto titi

    dans toto:
    A=5;
    B=[1 2 3 4];
    F=12e9;

    executable.m télécharge toto et son contenu (A, B, F, ...) fait des calculs genre C=A*B et sauvegarde C dans titi.

    Si je dis "executable fichierentreealeatoire fichiersortiealeatoire", il fait pareil; il prend le contenu de fichierentreealeatoire et sauvegarde les résultats dans fichiersortiealeatoire.

  6. #6
    Expert confirmé
    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
    Par défaut
    Je ne comprends pas très bien la question
    Tu veux savoir comment écrire l'entête de ta fonction pour qu'elle prenne en paramètre 2 noms de fichiers ?

    Dans ce cas, que l'on compile ou non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function mafonction(fichier1,fichier2)
    Par contre tu ne pourras pas exécuter un fichier .m dans un exécutable, il faut mieux prendre des fichiers MAT comme dans ton premier post.

  7. #7
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2008
    Messages : 28
    Par défaut
    je pense que tu n'as pas besoin de tes deux fichiers .mat

    il faut que tu codes ton .m comme si c'était un .m classique, type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function ma_fonction(fichier1,fichier2)
    où fichier1 et fichier2 sont de type 'string' et contiennent le chemin\nom de tes fichiers à charger.

    Une fois compilé, il faut savoir que l'on peut passer des arguments à une fonction matlab compilée. Pour ce faire, dans ta commande dos, lorsque tu appelles ta fonction compilée, tu écris (en te plaçant au préalable dans le répertoire où se trouve ton .exe) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma fonction fichier1 fichier2
    car dans le cas exécutable, tous les arguments sont considérés comme des 'string', donc tu n'as rien à changer sur ton code .m

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 17
    Par défaut
    pour filer un fichier bien précisé (exemple toto.mat) à un executable et produire une sortie bien précise (exemple titi.mat), la façon est la suivante:

    toto.mat contient:
    A=2;
    B=[1 2 3 4];

    fichier executable.m:

    function executable
    load toto
    C=A*B
    save titi C

    On compile executable.m: > mcc -mv executable.m
    et on aura executable.exe

    si on execute maintenant executable.exe dans une fenêtre dos (executable.exe) ou en double cliquant, il prend le contenu de toto (A, B, ...) il fait le calcul de C et sauvegarde dan titi.mat

    ça marche nickel comme ça.

    Ma question est comment faire pour ne pas fixer le nom du fichier d'entrée et le fichier de sortie à l'intérieur de "executable.m" et par conséquence dans executable.exe

  9. #9
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2008
    Messages : 28
    Par défaut
    oui justement, ce que tu fais c'est, pour ta fonction exécutable.m :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function executable('chemin_vers_toto\toto.mat','chemin_vers_titi\titi.mat')
    load 'chemin_vers_toto\toto.mat'
    C=A*B;
    save 'chemin_vers_titi\titi.mat' C
    tu compiles...

    et au lieu de double cliquer, le plus simple est de faire un petit .bat de lancement dans le répertoire où tu as ton .exe dans lequel tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    executable chemin_vers_toto\toto.mat chemin_vers_titi\titi.mat
    @echo off
    pause
    sinon tu tapes executable chemin_vers_toto\toto.mat chemin_vers_titi\titi.mat direct dans une fenêtre de commande dos

    sans ' ' pour les noms, car sous dos (donc executable) ta fonction les prends directement comme des 'string'.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 17
    Par défaut
    je ne veux pas seulement utiliser l'executable avec toto comme entrée.
    je veux executer le même avec d'autres aussi sans éditer le fichier ".m" et le compiler.

    > executable.exe toto titi
    puis
    > executable.exe file7 file9
    puis
    > executable.exe zouzou pigier
    etc.....

  11. #11
    Expert confirmé
    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
    Par défaut
    Bon
    Il suffit d'adapter ce qu'on t'a donné en utilisant les formes fonctionnelles de LOAD et SAVE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function executable(fichier1,fichier2)
    load(fichier1)
    C=A*B;
    save(fichier2,'C');

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 17
    Par défaut
    si je fais:

    function executable(fichier1, fichier2)
    load fichier1

    C=A*B;

    save fichier2 C

    après > executable.exe fichier1 fichier2 fonctionne

    mais par contre > executable.exe fichier3 fichier4 NON

  13. #13
    Expert confirmé
    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
    Par défaut
    Tu as vu mon message juste avant le tien (on a posté à peu près en même temps) ?

  14. #14
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2008
    Messages : 28
    Par défaut
    mais c'est parce que au lieu d'écrire fichier1 et fichier2 il faut que ce soit des variables, pas le nom de tes fichiers
    ce sont des variables contenant le chemin vers tes fichiers à charger

    pour ton .m, tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function executable(fichier1,fichier2)
    load fichier1
    C = A*B
    save(fichier2,C)
    et pour l'exe tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    executable fichier1 fichier2
    mais tu n'ecris pas texto fichier1 fichier2, tu écris le chemin vers le fichier que tu as envie de charger et celui vers lequel tu veux sauver et ça, ça fonctionne peut importe le fichier

  15. #15
    Expert confirmé
    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
    Par défaut
    @Usagi34 : attention il faut utiliser la forme fonctionnelle comme je l'ai signalé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    load fichier %charge le fichier nommé fichier1
    load(fichier1) %charge le fichier dont le nom est contenu dans la variable fichier1

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 17
    Par défaut
    Merci pour vous deux.
    C'était les parenthèses qui manquent.

  17. #17
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2008
    Messages : 28
    Par défaut
    au temps pour moi, merci Caro-Line
    c'est ça de taper vite vite en direct du travail

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

Discussions similaires

  1. [VB]Passer un paramètre via executable et le récupérer
    Par ironik dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 29/03/2006, 14h36
  2. [Runtime]Execution appli externe : commandes paramétrées
    Par BernardT dans le forum API standards et tierces
    Réponses: 15
    Dernier message: 16/08/2005, 11h14
  3. Communication entre deux Executables ?
    Par QAYS dans le forum Langage
    Réponses: 8
    Dernier message: 11/05/2005, 14h41
  4. communication entre deux executables
    Par semenzato dans le forum MFC
    Réponses: 8
    Dernier message: 13/04/2005, 22h19
  5. Réponses: 3
    Dernier message: 17/06/2004, 16h32

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