这是我在 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 * /
有什么想法吗?
最佳答案
从 R2014a 开始,Matlab 矩阵库中有两个 API 函数:mxGetProperty
和 mxSetProperty
。 (参见 this)只要您的对象是具有公共(public)属性的简单值类,它们就应该可以工作。否则,您必须使用 mexCallMATLAB
来访问数据。
关于c - 如何访问 Matlab mex 文件中的类值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23054821/