如何从C ++调用matlab成员函数?

时间:2017-10-09 06:19:13

标签: c++ matlab mex

使用mexCallMATLAB(nlhs, plhs, nrhs, prhs, "foo")命令,我们可以调用一个函数(这里是“foo.m”),这是在MATLAB中用C ++编写的。

但是如果“foo”是一个类的方法呢?

classdef Foo < handle
    ...
    function out = foo(obj, in)
        ...
    end
end

从C ++调用MATLAB类成员函数是否有任何直接或技巧?

2 个答案:

答案 0 :(得分:1)

在MATLAB中,您可以像任何其他函数一样调用类方法:

obj.method

相同
method(obj)

您可以使用mexCallMATLAB轻松地在MEX文件中创建类似的来电。如果prhs中的任何数组的类型为Foo,则MATLAB将首先在该类中查找函数&#39;方法

所以对于OP的例子:

mxArray rhs = <mxArray of type Foo>;
mcArray los;
mexCallMATLAB(1, &lhs, 1, &rhs, "foo");

答案 1 :(得分:-1)

Foo对象需要在某处实例化,因此本例中最简单的方法是使foo方法保持静态。

然后,您可以创建一个Matlab包装函数,该函数调用Foo.staticfoo(args)并使用mexCallMATLAB调用Matlab包装函数。