Sous-sections
Utilisation de programme en C avec Matlab (interface mex)
- Type de données
- matrice (ou Matlab array) en C type mxArray
, qui contiens le type, les dimensions MxN (M nbre de lignes et N
nbre de colonnes), les données, ...
- stocage
- les données sont stockées par colonne dans un seul vecteur.
Les valeurs sont des réels en double précision (double en C)
- gestion mémoire
- gestion dynamique avec les 2 fonctions
- mxArray * mxCreateDoubleMatrix(int M, int N, mxReal); // creation
- void mxDestroyArray(mxArray *); // destruction
- int mxGetM(mxArray *) ; // nbre de lignes
- int mxGetN(mxArray *) ; // nbre de colonnes
- double * mxGetPr(mxArray *); // pointeur vers les donnees
- double mxGetScalar(mxArray *); // 1ere valeur
- matlab
- [D,E]=func(A,B,C);
dans un fichier func.c , création d'une interface C avec Matlab
contenant une fonction
void mexFunction(int nlhs, mxArray *plhs[ ], int nrhs,
const mxArray *prhs[ ]);
- nlhs
- = nbre de variables calculées (résultats) dans le membre
de gauche LHS sous matlab (ici 2: D et E)
- plhs[
- ] = tableau de pointeurs donnant les structures mxArray
associées (plhs[0]->D, plhs[1]->E): ces matrices doivent être
créent par le programme !!!!
- nrhs
- = nbre de variables arguments (données) dans le membre de
droite RHS sous matlab (ici 3: A,B,C)
- prhs[
- ] = tableau de pointeurs donnant les structures mxArray
associées (prhs[0]->A, prhs[1]->B, prhs[2]->C).
- Matlab
- B=prodmat(A,X);
Fonction C
Interface Matlab
- compilation
- mex prodmat.c
- fichier objet
- prodmat.mexglx
- MATLAB
- C=prodmat(A,B);
- REM:
- appel de fonctions MATLAB en C
- mexCallMATLAB
- appel de la fonction func matalb
mexCallMATLAB(int nlhs, mxArray *plhs[ ], int nrhs, const
mxArray *prhs[ ], “func”);
Pr. Marc BUFFAT
marc.buffat@univ-lyon1.fr
2007-02-08