Mac OS环境下的libsvm在Matlab中安装

时间:2024-04-03 15:38:28

为了让大家少走弯路,一定要分享一下我的经验教训……

好啦~我们开始吧!

所需要的材料:Macbook、Xcode、Matlab2014R、libsvm-3.21optsPatch10.8.patchxcode7_mexopts
libsvm的原始版本使用C++写的,为了在matlab平台下使用,需要用C++编译器编译,生成类似于.m文件的.mexmaci64文件。这就是为什么我们要用到Xcode的原因了
Step1:首先在你的电脑上装上Xcode
Step2:观察下你的Xcode有没有Command Line Tool,最新版本的应该都是默认安装了的,没有的请自行百度安装啦。就是这个:
Mac OS环境下的libsvm在Matlab中安装
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文件夹加进去,保存就好了。
Mac OS环境下的libsvm在Matlab中安装
到此为止,改装的都装好了。
我们来测试一下!
转到libsvm-3.21文件夹下,会看到一个heart_scale文件,我们用这个文件来测试
Mac OS环境下的libsvm在Matlab中安装
在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