最近在做matlab 编好程序最后移植到linux qt上
1、第一个遇到的问题:
无论怎么弄,都显示打包期间出错,原因:没有安装与matab版本对应的vs版本,具体matlab支持的vs脚本,可以在日志中看或者,重新安装相应版本的vs就可以了。
参考:(14条消息) Window上,Matlab安装libsvm,libsvmtrain.mexw64无效,mex-setup 失败_TIME_LEAF的博客-CSDN博客
https://blog.csdn.net/yanhuatangtang/article/details/107838340 这个教如何看日志
2、从matlab转linux qt遇到很多问题,首先,有一些函数是matlab自带的,就不能够支持生成c++代码,Function XXXX not supported for code generation.百度了得加上这句话coder.extrinsic('cell2mat')现在还不懂为啥。原文地址:https://ww2.mathworks.cn/matlabcentral/answers/687153-function-xxxx-not-supported-for-code-generation。
https://stackoverflow.com/questions/25527248/matlab-coder-num2str-not-supported这个说了怎么移植num2str
3、Undefined function or variable 'XXX'. The first assignment to a local variable determines its class.这个错误是 在matlab的函数中,所有变量第一次使用之前都得初始化。比如temp = zeros(len,1);https://blog.csdn.net/youyingbo/article/details/107491585这篇博客是用的将vmd移植到qt
4、Output argument 'XXX' is not assigned on some execution paths. 出现这类错误是因为,输出参数并给定初始值,只需要在此程序的最前面加上参数的初始值就可以了。
原文地址:https://blog.csdn.net/qq_39915672/article/details/115701524
5、Unexpected MATLAB operator.
意思是你用的操作符不对,比如说不能用.的时候你用了,反正就是各种操作符号的用法没有符合正确用法,要看年你的具体问题了。比如你要对一个不是矩阵的东西,比如说cell来用.*这类。
意思是MATLAB不支持你所提供的运算符。MATLAB的命令窗口有指向出错行的链接,首先有没有输入错误,然后确认是否存在非ASCII字符,比如中文输入法中输入的字符。
6、Error: "Expected either a logical, char, int, fi, single, or double. Found an mxArray."
7、matlab中建立函数
function xx[out1,...outn]=函数名[in1,...,in2]
end
8、目前还遇到的问题:(1)load只在matlab中使用,不知道在c++上如何使用
(2)目前虽然添加了coder.extrinsic可以编译通过 但是不知道添加这个函数的含义是什么,还有也不知道实际中能不能够使用。
(3)还未真正理解移植的意义
生产一个例子参考:(14条消息) MATLAB R2017a的Coder工具使用实例-m语言转C++在linux Qt下运行(之一)_hustcxl的博客-CSDN博客
转换过去例子参考:(14条消息) MATLAB R2017a的Coder工具使用实例-m语言转C++在linux Qt下运行(之一)_hustcxl的博客-CSDN博客
参考:matlab与C/C++混合编程——在Windows/Linux上调用Matlab编译的动态库文件_sinat_18131557的博客-CSDN博客
2021.8.25
最后觉得不使用这条道路,因为matlab许多自带库函数不支持生成c,因此处理起来非常复杂,目前打算直接从c++进行开发。