bekam ich eine typische CPP-Funktion in Matlab mex mitzuordnen float * oder int * zu mxArray
#include "mex.h"
void func (int * rowvec, int * colvec, float * valvec, int * nnz){/*fill arguments*/}
void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
wo ich überprüfen, ob in Ich habe genug Ausgangsgrößen verfügbar
if(nlhs != 4) {
mexErrMsgIdAndTxt("MyToolbox:arrayProduct:nlhs",
"Four outputs required.");
}
Außerdem in dieser Funktion deklarieren ich vier Variablen:
int *rowvec; /* 1st output array */
int *colvec; /* 2nd output array */
float *valvec; /* 3rd output array */
int *nnz; /* 4th output scalar */
Sie werden in einer Funktion definiert/gefüllt werden:
func(rowvec, colvec, valvec, nnz) //arguments get filled with values
Jetzt möchte ich, so etwas tun:
plhs[0] = rowvec;
plhs[1] = colvec;
plhs[2] = valvec;
plhs[3] = nnz;
Es leider vier verständlich Fehler wirft, denn das sind zwei verschiedene Datentypen. Die Fehler sind wie folgt:
cannot convert ‘int*’ to ‘mxArray* {aka mxArray_tag*}’ in assignment plhs[0] = rowvec;
Wie kann ich das beheben?
Ich schreibe dies in Matlab, aber es ist eine C++ - Datei, ich habe es nach diesem Tutorial getan: http://de.mathworks.com/help/matlab/matlab_external/standalone-example.html – SemtexB