欢迎来到天天文库
浏览记录
ID:8798837
大小:200.00 KB
页数:6页
时间:2018-04-08
《libsvm安装过程及错误提示》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、libSVM安装过程及错误提示libSVM是用C++语言编写而成的,它提供了和其它软件诸如Matlab的接口,所以如果想要在Matlab中使用,首先要在Matlab中对C文件进行混合编译,把C文件转换为Matlab可以执行的.dll文件。Matlab程序是一种解释执行程序,不用编译等预处理,程序运行速度较慢。C/C++语言是高级程序设计语言之一,它可对操作系统和应用程序以及硬件进行直接操作,用C/C++语言明显优于其它解释型高级语言,一些大型应用软件如Matlab就是用C语言开发的。通过把耗时长的函数用c语言实现,并编译成mex
2、函数可以加快执行速度。Matlab调用C/C++的方式主要有两种:利用MEX技术和调用C/C++动态连接库。libSVM在Matlab中的安装采用的是第一种方式。在Matlab与C/C++混合编程之前,必须先对Matlab的编译应用程序mex和编译器mbuild进行正确的设置:系统XP,Matlab版本2013a,C编译器为VS2010.1.下载libSVM下载链接:D:ProgramFilesmatlab2013atoolboxlibsvm-3.18matlab下载好保存到合适的路径,推荐Matlab安装目录下的to
3、olbox中2.解压文件3.将libSVM所在的文件夹加入Matlab的搜索路径,在菜单栏的SetPath中可以设置。Matlab执行程序时,如果在当前路径下没有找到所需的文件,会在搜索路径中继续寻找,所以要确保要使用的文件至少在搜索路径中。如果Matlab提示找不到文件,而文件又真是存在,很可能的原因是忘记将文件所在目录添加到Matlab的搜索路径下了。4.设置mex,这里要先将Matlab的当前目录切换到libsvm安装目录下的matlab子文件夹上。这一步在mex的设置时并不是必须的,而是在后面的步骤时必须的,但是为了防止
4、后面忘记,所以这里设置完搜索路径顺便设置当前目录。另外,现在的libsvm文件夹libsvm-3.12windows中已经有编译好的程序,可以直接使用,只需要把libsvm-3.12windows添加到matlab路径中即可,不需要编译的过程。但最好还是自己编译一遍,因为编译环境不同会导致一些不可预估的小问题,自己编译的过程是可控的。在命令窗口输入mex–setup,注意mex后面有一个空格,也就是正确输入后setup的颜色会变,如果没有输入空格,setup颜色为黑色而且运行命令会有错误提示。运行后出现下图的提示,是否选择M
5、atlab自带的编译器,选择n。matlab自带了C编译器Lcc-win32C,但是libsvm原始版本是C++实现的,因此需要C++的编译器来编译,这就是不用matlab默认编译器而选择其他C++编译器的原因。接下来会让选择使用哪种编译器,选择自己电脑上所带有的,这里使用的VS2010,第21号编译器。是否确定这个编译器,核对位置后确定:再次确定后出现编译完成的界面: 5.用make.m编译。可以看到make文件就在libsvm中的matlab子文件夹里,这里直接输入函数名称,Matlab会首先在当前目录下搜索函数,如果当前
6、目录没有,则会再在搜索路径中寻找,为了提高搜索速度,也为了防止其它同名文件的干扰,这里直接将我们所需的make文件所在的直接目录设为当前目录。在命令窗口输入:make6.编译完成,系统会生成svmtrain.mexw32,svmpredict.mexw32,libsvmread.mexw32和libsvmwrite.mexw32等文件,现在就可以调用libsvm的函数了。7.为了检验是否安装好,可用libsvm自带的测试数据进行测试。首先读入测试数据,如果你有.mat后缀的Matlab数据集,把它拷贝到当前路径中可以直接用loa
7、d读入即可。而libsvm中现在自带的heart_scale数据集是C++版本的(类标签1:第一个属性2:第二个属性…),不能直接load,需要用libsvmread来转换为matlab版本的(它们的区别在类标签)。下图是libsvm提供的heart_scale数据集,注意它的存放路径。使用命令[label_vector,instance_matrix]=libsvmread(‘C++版本数据集’);来转换数据类型,出现下图error:这里错误的原因是因为,当只给出文件名时,程序默认只在当前路径下寻找,而这里数据集并不在当前目录
8、matlab子文件夹下,所以有两种解决办法,一种是将数据拷贝到当前目录中,依然使用这条命令;另一种方法是将路径明确化,不要只给出一个文件名,给出文件存放的路径全称。所以,如果出现错误提示无法打开文件,可以先去排查一下自己是不是偷懒直接只写了文件名,而文件又不再当
此文档下载收益归作者所有