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 :

Echange de résultats entre projet C et MATLAB [MEX]


Sujet :

MATLAB

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 90
    Points : 74
    Points
    74
    Par défaut Echange de résultats entre projet C et MATLAB
    Salut,

    J'ai fait plein d'exemples sur les mex-files, mais ce sont juste des fonctions écrites en C et exécutables en matlab.
    Ce que je cherche c'est effectuer un échange de résultats entre C(tout un projet) et matlab. Si je peux m'expliquer: enregistrer des variables (à partir du projet C) externes aux mexFunctions dans la plhs pour les lire en matlab.

    J'ai trouvé quelque chose qui ressemble à ça :
    mexGetVariable ("y", "workspace")
    mais 1/ ça m'affiche une erreur
    2/ il s'agit du workspace de matlab là où on appelle la fonction mex

    Est ce qu'il y a une façon SVP de ce faire ???

  2. #2
    Membre averti

    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Points : 352
    Points
    352
    Par défaut
    Bonjour,

    Si tu veux interagir avec matlab depuis ton programme C/C++ (plutot que le contraire), il faut utiliser le "matlab engine" (il ne s'agit plus de MEX files).

    Tu devrais trouver tous les renseignements + exemples dans la doc:
    http://www.mathworks.com/access/help...al/f29148.html

    Salutations,

    Gregoire

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 90
    Points : 74
    Points
    74
    Par défaut
    Bonjour,

    Merci pou cette indication, j'ai consulté le lien et je vais essayer des exemples car je n'ai aucune idée sur les Engines.

    Mais est ce qu'il s'agit de créer un fichier M-file en matlab ou simplement appeler matlab et ses méthodes de calculs pour seulement exécuter les commandes ???
    Je crois donc que je ne peux pas récupérer les résultats de cette engines sous matlab

    En fait j'ai programmé pas mal de blocs de mon projet C en matlab mais en comparant les résultats, j'ai toujours une différence non nulle (est ce que c'est dû au fait qu'on peut ne pas avoir un zero exact en matlab ou il y a une différence de précision de calcul entre matlab et C/C++ ???

  4. #4
    Membre averti

    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Points : 352
    Points
    352
    Par défaut
    Citation Envoyé par fatenov Voir le message
    Mais est ce qu'il s'agit de créer un fichier M-file en matlab ou simplement appeler matlab et ses méthodes de calculs pour seulement exécuter les commandes ???
    Je crois donc que je ne peux pas récupérer les résultats de cette engines sous matlab
    l'engine te permettera d'executer des commandes dans ton instance de matlab, tu pourras entre autre ajouter des variables à ton workspace.

    En fait j'ai programmé pas mal de blocs de mon projet C en matlab mais en comparant les résultats, j'ai toujours une différence non nulle (est ce que c'est dû au fait qu'on peut ne pas avoir un zero exact en matlab ou il y a une différence de précision de calcul entre matlab et C/C++ ???
    Il peut y avoir de petites différences dans certains cas probablement liés à des optimisations soit de matlab soit de ton compilo (ex: imprecise floating point...). D'autre part bien souvent on ne sait pas exactement comment matlab réalise telle opération et donc quand elle est reprogrammée en C il y a des chances que son résultat diffère.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 90
    Points : 74
    Points
    74
    Par défaut
    Salut,

    J'ai essayé un exemple d'engine matlab, et ça demande en C #include "engine.h".
    Est ce ce que c'est bien comme ça le nom du fichier? car la compilation en C me dit que le fichier est introuvable. Si oui dois-je le télécharger et où pourrais-je le trouver?

    Merci.

  6. #6
    Membre averti

    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Points : 352
    Points
    352
    Par défaut
    Il se trouve dans ton repertoire d'installation de matlab sous extern/include.

    Il faut aussi compiler avec des .lib, mais c'est tres probablement indique en detail dans la doc

    Salutations,

    Gregoire

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

Discussions similaires

  1. [Débutant] [atan2] Différence de résultat entre MATLAB et Excel
    Par rouday dans le forum MATLAB
    Réponses: 1
    Dernier message: 16/03/2014, 15h34
  2. Réponses: 8
    Dernier message: 25/07/2012, 17h00
  3. [Débutant] Différences de résultats entre MATLAB 6.5 et 7.8
    Par Caps59 dans le forum MATLAB
    Réponses: 21
    Dernier message: 16/03/2009, 15h04
  4. Différence de résultat entre MATLAB et Scilab
    Par ABN84 dans le forum MATLAB
    Réponses: 1
    Dernier message: 10/05/2008, 22h53
  5. [Kylix] Echange de données entre fiches
    Par _dack_ dans le forum EDI
    Réponses: 1
    Dernier message: 01/07/2003, 11h34

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