这是我在Matlab中使用.m文件的简单虚拟类。
function obj = dummy(varargin)
if nargin~=1
error('nothing to do here')
return
end
obj = init_fields;
obj = class(obj, 'dummy');
obj.file = varargin{1};
end
function obj = init_fields()
obj.file = [];
end
>> a = dummy('file.name');
我现在可以在其他.m函数文件中访问a.file
。例如something = newfunction(a)
但是如何在C编写的MEX函数中访问obj.file的值(我可以fopen(" file.name"))?
mxArray *pa;
mexPrintf("%s\n", mxGetFieldNameByNumber(prhs[0], 0));
pa = mxGetFieldByNumber(prhs[0], 0, 0);
mexPrintf("%s\n", pa); /* this don't work */
mexCallMATLAB(0, NULL, 1, &pa, "disp"); /* this works * /
有什么想法吗?
答案 0 :(得分:0)
自R2014a起,Matlab矩阵库中有两个API函数:mxGetProperty
和mxSetProperty
。 (参见this)只要您的对象是具有公共属性的简单值类,它们就可以工作。否则,您必须使用mexCallMATLAB
来访问数据。
答案 1 :(得分:0)
我找不到任何方法来访问MEX文件中的类值。 我的解决方法是使用.m函数作为包装器
function out=dumdum(obj,cmd)
out=mexfnc(obj.file, cmd);
end