I am passing an integer array of uint8 type from MATLAB to a MEX-function. How do I read these values? I tried using:
int *n;
n = (int * ) mxGetData(prhs[0]);
but the values come out as junk. I also tried
double *n;
n= mxGetPr(prhs[0]);
and in this case junk values also appear.
What is the solution to this?
Basically I want to read the integer value in the MEX-function but mxGetPr
returns double type.
Take a look at the demo MEX-function explore.c, which you can open in MATLAB using
edit([matlabroot '/extern/examples/mex/explore.c']);
In there you'll find a bunch of functions whose names all start with analyze_
and then a type (for example, analyze_uint8
). In those functions you'll see the output of calls to mxGetData
being cast to a particular C type, like this:
pr = (unsigned char *)mxGetData(array_ptr);
pr
now points to the real part of array_ptr
, an array of unsigned char
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With