Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
743 views
in Technique[技术] by (71.8m points)

matlab - how to read an integer array in MEX-function

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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...