下载CPD工具包
链接:https://github.com/engixy/CPD
使用CPD工具包
1)下载得到压缩包CPD-master.zip,将该压缩包解压,如下图所示:
2)打开matlab找到这个文件夹,选择CPD-master–>右击—>添加到路径–>选定的文件夹和子文件夹
3)打开cpd_make.m,编译运行,此时报下图中的错误:
原因分析:
点击fileparts,打开一个提示框,根据note可以知道,fileparts命令的第四个输出量versn已经被舍弃了,事实上,这个参数在后面也没有被使用。
解决方法:
将文件cpd_make.m第23行
psave=pwd; p = mfilename('fullpath'); [pathstr, name, ext, versn] = fileparts(p);
改为
psave=pwd; p = mfilename('fullpath'); [pathstr, name, ext] = fileparts(p);
即可。
4)再次编译运行cpd_make.m,之前的错误已经解决,可是出现一个新的错误:
原因分析:
根据命令行窗口的提示可以看出,两次编译均失败。这个报错的原因是matlab的版本太低了。MATLAB运行C语言时,经常会碰到C编译器不支持的问题。找到MATLAB安装文件夹,在路径C:\Program Files\MATLAB\R2014a\bin\win64\mexopts(视具体情况而定)中只有msvc2008,msvc2010,msvc2013三个XML文档。也就是matlab的版本与支持的C编译器的版本相关,只有版本合适才能完成编译。
参考链接 https://blog.youkuaiyun.com/mrlishi/article/details/81228518
解决方法:
改用版本更高的matlab,我用的matlab2020b。
5)再次编译运行cpd_make.m,错误仍然没有解决,执行命令mex -setup,报错如下:
错误使用 mex
未找到支持的编译器或 SDK。
您可以安装免费提供的 MinGW-w64 C/C++ 编译器;请参阅安装 MinGW-w64 编译器。有关更多选项,请访问http://www.mathworks.com/support/compilers/R2016b/win64.html。
原因分析:
matlab编译c程序失败的原因是缺少c编译器。
解决方法:
在命令行窗口的错误提示处点击MinGW-w64 C/C++ ,按照提示安装好MinGW-w64 C/C++ 编译器。
测试:
在命令行窗口输入mex -setup,出现以下提示:
6)测试:
(1)编译运行cpd_make.m成功,提示如下:
(2)在examples文件夹中,任选一个,此处编译运行cpd_Nonrigid_example5.m,运行结果如下: