|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
& j! x7 N5 f+ r$ R* i0 E
工作环境
/ L9 g- e3 P! J# E& S- 软件环境:Windows 7 Ultimate sp1、matlabR2012b 32bit- \& X* C+ R! Y8 K6 H: M- @" X
% p- u8 d2 X& ~
- y+ S+ {6 e. N3 Y# _3 ]Matlab 官方并没有自带svm工具箱,这就需要我们手动来添加SVM工具箱了,具体步骤如下:) D; }/ G! g+ Z2 ^; ~% o
" ^1 K+ G3 e7 ~# p w
Step1:下载SVM工具箱,http://see.xidian.edu.cn/faculty ... dexfiles/indexl.htm
3 d9 m5 p& w U V6 D& z. X! y; g, N" w1 u2 C; @
解压缩到matlab安装目录\toolbox' s4 n; m( \0 ]9 W$ g# |; `5 j8 U: u
$ G% M1 q* k, R5 S% ~; X5 |
Step2:安装,打开matlab点击set path---->add folder 然后把你的工具箱文件夹添加进去就可以了
0 K/ v3 U9 X& g, ^5 v& B( t3 Z5 w; `' k
Step3:路径加进去后在file→Preferences→General的Toolbox Path Caching里点击update Toolbox Path Cache更新一下。
9 ]- T) q6 s" d; M( M5 D
- x3 K ?0 |7 j* b' VStep4:测试,可以测试一下:在matlab中输入which svcoutput 回车,如果可以正确显示路径,就证明添加成功了。
7 d O( b& z& o! w! ?' ?2 I& a n4 H7 ~' y& r9 H" Q5 g3 W
编写测试脚本:' X* q' k. o2 {' s, @
8 K3 g H5 @/ m/ ?$ @
- % SVM工具箱测试代码,Create by pang
- clc
- clear all
- close all
- N = 50;
- n=2*N;
- randn('state',6);
- x1 = randn(2,N)
- y1 = ones(1,N);
- x2 = 5+randn(2,N);
- y2 = -ones(1,N);
- figure;
- plot(x1(1,:),x1(2,:),'bx',x2(1,:),x2(2,:),'k.');
- axis([-3 8 -3 8]);
- title('C-SVC')
- hold on;
- X1 = [x1,x2];
- Y1 = [y1,y2];
- X = X1';
- Y = Y1';
- % 其中,X是100*2的矩阵,Y是100*1的矩阵
- C = Inf;
- ker = 'linear';
- global p1 p2
- p1 = 3;
- p2 = 1;
- [nsv alpha bias] = svc(X,Y,ker,C);
- predictedY = svcoutput(X,Y,X,ker,alpha,bias);
- svcplot(X,Y,ker,alpha,bias);
- 6 o: g0 Q/ F% _3 @# X
( m* ] x' U0 w* |
+ ^$ P. Q5 Q2 P3 @! a: t* U
% R0 Z9 Y" d9 F$ ]
问题:. e4 ]2 R, v8 `5 N
# E5 J% d6 k* Q如果报错:Invalid MEX-file 'E:\1_Program_File\MatlabR2012b\toolbox\svm\qp.dll':
. c: C0 y( U R6 }E:\1_Program_File\MatlabR2012b\toolbox\svm\qp.dll is not a valid Win32 application.
- ]1 D% a$ y' p经过搜索看到有很多人出现这个问题,貌似是因为matlab版本比较高,解决办法:1、在Matlab的command中输入8 Y3 t8 V+ L( |5 o/ q) b/ n; T
' l+ N$ {0 _$ O6 P>> cd matlab安装路径\toolbox\svm\Optimiser
# `# @8 b. U6 P8 V>> mex -v qp.c pr_loqo.c
5 V6 \ e( d$ R- [ m- j$ s$ U2 ?- o5 \( r" _* a/ f; l, }) E
出现选项:6 R8 y: H! y1 d' t/ E0 ?$ I
+ e- [9 G O- A( q2 |' ~Select a compiler: 3 J3 A/ N2 N6 N8 d# l
[1] Lcc-win32 C 2.4.1 in E:\1_PROG~1\MATLAB~1\sys\lcc
0 T- ~4 Y! O1 c) M# W5 S8 P9 J6 z[0] None # b @& D, F- z4 g! H& X
* p' e! @& |, m, O; n, V- z i. F/ Z
选择1,Optimiser文件夹下看到两个文件:qp.dll.old和qp.mexw32;把qp.mexw32重命名为qp.dll覆盖svm文件夹下的qb.dll即可。
2 A9 Y/ M) P) u* J. r" T; S/ _3 a# p+ ~- G
|
|