環境: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
此時,應該就可以順利的運行啦。。。。