Hi,
I'm trying to use the Matlab "mat" and "mx" C-libraries to use .mat-files inside of a Matlab function I'm compiling with the Matlab Coder. I can do this successfully for a scalar variable, but I'm having trouble getting non-scalar arrays in. Because coder.ceval can only return a scalar, my best guess of how to do this at the moment is to use the C "memcpy" function with a coder.wref input.
Here's what I've got right now, referencing a .mat-file "testmat.mat" that has one variable in it, a 1×4 double:
y = ones(1,4);SS_Table_File = coder.opaque('MATFile *');rr = ['r',char(0)];SS_Table_file = coder.ceval('matOpen','testmat.mat',rr);Xp = coder.opaque('mxArray *');XX = ['X',char(0)];Xp = coder.ceval('matGetVariable',SS_Table_file,XX);coder.ceval('matClose',SS_Table_file);yp = coder.opaque('double *');yp = coder.ceval('mxGetPr',Xp);coder.ceval('memcpy',coder.wref(y),yp,int32(4*8));
This currently compiles OK but then produces a segfault (or some other fatal error that crashes Matlab) when I run it.
Best Answer