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 :

Function C dans du code MATLAB


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 19
    Par défaut Function C dans du code MATLAB
    Bonjour,

    je reprends un code sous matlab qui inclut de nombreux fonction .m mais aussi quelques fonctions .c

    Etant debutant et ne sachant pas vraiment comment faire tourner j'aurai quelque questions si des personnes sont familieres avec ce genre de probleme :

    - Dois-je compiler pour que les fonctions .c marche ? lorsque j'qpelle mon code et que lui meme fait appel a ces fonctions .c comment ca marche ?
    - En particulier, une des fonctions .c a elle-meme besoin de librairies externes pour tourner. Au debut du code il y a la ligne:
    #include <fftw3.h>
    qui correspond au header de la librairie mais il me semblait que les librairies etaient associes aux compileurs donc comment faire pour que mon code matlab prenne en compte cette libraire ? J'ai telecharger les fichier de la libraire avec le header et des fichiers .def .ddl et .exe mais je ne sais pas comment les installer et ou les mettre pour que matlab les prenne en compte ?

    - Lorsque mon code fait appel a cette fonction .c il me sort une erreur comme quoi elle n'est pas definie :
    Undefined function 'optimFourrier' for input arguments of type 'double'.

    Merci d'avance pour votre aide !

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2013
    Messages : 189
    Par défaut
    Salut,
    il te faut faire compiler les fichiers .c par matlab pour en faire des MEX
    je te conseille de lire la doc matlab qui en parle pour te faire la main, il y a un petit exemple didactique à la fin.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 19
    Par défaut
    ok merci pour ton aide !

    J'ai essaye de faire tourner mex pour compiler mes fichiers en utilisant la librairie fftw que j'ai telecharger ici http://www.fftw.org/install/windows.html

    La librairie est deja precompile donc je n'ai rien a faire niveau installation ? En faisant tourner mex en precisant la localisation de ma librairie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mex gridOptim.c -lfftw3 -L'C:\Program Files\MATLAB\R2011b\sys\lcc\FFTW' -I'C:\Program Files\MATLAB\R2011b\sys\lcc\include'
    il trouve bien le "header" fftw3 mais j'obtient ces lignes d'erreurs (je suis débutant donc il y suremment un truc qui m'échappe):

    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  missing identifier 
    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  syntax error; found `void' expecting `;' 
    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  redeclaration of `fftw_plan' previously declared at C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h 357 
    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  syntax error; found `fftw_plan_dft' expecting `;' 
    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  redeclaration of `fftw_plan' previously declared at C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h 357 
    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  syntax error; found `fftw_plan_dft_1d' expecting `;' 
    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  redeclaration of `fftw_plan' previously declared at C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h 357 
    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  syntax error; found `fftw_plan_dft_2d' expecting `;' 
    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  redeclaration of `fftw_plan' previously declared at C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h 357 
    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  syntax error; found `fftw_plan_dft_3d' expecting `;' 
    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  redeclaration of `fftw_plan' previously declared at C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h 357 
    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  syntax error; found `fftw_plan_many_dft' expecting `;' 
    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  redeclaration of `fftw_plan' previously declared at C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h 357 
    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  syntax error; found `fftw_plan_guru_dft' expecting `;' 
    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  redeclaration of `fftw_plan' previously declared at C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h 357 
    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  syntax error; found `fftw_plan_guru_split_dft' expecting `;' 
    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  redeclaration of `fftw_plan' previously declared at C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h 357 
    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  syntax error; found `fftw_plan_guru64_dft' expecting `;' 
    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  redeclaration of `fftw_plan' previously declared at C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h 357 
    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  syntax error; found `fftw_plan_guru64_split_dft' expecting `;' 
    Error gridOptim.c: C:\Program Files\MATLAB\R2011b\sys\lcc\include\fftw3.h: 357  too many errors

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2013
    Messages : 189
    Par défaut
    salut,

    apparemment t'es pas le seul
    http://www.mathworks.com/matlabcentr..._thread/271464

    essaye de compiler avec autre chose que LCC (le compilo de base de Matlab), via

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 19
    Par défaut
    ok merci pour ta réponse !

    J'ai en effet changer de compileur (j'utilise Microsoft Visual C++ 2010 Express maintenant) mais j'ai un autre probleme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Warning: MEX could not find the library "fftw3" specified with -l option. 
             MEX looked for a file with one of the names: 
                   fftw3.lib 
                   libfftw3.lib
    Ma librairie est composé d'un fichier header .h et de plusieurs fichiers .exe .dll et .def alors que visiblement il recherche un fichier .lib

    Dans le message que tu as mis en lien il dit au début ("I have a header file and 3 .dll files which I converted into .lib using lcc_implib.exe." donc je comprends qu'il faut que je transforme mes fichiers en .lib mais je comprends pas comment "utiliser lcc_implib.exe")

    Si quelqu'un peut m'expliquer rapidement la difference entre ce que j'ai et ce qu'il recherche et comment je pourrai transformer ma librairie en fichier .lib ?

    Merci d'avance

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

    Dans le lien même de la bibliothèque FFTW que tu donnes, on peut y lire :
    In order to link to them from Visual C++, you will need to create .lib "import libraries" using the lib.exe program included with VC++. Run:
    lib /def:libfftw3-3.def
    lib /def:libfftw3f-3.def
    lib /def:libfftw3l-3.def
    Ouvre donc une invite de commandes VC 2010 et exécutes ces lignes dans le dossier que tu as décompressé.

Discussions similaires

  1. Fonction "poly2trellis" dans un code matlab
    Par imen59 dans le forum Signal
    Réponses: 0
    Dernier message: 27/11/2010, 15h24
  2. [MEX] utiliser une dll C dans le code matlab
    Par hector2 dans le forum MATLAB
    Réponses: 2
    Dernier message: 18/06/2010, 15h53
  3. [Débutant] commande d'enregistrement dans un code matlab
    Par Marwa25 dans le forum MATLAB
    Réponses: 2
    Dernier message: 06/12/2009, 13h47
  4. Problème dans un code de matlab
    Par hanane78 dans le forum MATLAB
    Réponses: 8
    Dernier message: 25/04/2007, 16h29
  5. Utilisation du code MATLAB dans environnement .NET
    Par SOPRA-Eherve dans le forum MATLAB
    Réponses: 5
    Dernier message: 28/11/2006, 12h43

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