• Sábado 14 de Diciembre de 2024, 08:40

Autor Tema:  mexxFunction Matrices??  (Leído 716 veces)

fernandovallecordoba

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
mexxFunction Matrices??
« en: Sábado 21 de Febrero de 2009, 02:03 »
0
Hola, quisiera saber si alguien me podría echar una mano. Tengo un programa en matlab el cual tengo que pasar a C.
La idea es que la funcion reciba una matriz (bidimensional de double) por parametro y trabaje con ella. Mi problema es que no se como hacer que la matriz que recibo en la mexFunction pueda luego usarla en otras funciones. Mi idea es poder hacer lo siguiente:

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

        prhs[0] = mxCreateDoubleMatrix(rowLen, colLen, mxREAL);
        x = mxGetPr(prhs[0]);

       funcion(x);
}

void funcion(double* x){

       double a;
       a=x[2][2]
}

Pero entre que me lio aun con los punteros y no se exactamente en que formato llegan los datos a la mexFunction... Sólo quiero poder usar la matriz en otra funcion, no debe ser muy dificil...
Pero no se si tengo q hacer un array de vectores o si ya esta la memoria reservada... Además, mxCreateDoubleMatrix parece que crea un vector (1 dimension) no una matriz no??

Muchas graciass.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: mexxFunction Matrices??
« Respuesta #1 en: Domingo 22 de Febrero de 2009, 00:44 »
0
Hola fernandovallecordoba, te agradecería que utilices etiquetas de código.

Código: C
  1. void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]){
  2.  
  3.    prhs[0] = mxCreateDoubleMatrix(rowLen, colLen, mxREAL);
  4.    x = mxGetPr(prhs[0]);
  5.  
  6.    funcion(x);
  7. }
  8.  
Lo que pasa es que no has declarado x...

Código: C
  1. void funcion(double* x){
  2.  
  3.    double a;
  4.    a=x[2][2]
  5. }
  6.  
Aquí dices que x es un puntero a double, pero lo utilizas como double **x puesto que haces x[2][2].

Salud