Hola,
necesito ayuda urgente y he visto que hace unos cuantos meses hubo una pregunta igual pero no entiendo la respuesta, asi que me veo obligada a formularla de nuevo, a ver si algun alma caritativa con muchos mas conociemientos que yo, me soluciona en un plis plas el mayor de mis problemas ahora mismo.
Mi problema en cuestion es que llamando desde MATLAB a una funcion en C, necesito recuperar un array de 361x181 y no se como hacerlo al tratarse de punteros dobles.
os pongo mi codigo para que explicarme mejor,ok?
void mexFunction(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[])
{
int buflen = (mxGetM(prhs[0]) * mxGetN(prhs[0])*sizeof(mxChar))+1;
char *buf = new char[buflen];
mxGetString(prhs[0], buf, buflen);
if(strcmp("Simulate",buf)==0)
{
....
}
else if(strcmp("loss",buf)==0)
{
if(nrhs=6)
{
float freq=ZERO;
double *X[181];
double *Y[181];
double *Z[181];
double *pos=NULL;
struct SatVEC *sat;
double **L=NULL;
int ii=ZERO;
int jj=ZERO;
mwSize size_memo=65341;
double *new_pr=NULL;
freq=(float)mxGetScalar(prhs[1]);
prhs[2]=mxCreateDoubleMatrix(361,181,mxREAL); //AQUI!!!
new_pr=(double*)mxCalloc(size_memo,sizeof(double));
new_pr=X;
X=mxGetPr(prhs[2]);
prhs[3]=mxCreateDoubleMatrix(361,181,mxREAL);
new_pr=(double*)mxCalloc(size_memo,sizeof(double));
new_pr=Y;
Y=mxGetPr(prhs[3]);
prhs[4]=mxCreateDoubleMatrix(361,181,mxREAL);
new_pr=(double*)mxCalloc(size_memo,sizeof(double));
new_pr=Z;
Z=mxGetPr(prhs[4]);
pos=mxGetPr(prhs[5]);
sat->pos[0]=*pos;
sat->pos[1]=*(pos+1);
sat->pos[2]=*(pos+2);
L=loss(X,Y,Z,sat,freq);
mxSetPr(plhs[0],*L);
}
else
{
mexErrMsgTxt("Errosinput arguments");
}
return;
}
los parametros de entrada prhs[2],prhs[3] y prhs[4] son como he dicho arrays procedentes de MATLAB de 361x181. y me gustaria recuperarlos en C para pasarlos como parametros de entrada a la funcion loss, que la tengo definida como
double** loss(double *X[181],double *Y[181],double *Z[181],struct SatVEC *sat,float freq)
El codigo que he puesto, es el ultimo que he probado pero todos los anteriores me han dado el mismo problema y es que cuando recupero la direccion con mxGetPr me devuelve un puntero y mis matrices estan definidas como puntero a puntero....¿alguien sabe como podria solucionarlo?
muchas gracias y espero de todo corazon una respuesta
Rosa