我怎么能从c++调用Matlab类方法在使用# include“mex.hpp”?

10视图(30天)
我想找到一种方法来调用Matlab c++类方法。我意识到这个解决方案 //www.tianjin-qmedu.com/matlabcentral/answers/360243-how-can-i-call-matlab-object-s-method-from-c 但我使用“墨西哥人。高压泵”而不是“墨西哥人。h”所以我没有访问权 mexCallMATLAB ()。
我知道有以下:
matlabPtr - >函数宏指令(u“functionName”,args);
但不幸的是通过对象作为第一个参数,建议在其他帖子必须使用matlab:数据::数组来保存情况如下所示。
#包括“mex.hpp”
#包括“mexAdapter.hpp”
#包括< iostream >
使用matlab:墨西哥人::ArgumentList;
使用名称空间matlab:数据;
MexFunction:公共matlab::墨西哥人:函数{
/ /指针MATLAB引擎
std::要查看< matlab::引擎::MATLABEngine > matlabPtr = getEngine ();
/ /工厂创建MATLAB数据数组
ArrayFactory工厂;
/ /创建一个输出流
std:: ostringstream流;
公众:
无效操作符()(ArgumentList输出,ArgumentList输入){
/ /移动对象为变量
数组obj = std::移动(输入[0]);
数组输入= factory.createArray ({1}, {inputVal});
数组args({工厂。createArray ({1,2}, {obj,输入})});
matlabPtr - >函数宏指令(u“方法”,args);
}
}
问题是,这叫时,对象和输入都被包装在一个单元阵列的技巧方法(对象,输入)不会像在典型的面向对象的matlab。
我现在的方法是调用封装matlab函数格式细胞之外的事情,但它会更好,如果我没有使用它。这需要一些如何使用函数宏指令的重新安排,但它的工作原理。
更新:
所以我想它在寻找如何返回多个输出所示: //www.tianjin-qmedu.com/help/matlab/matlab_external/call-matlab-functions-from-mex.html
在我的示例解决方案是这样叫它。
数组obj = std::移动(输入[0]);
std::向量<数组> args ({obj, factory.createArray ({1 1}, {inputVal}}); / /注意工厂,你可以创建任何类型的数组/标量需要让你输入
常量size_t numReturned = 0;/ /数量你返回的参数的方法
std::向量<数组>结果;
结果= matlabPtr - >函数宏指令(u“方法”numReturned, args);
这似乎工作,注意您取代“方法”与被调用的方法的名称。obj的Matlab对象被传递到c++。
1评论
圣扎迦利长
圣扎迦利长 2021年1月6日
编辑:圣扎迦利长 2021年1月6日
我想,答案在更新底部的问题。接下来的问题是如何得到的结果向量,并将它们放入到一个本机c++变量。

登录置评。

答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!