为了让大家少走弯路,一定要分享一下我的经验教训……
好啦~我们开始吧!
所需要的材料:Macbook、Xcode、Matlab2014R、libsvm-3.21、optsPatch10.8.patch、xcode7_mexopts
libsvm的原始版本使用C++写的,为了在matlab平台下使用,需要用C++编译器编译,生成类似于.m文件的.mexmaci64文件。这就是为什么我们要用到Xcode的原因了
Step1:首先在你的电脑上装上Xcode
Step2:观察下你的Xcode有没有Command Line Tool,最新版本的应该都是默认安装了的,没有的请自行百度安装啦。就是这个:
Step3:下载并安装补丁optsPatch10.8.patch
默认下载到Downloads文件夹下,不要动!
在Matlab中输入:
cd(matlabroot)
!unzip -o ~/Downloads/optsPatch10.8.patch
- 1
- 2
Step4:在Matlab中配置mex
在Matlab中创建一个编译C++的环境
输入:
mex -setup
- 1
如果成功了就好了,如果不成功,请这样做:
Step4.1:xcode7_mexopts.zip,然后解压
Step4.2:在Matlab下,输入:
cd( prefdir );
//看一下当前文件夹下有没有"mex_"打头的文件,如"mex_C_maci64.xml",如果有的话,移除该文件
cd( fullfile( matlabroot, 'bin', 'maci64', 'mexopts' ) );
mkdir mexoptsContentsOLD
movefile *.xml mexoptsContentsOLD/
movefile( '~/Downloads/xcode7_mexopts/*.xml', '.' );
mex -setup
- 1
- 2
- 3
- 4
- 5
- 6
- 7
原网址:http://cn.mathworks.com/matlabcentral/answers/246507-why-can-t-mex-find-a-supported-compiler-in-matlab-r2015b-after-i-upgraded-to-xcode-7-0
这样应该就成功了。
Step5:接下来安装libsvm
先从libsvm官网上下载最新的libsvm,然后放到Matlab的toolbox文件夹下(Application->Matlab->显示包内容->找到toolbox->把libsvm放进去)
Step6:进入libsvm的matlab文件夹
在Matlab中输入:
cd(matlabroot)
cd toolbox/libsvm-3.21/matlab
- 1
- 2
Step7:运行make
在Matlab中输入
make
- 1
该步骤就是将C++文件编译成matlab下可以运行的文件
看看文件夹下是不是有.mexmaci64文件生成啦
Step8:把libsvm加入到Matlab的工作路径下
这一步不能漏啊,否则出了libsvm-3.21这个文件夹就不能使用这些函数了呀,所以要把这些函数加入工作路径下,工作路径就是Matlab每次看到函数时都会去找其实现的地方呀。
在HOME标签页上点击Set Path;左侧点Add With Subfolders,把libsvm中matlab文件夹加进去,保存就好了。
到此为止,改装的都装好了。
我们来测试一下!
转到libsvm-3.21文件夹下,会看到一个heart_scale文件,我们用这个文件来测试
在Matlab中输入:
[heart_scale_label,heart_scale_inst]=libsvmread('heart_scale');
model = svmtrain(heart_scale_label,heart_scale_inst, '-c 1 -g 0.07');
[predict_label, accuracy, dec_values] =svmpredict(heart_scale_label, heart_scale_inst, model);
- 1
- 2
- 3
如果结果出现:
Accuracy = 86.6667% (234/270) (classification)
则成功啦!
参考资料:
http://www.jianshu.com/p/e0275a380803
http://apinetree.blog.51cto.com/714152/1560254/
http://cn.mathworks.com/matlabcentral/answers/246507-why-can-t-mex-find-a-supported-compiler-in-matlab-r2015b-after-i-upgraded-to-xcode-7-0