L! |( q2 [' m* j Use the -help option for more information, or consult the MATLAB API Guide. 0 T% {. O3 ~8 x& k
: c; v m# M9 f6 ~* I) Y! U
9 C* b, m- y+ b! g0 C' S
E:\PROGRA~1\MATLAB\R2012\BIN\MEX.PL: Error: No file names given. 6 m* u& z. m+ I% F , ]$ S. q$ o7 T4 o9 rUndefined function or variable 'setup'.作者: madio 时间: 2014-8-23 22:12
编译文件的时候后面要加上需要编译的文件的名字,貌似就是这个问题。Undefined function or variable 'setup'是不是mex后面没有加一个空格,你改成mex -setup试试作者: madio 时间: 2014-8-23 22:13
网上找到这个总结的不错,你可以借鉴! ; a, t$ }% ]2 A3 |, L; I. |0 {5 l
在matlab上使用libsvm工具箱使用错误及解决方法汇总 H, k! z7 G# p0 Q. b首先附上使用过程$ E9 G, K2 p+ g
step1: 输入>>mex -setup ; O: B2 {' m& |. }1 z" @+ n9 \9 w step2: 9 y/ W7 [8 n. |: A& g; n# H Please choose yourcompiler for building external interface (MEX) files: x/ ^- w' I2 M, J Would you like mex to locate installed compilers [y]/n? 是否让matlab自动检测编译器可以选y# s' d, M% k, X% z/ U
step3:3 ~1 W1 C( x( A/ _6 @. m
Select a compiler: . q) ~; o' c: Z I4 s/ C% I9 }( z1 v3 W
$ ~0 {! [- ^- Y [1] Lcc-win32 C2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc * o d7 L) K% }" u
[2] MicrosoftVisual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0 ( S1 l' |3 ?+ L) x+ X [3] MicrosoftVisual C++ 6.0 in E:\Program Files\Microsoft Visual Studio 7 D7 |: C9 y+ R( Z5 R1 ]; Q* V$ ` [0] None 4 {) b8 b# }" x7 ~
[1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行 0 u0 o5 b+ \" z/ P 我选择了 【2】! B* _2 D* s2 V5 h5 w
step4: 9 H' J+ D% E# [! w2 P& S; E( q; K Compiler: Microsoft Visual C++ 2008 SP1 * g( I: Y: |+ c/ k# F' `0 J Location:e:\Program Files\Microsoft Visual Studio 9.0 % a n, B% v8 b/ B0 [ Are thesecorrect [y]/n? 路径是否正确 是的就选y ' w! @, k% B% R% U: p/ d' f 如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。 3 o7 }2 t# _# X4 MStep 5 2 `6 W8 r8 B e) n: C4 bMake9 x' j8 n( p1 B( w
后面就是: ; N2 x$ e y8 x& T) z8 j7 Vload heart_scale.mat(此处无分号); W8 N& B8 B d' K$ R; e' _- ~2 [
train = heart_scale_inst;8 j" p( P4 A7 ^! H
train_label=heart_scale_label; - J; T( B/ U& k; \3 \, {test=train;/ i0 t v# i' A z2 i) j# C$ ^
test_label=train_label; 2 b' C0 {. `4 [! t4 `: F7 Kmodel=svmtrain(train_label,train,'-c 2 -g0.01');8 g/ e+ c% ?; v; P3 N* ^8 e8 Y
[predict_label,accuracy]=svmpredict(test_label,test,model); % m8 `: v. G D5 I, t2 g0 h1; i' v: E/ C6 W
make这一步报错 # Q% p3 k% S" z" t; `6 iError using mex (line 206) , n$ C- _4 T! L" IUnable to complete successfully." y& U# C* f8 \+ X! P" S
Error in make (line 1) + p! @7 ]6 C8 `! k; p9 {% This make.m is for MATLAB and OCTAVE ! {$ L. N9 E7 L; q4 s9 [under Windows, Mac, and Unix4 i( |" l$ g; b
在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~4 v! ]- i1 Z6 K# ~; I# z+ p
& G6 d( [. s+ S7 r# r7 Y. j6 x
2 还有一个make这一步出现的错误3 Make时出错6 o( G9 K/ j/ L
Undefined function orvariable 'make'$ ]- Z, W, E$ _
解决方法为: ?: |& Y" t3 m2 @3 t设置matlab的path 7 q$ p1 w% E0 i" h! a# ^
方法file->set path->set subpath(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。) - h( T: H) W/ N9 {3 _5 }还要记得把current folder 设为matlab所在的路径( M9 ]& r0 G( v* s
3 输入load heart_scale.mat;报错( r, j% U0 {( _2 G, z6 I) t
Error using load 3 }6 F* X) E* z! U4 P" g5 [7 MUnable to read file heart_scale.mat;: No Y5 @( c( X: z) d2 V4 V& F/ R1 s
such file or directory.7 H5 ~5 b+ c. l) n+ Z
这个问题是这样的,不应该有最后那个; 去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)6 x7 L! \2 R. H. c7 E' o
43 X- a5 @4 P8 `
load 这一步报错' S# B) {( X4 {
??? Error using ==>load1 O, w) K( n% m' e
Number of columns on line 2 of ASCII file D:\Program2 C7 O7 G5 S6 s3 d; W+ x, r
Files\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale/ h: `6 V4 P, E: E8 m8 S
must be the same as previous lines.. S$ U: o( ^. p9 _: a, \! i
官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines) ( U( g' E0 Y( c6 T! ?9 \& a4 F一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()1 v2 m9 P4 u' m* ]/ K
使用如下: [label_vector, instance_matrix] =libsvmread('filename');3 v# t% U* K) D. U' B3 }8 y
此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');% g8 v" Y2 C/ Y8 O! I
注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst]=libsvmread('../heart_scale');../代表返回上层路径。. C6 k: T8 Z' G9 W
但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!7 z0 `" s, C3 Y% h7 q
) ^ b6 h" t5 }2 e. Y
, @: L0 ]- m% y' i) y- o9 V/ ~" y5 l. x" {/ t1 o
+ I0 C- Q' P Q
5 到svmtrain这一步报错 7 E" _+ l" x B??? Errorusing ==>svmtrain at 1723 G' Y" B$ H& N1 U% r. a
Group mustbe a vector." x3 s0 ~ S9 ^1 |0 P+ ?* u: A
是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了# |8 H9 v1 n4 R: B4 Y
在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱……