1、总体要求
我的matlab版本是 r2020b、matconvnet-1.0-beta25、visual studio 2022。笔记本安装,没考虑GPU。建议vs的版本尽量比matlab版本低。
1.1 完美解决方案:
低版本Visual Studio与高版本Matlab,先装vs 后装matlab! 比如:Matlab 2020b or 2021b配合Visual Studio 2017,装完直接就能使用。
1.2 我的情况:
笔记本上有matlab没有vs。
1)安装 matconvnet-1.0-beta25 ,
作用:使用Matlab跑深度学习的项目,需要安装MatConvnet
2)安装visual studio 2022
作用:matconvnet要正常使用,需要编译工具,建议vs的版本尽量比matlab版本低一些。否则会遇到很多问题,比如我,安装好高版本的vs后才知道踩坑了,衰~ 不过最后还是跳出来了,后面附了解决方案。
2、具体步骤
1)下载 matconvnet-1.0-beta25。
解压后,放到matlab 的toolbox文件夹下面,我的路径是D:\matlab2020b\toolbox 。其实放哪都可以,matconvnet是个工具箱,就放toolbox里面了。
2)在matlab命令行中,输入 mex -setup。
提示我没有编译工具,就下载安装了visual studio 2022。
安装后,提示我还是找不到编译工具。用mex -setup -v命令,查看了详细信息,大概 意思就是找不到vs2015、vs2017、vs2019。晕~ 我装的是VS2022呀!
原因:先安装的Matlab后安装的Visual Studio,mex -setup 命令无法找到计算机中的Visual Studio编译器,因此需要进行一些修改才能成功配置编译器。在Matlab的安装目录 …\MATLAB\R2020b\bin\win64\mexopts 目录中有各种编译器的配置文件,Matlab就是依靠这些xml文件和编译器建立关联,对应编译器的 .xml 文件会到windows系统的注册表中读取编译器和SDK的路径信息,之所以 >>mex -setup 命令无法找到编译器就是因为注册表中缺少编译器和SDK的路径信息。
以上两个文件的构建思路和现成可用的文件获取方式参考:低版本Matlab(2020b)与高版本Visual Studio(VS2022)实现M、C/C++混合编程(调试)_读书人不偷东西的噢!的博客-CSDN博客
3) 在matlab中打开vl_compilenn.m文件并运行,路径参考:matconvnet\matlab\vl_compilenn
结果报错:
matlab中在编译过程中会出现“'cl.exe' 不是内部或外部命令,也不是可运行的程序或批处理文件。”
主要是由于VS 2017或者更高版本中cl.exe路径发生变化。
只需要修改vl_compilenn.m中的第646行 cl.exe实际路径即可。
cl_path = fullfile(cc.Location, 'VC', 'Tools', 'MSVC', '14.10.25017', 'bin', 'Hostx64', 'x64');
每个人可能实际路径有略微差异,按照自己的实际情况写即可。
4)运行wanglingrong 代码文件夹中,运行demo_fpocs_cnn,不报错即可。
至此,环境配置成功。