因为MATLAB的for循环运行速度太慢,程序想要计算1440744组最小二乘法拟合,用C语言读取并计算只需要不到20s,但是MATLAB运行却要200多秒,因此萌生了MATLAB调用C++的想法。
采用的版本是MATLAB 2012b,更新版本的因为取消了mexopts.bat,所以不推荐。
1. 设置编译器
记得安装Visual Studio 2010。安装完在MATLAB中运行mex -setup,设定:
[1] Microsoft Visual C++ 2010 in C:\Program Files (x86)\Microsoft Visual Studio 10.0
为默认的编译器。
2. 设置mexopts.bat
MATLAB运行mex -v。不建议比2012b更新的MATLAB版本的原因就在这里,因为更新版的运行mex-v的时候会报错。
在出来的运行结果中有这样一行:
-> Options file = C:\Users\TrueBlue\AppData\Roaming\MathWorks\MATLAB\R2012b\mexopts.bat
选中后面的路径,右击选择Open Selection,从而打开mexopts.bat
下面的设置和在Visual Studio 2010中的设置类似,主要修改了四处:
set PATH=%VCINSTALLDIR%\bin\amd64;%VCINSTALLDIR%\bin;%VCINSTALLDIR%\VCPackages;%VSINSTALLDIR%\Common7\IDE;%VSINSTALLDIR%\Common7\Tools;%LINKERDIR%\b