问题
最近使用c++调用MATLAB的算法时,算法使用了simulink的文件方式,调用mdl文件或者slx文件。结果通过将MATLAB转换为c++库的方式不能调到mdl文件,无法正常执行结果。故而改为使用MATLAB engine的方式调用,这种调用需要使用m文件源码。
而m文件中是自定义函数,这里就是要调用这个自定义的MATLAB函数。
解决方案
至于引擎的调用方法已经有很多,这里就不做描述。这里只是描述怎么让引擎找到这个自定义的m文件中的函数。
那么就是下面这句话
QString addPath_ = QString("addpath(genpath('%1'));").arg(path_ matlab)
其中,path_matlab为自定义m文件所在的目录路径
上面这句话的意思就是添加目录及子目录到搜索路径。这样engine就能找到自定义的函数了。
engine就是类似于将一行行的命令用字符串的形式在c++中组装好,再传给引擎调用。引擎执行后,结果存在了指定的地方,再获取结果,就OK啦。
编辑:myhappyandy