Bonjour à tous,

J'ai interfacé un code C avec Matlab, pour augmenter la vitesse d’exécution de Matlab. Mon souci c'est que lorsque j’exécute mon code C (compilé avec gcc) il met 10 secondes environs mais lorsque j’exécute ce même programme sous Matlab il met plus de 5 minutes.
J'ai l’impression que la fonction mex de matlab n'optimise pas bien mon code et de plus j'ai le warning suivant :
 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/com...rrent_release/
Est ce normale ou c'est moi qui est mal codé quelque chose ?
Voici un exemple sur la manière dont je m'y prend pour faire l'interface :
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include "mex.h"
#include <stdio.h>
#include <stdlib.h>
 
typedef int Bool;
#define False 0
#define True  1
 
 
    /*#######################************ Programme C copie d'une matrice ***********************####################*/
void copie(double **x,double **res, unsigned int row, unsigned int col)
{  
        register unsigned int i1,j1;
 
       for(i1=0;i1<row;++i1)
       {
         for(j1=0;j1<col;++j1)
         {
         res[i1][j1]=x[i1][j1];
         }
       }
 
}
 
 
/* nrhs nombre de parametre d'entre
  nlhs nombre de parametre de sortie
  prhs tableau de pointeur d'un element en entre
  plhs tableau de pointeur de sortie
*/
 
 
 
void mexFunction( int nlhs, mxArray *plhs[],  int nrhs, const mxArray *prhs[] ) {
 
    double *x,*res, **I;
    double **Icopie;
    unsigned int nrow, ncol;
    register unsigned int i, j;
 
    nrow = mxGetM(prhs[0]);
    ncol = mxGetN(prhs[0]);
 
    x = mxGetPr(prhs[0]);       
    I = mxMalloc(nrow * sizeof(double *));
 
    /* changement de representation en memoire des matrices matlab */
 
    for (i = 0; i < nrow; ++i)
       { I[i] = mxMalloc(ncol * sizeof(double)); }
 
    for(i=0;i<nrow;++i){
        for(j=0;j<ncol;++j)
            {I[i][j] = x[j*nrow+i];}}
 
      Icopie = mxMalloc(nrow * sizeof(double *));
 
     for (i = 0; i < nrow; ++i)
       { Icopie[i] = mxMalloc(ncol * sizeof(double)); }    
 
 
      plhs[0] = mxCreateDoubleMatrix(nrow, ncol, mxREAL);  
      res= mxGetPr(plhs[0]); 
 
      /* appel de la fonction C */
      copie(I,Icopie,nrow,ncol) ; 
 
      /*resultat */
 
        for(j=0;j<ncol;++j){
        for(i=0;i<nrow;++i)     
        {res[j*nrow+i]=Icopie[i][j];}}   
 
 
  }