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 :

Tutoriel MEX-files et MATLAB Engine ?


Sujet :

MATLAB

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Par défaut Tutoriel MEX-files et MATLAB Engine ?
    Bonjour,

    quelqu'un pourrait-il m'expliquer à quoi sert les fichiers MEX-files ou le matlab engine s'il vous plait??

    Et si possible avoir un exemple ou un tuto en francais??

    Merci

    Salutations!!

  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 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
    Les fichiers MEX permettent d'exécuter des codes écrits en langage C, C++ ou Fortran directement dans MATLAB. Le MATLAB Engine permet de faire l'inverse.

    Pour le C par exemple, un fichier C-MEX est un fichier écrit en C et dont le corps est :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include "mex.h"
     
    void mexFunction( int nlhs, mxArray *plhs[],
            int nrhs, const mxArray *prhs[]) {
     
    /* Mettre le code C ici et utilise la "Gateway routine" pour passer les arguments d'entrée et de sortie */
     
    }

    Pour intégrer le MATLAB Engine dans un code C :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include "engine.h"
     
    int main()
     
    {
    	Engine *ep;  
     
    	ep = engOpen("\0"); /* Ouverture du MATLAB Engine */
     
    /* Appels aux fonctions MATLAB ici */
     
    	engClose(ep); /* Fermeture du MATLAB Engine */
     
    }

    Il faut se réferrer à la documentation pour la syntaxe des appels aux fonctions dans les deux cas => http://www.mathworks.com/help/techdo...l/bp_kqh7.html

    Il est nécessaire d'avoir MATLAB installé sur la machine qui exécute le code que ce soit pour le C-MEX ou (bien évidemment) pour le MATLAB Engine.

    Lire la note technique correspondante => MEX-files Guide

    Voir aussi :


  3. #3
    Membre régulier
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Par défaut
    Merci beaucoup pour ta réponse!

    Maintenant, je vois un peu mieux la différence entre les deux.

    Dans mon cas, je crois que je vais utiliser le matlab engine.

    Je voudrai juste savoir si il est possible d'utiliser le matlab mcr installer avec un executable et l'implémenter dans mon code C?
    (C'est pour pouvoir distribuer mon programme à n'importe quel ordinateur qui ne possède pas Matlab)

    Merci pour votre réponse

  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 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 timaxou Voir le message
    Je voudrai juste savoir si il est possible d'utiliser le matlab mcr installer avec un executable et l'implémenter dans mon code C?
    Je n'ai jamais essayé mais tu peux certainement le faire avec la commande system de stdlib.h

  5. #5
    Membre régulier
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Par défaut
    ça peut être intéressant, effectivement.

    Mais j'ai une autre question:

    Depuis mon programme C, est ce que je peux envoyer des données à mon exécutable (créé à partir de mon programme matlab)?

    En fait, je veux rentrer des données d'entrée de mon programme C dans mon executable pour que celui-ci puisse s'exécuter en fonction des conditions qu'on lui donne.

    (je ne sais pas si j'ai été clair...)

    Comment puis-je faire ça?

  6. #6
    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 timaxou Voir le message
    Comment puis-je faire ça?
    Le plus simple est d'écrire les données dans un fichier (texte ou binaire) depuis le code C et de lire ce fichier au début de l'exécutable.

  7. #7
    Membre régulier
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Par défaut
    euh ok mais je ne comprends pas trop!!!

    Je veux pouvoir rentrer mes paramètres à tout moment pour lancer l'exécutable matlab.

    Dans mon programme en C, je dois rentrer des paramètres à définir. Ensuite, le programme s'exécute et me sort certaines valeurs.

    Ensuite, l'exécutable matlab s'exécute (grâce au system de stdlib.h comme tu m'as dis) et va chercher ces dernières valeurs pour pouvoir effectuer son programme.

    peux-tu me dire comment on fait pour que l'exécutable puisse prendre en compte les valeurs automatiquement?

    Y-a-t'il une fonction qui permettrait de pointer les valeurs dans l'exécutable?

    ou alors peux-tu m'expliquer comment on fait pour lire le fichier texte (ou binaire) au début de l'exécutable et que celui-ci le prend en compte les valeurs stp?

    Je te remercie.

  8. #8
    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 timaxou Voir le message
    comment on fait pour lire le fichier texte (ou binaire) au début de l'exécutable et que celui-ci le prend en compte les valeurs
    Tout dépend du type et de la taille des variables à transmettre

  9. #9
    Membre régulier
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Par défaut
    Ben ce sont des caractères et des nombres.

    C'est vraiment léger.

    Bon, je vais essayer de me débrouiller et si je bloque , je tiens au courant

    En tout cas, je te remercie pour ta patience.

    Si je trouve, un moyen d'associer le programme Matlab au C (avec "system"), je n'hésiterai pas à poster la solution

    Merci beaucoup

Discussions similaires

  1. [MEX] Mex files sous MATLAB
    Par soeursourire dans le forum MATLAB
    Réponses: 11
    Dernier message: 04/06/2013, 13h32
  2. Réponses: 0
    Dernier message: 16/01/2013, 10h45
  3. Editer un Mex-file sous matlab
    Par enita dans le forum MATLAB
    Réponses: 2
    Dernier message: 01/02/2011, 11h24
  4. matlab et mex file
    Par tianarmy dans le forum MATLAB
    Réponses: 1
    Dernier message: 19/05/2010, 14h51
  5. [MEX] Modifier des Mex-Files Matlab 7 pour utilisation sur Matlab 5.3
    Par mathieu2703 dans le forum MATLAB
    Réponses: 3
    Dernier message: 03/08/2007, 12h20

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