c - 如何访问 Matlab mex 文件中的类值?

标签 c matlab class mex

这是我在 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 函数:mxGetPropertymxSetProperty。 (参见 this)只要您的对象是具有公共(public)属性的简单值类,它们就应该可以工作。否则,您必须使用 mexCallMATLAB 来访问数据。

关于c - 如何访问 Matlab mex 文件中的类值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23054821/

相关文章:

matlab - 如何计算不规则物体外接圆的直径?

java - instanceof 与 getClass( )

c - 使程序堆栈不可执行以阻止代码注入(inject)攻击

c - 使用较少参数调用 extern 函数

matlab - 如何在 MATLAB 代码中不使用 web() 的情况下发送 url 中的数据?

html - 带有嵌套 CSS 的类与 ID

java - Java 中的递归类加载器

c - 如何在管道的文件描述符上的线程 block 中进行 read() ?

C:带有父级和键盘的子级 I/O

matlab - 如何将 fir1 阻带滤波器转变为多阻带滤波器