资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
libSVM安装过程及错误提示libSVM是用C+语言编写而成的,它提供了和其它软件诸如Matlab的接口,所以如果想要在Matlab中使用,首先要在Matlab中对C文件进行混合编译,把C文件转换为Matlab可以执行的.dll文件。Matlab程序是一种解释执行程序,不用编译等预处理,程序运行速度较慢。C/C+语言是高级程序设计语言之一,它可对操作系统和应用程序以及硬件进行直接操作,用C/C+语言明显优于其它解释型高级语言,一些大型应用软件如 Matlab 就是用C语言开发的。通过把耗时长的函数用c语言实现,并编译成mex函数可以加快执行速度。Matlab调用C/C+的方式主要有两种:利用MEX技术和调用C/C+动态连接库。libSVM在Matlab中的安装采用的是第一种方式。在Matlab与C/C+混合编程之前,必须先对Matlab的编译应用程序mex和编译器mbuild进行正确的设置: 系统XP,Matlab版本2013a,C编译器为VS2010.1. 下载libSVM下载链接:D:Program Filesmatlab 2013atoolboxlibsvm-3.18matlab下载好保存到合适的路径,推荐Matlab安装目录下的toolbox中2. 解压文件3. 将libSVM所在的文件夹加入Matlab的搜索路径,在菜单栏的Set Path中可以设置。Matlab执行程序时,如果在当前路径下没有找到所需的文件,会在搜索路径中继续寻找,所以要确保要使用的文件至少在搜索路径中。如果Matlab提示找不到文件,而文件又真是存在,很可能的原因是忘记将文件所在目录添加到Matlab的搜索路径下了。4. 设置mex,这里要先将Matlab的当前目录切换到libsvm安装目录下的matlab子文件夹上。这一步在mex的设置时并不是必须的,而是在后面的步骤时必须的,但是为了防止后面忘记,所以这里设置完搜索路径顺便设置当前目录。另外,现在的libsvm文件夹libsvm-3.12windows中已经有编译好的程序,可以直接使用,只需要把libsvm-3.12windows添加到matlab路径中即可,不需要编译的过程。但最好还是自己编译一遍,因为编译环境不同会导致一些不可预估的小问题,自己编译的过程是可控的。在命令窗口输入mex setup,注意mex后面有一个空格,也就是正确输入后setup的颜色会变,如果没有输入空格,setup颜色为黑色而且运行命令会有错误提示。运行后出现下图的提示,是否选择Matlab自带的编译器,选择n。matlab自带了C编译器Lcc-win32C,但是libsvm原始版本是C+实现的,因此需要C+的编译器来编译,这就是不用matlab默认编译器而选择其他C+编译器的原因。接下来会让选择使用哪种编译器,选择自己电脑上所带有的,这里使用的VS2010,第21号编译器。是否确定这个编译器,核对位置后确定:再次确定后出现编译完成的界面:5. 用make.m编译。可以看到make文件就在libsvm中的matlab子文件夹里,这里直接输入函数名称,Matlab会首先在当前目录下搜索函数,如果当前目录没有,则会再在搜索路径中寻找,为了提高搜索速度,也为了防止其它同名文件的干扰,这里直接将我们所需的make文件所在的直接目录设为当前目录。在命令窗口输入:make 6. 编译完成,系统会生成svmtrain.mexw32,svmpredict.mexw32,libsvmread.mexw32和libsvmwrite.mexw32等文件,现在就可以调用 libsvm的函数了。7. 为了检验是否安装好,可用libsvm自带的测试数据进行测试。首先读入测试数据,如果你有.mat后缀的Matlab数据集,把它拷贝到当前路径中可以直接用load读入即可。而libsvm中现在自带的heart_scale数据集是C+版本的(类标签 1:第一个属性 2:第二个属性),不能直接load,需要用libsvmread来转换为matlab版本的(它们的区别在类标签)。下图是libsvm提供的heart_scale数据集,注意它的存放路径。使用命令label_vector, instance_matrix = libsvmread(C+版本数据集);来转换数据类型,出现下图error:这里错误的原因是因为,当只给出文件名时,程序默认只在当前路径下寻找,而这里数据集并不在当前目录matlab子文件夹下,所以有两种解决办法,一种是将数据拷贝到当前目录中,依然使用这条命令;另一种方法是将路径明确化,不要只给出一个文件名,给出文件存放的路径全称。所以,如果出现错误提示无法打开文件,可以先去排查一下自己是不是偷懒直接只写了文件名,而文件又不再当前目录。这里将数据文件拷贝到当前目录下,重新执行命令,在工作区可以看到数据已经成功读入了:调用svm训练函数生成模型:用生成的模型进行数据预测,但是结果并没有出来,而是出来了像是函数使用说明似的东东,那应该是函数的格式没有使用正确。根据下面提示可以看出来,使用svmpredict函数时,允许的类型只能是输出参数3、输入参数不少于3或者输出参数1,输入参数不少于3,因此只写两个输出参数违反了函数的使用规则。重新修改了输出参数,可以出来结果。至此,libsvm安装测试完毕,在后续使用中应该注意文件存放路径与当前路径的问题。注:libsvm的matlab文件夹中带有README的关于函数的说明文档,可以阅读了解函数各参数的意义和使用方法。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号