环境:mac+matlab2016b破解版
在matlab中svm工具包运行出现问题:
(1)未定义函数或变量 'qp'
Undefined function ormethod 'qp'
这里出错是因为
qp是二次规划函数,用于求解SVM中的拉格朗日乘子,是采用的c++和matlab编程,所以需要mex一下,这里有一个mex在不同windowsOS下编译的结果,所以我们需要重新编译一下qp.dll
方法:svm的包下面有一个optimiser 文件夹,把currentDiretory目录改为optimiser目录,例如D:\ProgramFiles\MATLAB\R2007a\toolbox\svm\Optimiser,然后运行命令
>> mex -v qp.c pr_loqo.c
命令运行完毕后,你会发现原先的qp.dll变为qp.dll.old,还出现了qp.mexmaci64,我们把该文件改为qp.dll 复制到工具箱文件夹下。原先的工具箱文件qp.dll可以先改一下名字....
(2)如果此时解决了最好,如果解决不了,报错:错误使用mex 未找到支持的编译器或 SDK
说明你的电脑里没有c++的编译环境,mac电脑需要安装xcode,如果在app store安装是最新版的,可能与你低版本的matlab不兼容,所以安装xcode7.0版本的最好,这些版本在北邮人bt上都可以找到,或者通过我的网盘下载
https://pan.baidu.com/s/10Q583-s_ooEeuATaNfm8pg
安装之后就可以找到了
弄好之后,重启matlab,输入命令
mex -setup
如果不报错,则成功了。
(3)如果之前安装过较高版本的xcode,卸载之后,mex –setup还是显示之前的版本号,不兼容,所以这里需要更换一下xcode的版本
参考https://www.jianshu.com/p/8c8933eebdf3
此时,应该就可以顺利的运行啦。。。。