Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

mex fonction matlab/c



  1. #1
    boubisto

    mex fonction matlab/c


    ------

    Bonjour à tous
    j'ai un programme en C que je veux compiler sous matlab;il ne m'affiche pas d'erreur mais quand je lance l'execution il ne me donne rien en resultat;quelqu'un saurait il d'ou vient le probleme?
    merci d'avance



    #include "mex.h"
    #include <stdio.h>
    #include<math.h>
    #define taille_block 32
    #define pi 3.14

    void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
    /*void phi(double *phi_0,double F_1,double F_2);*/
    /*
    *les variables sont affectées comme suit:
    * -plhs[0]:vecteur de sortie de taille n
    * -prhs[0]: signal d'entrée
    * -prhs[1]:nombre entier,taille signal d'entrée
    * -prhs[2]:nombre n,taille des blocs
    */
    /***********************Déclara tion des variables************/



    {

    int n;
    double *In,*Out,*Out_A,*Out_F;
    double *a_0, *a_1, *a_2;
    double *f_0, *f_1, *f_2;
    double phi_0;
    double A,F,phi,sum;
    double F_1,F_2;

    /*************Initialisation des variables****************/


    In=mxGetPr(prhs[1]);/*on recoit le pointeur de l'agument 2*/

    a_0=mxGetPr(prhs[0]);
    a_1=mxGetPr(prhs[1]);
    a_2=mxGetPr(prhs[2]);

    f_0=mxGetPr(prhs[0]);
    f_1=mxGetPr(prhs[1]);
    f_2=mxGetPr(prhs[2]);



    plhs[0]=mxCreateDoubleMatrix(taille_b lock+1,1,mxREAL);


    Out=mxGetPr(plhs[0]);
    Out_A=mxGetPr(plhs[0]);/*creation de la matrice de sortie*/
    Out_F=mxGetPr(plhs[0]);

    mexPrintf("A=%d %d %d\n",*a_0,*a_1,*a_2);
    /************initialisation de la matrice solution***************/

    for (n=-taille_block/2;n<=taille_block/2;n++)
    {
    A=a_0[0]+a_1[0]*n+a_2[0]*n*n;
    Out_A[n+taille_block/2]=A;


    F=f_0[0]+f_1[0]*n+f_2[0]*n*n;
    Out_F[n+taille_block/2]=F;
    }

    for (n=-taille_block/2;n<=taille_block/2;n++)
    {
    F_2=F_1=0;

    for(n=-taille_block/2;n<0;n++)
    {
    F_1=F_1+Out_F[n+taille_block/2];
    }

    for(n=-taille_block/2;n<=0;n++)
    {
    F_2=F_2+Out_F[n+taille_block/2];
    }
    }

    phi=phi_0+2*pi*sum;

    Out[n+taille_block/2]=phi;
    }

    return;
    }

    -----

  2. Publicité
  3. 📣 Nouveau projet éditorial de Futura
    🔥🧠 Le Mag Futura est lancé, découvrez notre 1er magazine papier

    Une belle revue de plus de 200 pages et 4 dossiers scientifiques pour tout comprendre à la science qui fera le futur. Nous avons besoin de vous 🙏 pour nous aider à le lancer...

    👉 Je découvre le projet

    Quatre questions à explorer en 2022 :
    → Quels mystères nous cache encore la Lune 🌙 ?
    → Pourra-t-on bientôt tout guérir grâce aux gènes 👩‍⚕️?
    → Comment nourrir le monde sans le détruire 🌍 ?
    → L’intelligence artificielle peut-elle devenir vraiment intelligente 🤖 ?
  4. #2
    domlefebvre

    Re : mex fonction matlab/c

    Bonjour,
    As-tu vérifié que ton fichier cmex.bat est bien configuré?
    Autre question bête: tu n'as vraiment aucune erreur lorsque tu compiles ta fonction avec cmex?

  5. #3
    boubisto

    Re : mex fonction matlab/c

    non je n'ai aucune erreur et tous mes fichiers sont bien configurés.
    aussi quand je lui demande de m'afficher les paramètres de a0,a1,et a2 il merde...

  6. #4
    umfred

    Re : mex fonction matlab/c

    Tout d'abord, tu as a fait une fonction qui ne renvoie rien puisque tu la déclares en void.

    Ensuite, pour tes variables, étant déclarées dans ta fonction, elles sont locales à celle-ci. Déclare les donc avant de définir ta fonction.

    Enfin, si tu ne vois rien , c'est peut etre parce que c'est trop rapide (éxécution et fermeture). Pour voir Quelque chose (ce que mexprintf envoie je suppose), mets une pause juste après ('pause();' si je me trompe pas) il te suffira d'appuyer sur une touche pour poursuivre l'éxécution du programme.

  7. A voir en vidéo sur Futura
  8. #5
    boubisto

    Re : mex fonction matlab/c

    bonjour,
    avec ce programme ci dessous j'arrive à afficher des resultat mais qui sont abérants.pourriez vous me dire où est le problèmes?en plus il me calcule phi comme A et F alors qu'ils n'ont pas la meme definition(formules)
    merci d'avance

    #include "mex.h"
    #include <stdio.h>
    #include<math.h>
    #define taille_block 32
    #define pi 3.14

    void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])

    /*
    *les variables sont affectées comme suit:
    * -plhs[0]:vecteur de sortie de taille n
    * -prhs[0]: signal d'entrée
    * -prhs[1]:nombre entier,taille signal d'entrée
    * -prhs[2]:nombre n,taille des blocs
    */
    /***********************Déclara tion des variables************/



    {
    int i,j,n;
    double *In,*Out_phi,*Out_A,*Out_F;
    double *a_0, *a_1, *a_2;
    double *f_0, *f_1, *f_2;
    double phi_0;
    double A,F,phi;
    double *F_1,*F_2;

    /*************Initialisation des variables****************/

    In=mxGetPr(prhs[1]);/*on recoit le pointeur de l'agument 2*/

    a_0=mxGetPr(prhs[0]);
    a_1=mxGetPr(prhs[1]);
    a_2=mxGetPr(prhs[2]);

    f_0=mxGetPr(prhs[0]);
    f_1=mxGetPr(prhs[1]);
    f_2=mxGetPr(prhs[2]);

    F_1=mxGetPr(prhs[0]);
    F_2=mxGetPr(prhs[1]);



    plhs[0]=mxCreateDoubleMatrix(taille_b lock+1,1,mxREAL);


    Out_phi=mxGetPr(plhs[0]);
    Out_A=mxGetPr(plhs[0]);/*creation de la matrice de sortie*/
    Out_F=mxGetPr(plhs[0]);


    mexPrintf("A=%d %d %d\n",*a_0,*a_1,*a_2);
    /************initialisation de la matrice solution***************/

    for (n=-taille_block/2;n<=taille_block/2;n++)

    {
    A=a_0[0]+a_1[0]*n+a_2[0]*n*n;
    Out_A[n+taille_block/2]=A;


    F=f_0[0]+f_1[0]*n+f_2[0]*n*n;
    Out_F[n+taille_block/2]=F;

    }




    phi=phi_0+2*pi*(F_1[0]-F_2[0]);

    Out_phi[n+taille_block/2]=phi;



    /*F_2[i]=F_1[i]=0;*/

    for(i=-taille_block/2;i;i++)
    {
    F_1[i]=F_1[0]+Out_F[n+taille_block/2];
    mexPrintf("F_1= %d\n",*F_1);
    i=i+1;
    break;


    }


    for(j=-taille_block/2;j<=0;j++)
    {
    F_2[j]=F_2[0]+Out_F[n+taille_block/2];
    mexPrintf("F_2= %d\n",*F_2);
    j=j+1;
    break;

    }


    return;
    }

  9. #6
    boubisto

    Re : mex fonction matlab/c

    bonjour
    est ce que pourrait me donner le programme C compilé sous matlab qui affiche un vecteur ligne svp.
    c super urgent pour aujourd'hui.
    merci d'avance

  10. Publicité

Discussions similaires

  1. Matlab et sa fonction subplot
    Par Stud-ENSPG dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 29/07/2007, 12h50
  2. trace fonction matlab
    Par bichou9 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 21/06/2007, 18h11
  3. Probleme avec les mex files : utilisation du fortran en matlab
    Par licette dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 04/07/2006, 15h41
  4. [Matlab] Fonction Filter
    Par Gatien dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 07/04/2006, 11h46
  5. Matlab - Mex-Functions
    Par kapso dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 17/08/2005, 13h55
Découvrez nos comparatifs produits sur l'informatique et les technologies.