Bonjour,
Je commence tout juste à interfacer MATLAB avec du codes C.
Pour l'instant, j'essaye de comprendre un peu l'API.
Je sais passer et récupérer des double. Voici le code de test qui me fait ça :
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
15
16
17
18
19
20
21 #include <mex.h> void mexFunction(int n_outputs, mxArray *p_outputs[], int n_inputs, const mxArray *p_inputs[]) { double a = mxGetScalar(p_inputs[0]); mexPrintf("a = %g\n", a) ; //associate outputs const mwSize di[2] = {1, 8} ; mxArray *c_out_m = p_outputs[0] = mxCreateNumericArray(2, di, mxDOUBLE_CLASS, mxREAL); //associate pointers double *c = mxGetPr(c_out_m); // do something for (int u=0; u!=8; u++) { c[u] = a ; } return; }
Le joli résultat est celui-ci :Ce que je n'arrive pas à faire : exactement la même chose mais sur des entiers (passer un tableau d'entiers en arguments, travailler en C sur ces entiers, retourner le résultat en entier, sans jamais dupliquer inutilement les données en double.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 >> mex entrees_sorties.cpp Warning: You are using gcc version "4.6.3-1ubuntu5)". The version currently supported with MEX is "4.3.4". For a list of currently supported compilers see: http://www.mathworks.com/support/compilers/current_release/ >> A = entrees_sorties(12.5) a = 12.5 A = 12.5000 12.5000 12.5000 12.5000 12.5000 12.5000 12.5000 12.5000
Merci de votre aide
Partager