Effacer les filtres
Effacer les filtres

Passing structures through mex

1 vue (au cours des 30 derniers jours)
Justin
Justin le 13 Jan 2012
Ok. I have a structure I want to have access to in my mex file (which I'm writing in C). The values are located in a field within a field (fieldception). Here's an explicit example:
I want to access:
sys.gen.window_size
Where window_size contains an array with the x and y size of a picture (i.e. sys.gen.window_size = size(picture)).
I know you're supposed to use mxGetField. Matlab help says I need to write the field name when sending a structure as an argument, but since the field is a subfield, would I just enter "gen.window_size?"
Or... should I just make life easier and rewrite the structure contain no subfields?
Thanks

Réponse acceptée

James Tursa
James Tursa le 13 Jan 2012
E.g., the following code snippet w/o any argument checking, assuming you pass in the structure sys as the first argument:
mxArray *gen, *window_size;
double *pr;
:
gen = mxGetField(prhs[0],0,"gen");
window_size = mxGetField(gen,0,"window_size");
pr = mxGetPr(window_size);
pr[0] and pr[1] are your window size values.
NOTE: gen and window_size are pointers to the original fields of your workspace variable. They are not copies, so be sure that you do not call mxDestroyArray on them when you are done.
  7 commentaires
Justin
Justin le 15 Jan 2012
Thanks again!
Jan
Jan le 15 Jan 2012
@Justin: Is the problem solved now? Then please accept the answer.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by