0 c4 m' a, y7 G9 P Use the -help option for more information, or consult the MATLAB API Guide. , H5 v8 C/ k+ v+ }7 v# G x# m 7 f t! D) F+ A9 B2 u h6 V. T) L+ L' k
E:\PROGRA~1\MATLAB\R2012\BIN\MEX.PL: Error: No file names given. # Y+ G* U1 Y3 U& C9 @4 w- Y! O# C0 V3 u
/ k+ {0 p: E0 Y, Y: M1 b+ eUndefined function or variable 'setup'.作者: madio 时间: 2014-8-23 22:12
编译文件的时候后面要加上需要编译的文件的名字,貌似就是这个问题。Undefined function or variable 'setup'是不是mex后面没有加一个空格,你改成mex -setup试试作者: madio 时间: 2014-8-23 22:13
网上找到这个总结的不错,你可以借鉴! . h; s6 M# P. m; j : C, G& W& a: g e% [ s在matlab上使用libsvm工具箱使用错误及解决方法汇总 $ p& L' ^8 @+ O' {7 Q. Q6 S首先附上使用过程 2 [* L% L8 Z; o* B9 i1 {step1: 输入>>mex -setup % `$ T+ Q# e/ m- a2 _/ N step2:3 P3 ?# r( v0 o. K. B$ W9 g
Please choose yourcompiler for building external interface (MEX) files: 1 v# h0 E. i2 ?7 |; G4 e% A) H
Would you like mex to locate installed compilers [y]/n? 是否让matlab自动检测编译器可以选y4 Y* ^# Y) X% O3 `8 g2 S
step3:; n6 g0 ~ r. o2 f
Select a compiler:% c, A* C, k0 z9 J* A
0 t, E: `9 ?1 a9 J9 r- z
$ v: ]8 }' T% [+ u& j) t) z/ T' Y [1] Lcc-win32 C2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc 3 X; a( Y; l8 O/ n, E [2] MicrosoftVisual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0 3 {! ~2 O( I3 o Z
[3] MicrosoftVisual C++ 6.0 in E:\Program Files\Microsoft Visual Studio - ~ B* H0 G: W4 O% t v4 A
[0] None ! I, t- T/ _4 [# f! p1 E7 ]
[1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行 4 O8 H) J P) | 我选择了 【2】2 ~2 H& O! E6 J$ I
step4:8 I8 h* O) u# z% ~* M# ?
Compiler: Microsoft Visual C++ 2008 SP1 W1 |8 X! I3 C Location:e:\Program Files\Microsoft Visual Studio 9.0 8 Y% @8 ^0 a- c, y1 a
Are thesecorrect [y]/n? 路径是否正确 是的就选y " \, d5 c- B0 x# i
如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。 # e5 p) X( F; fStep 5 ' g* s0 U4 Y6 G1 u+ T- `* H
Make- |: A$ p5 n3 W C% [; K( F2 K7 M
后面就是: - U S2 d$ i3 I* W+ u( o% Qload heart_scale.mat(此处无分号)( `! {% D. d3 @; ]7 V
train = heart_scale_inst; 4 r3 ^4 ]/ |% s* D Btrain_label=heart_scale_label;* u; b' Y$ l4 a% n0 ~1 B3 c
test=train; 2 C4 J/ q$ R! ~9 @' q C- Y* etest_label=train_label;- X* t" ?3 K# {8 `
model=svmtrain(train_label,train,'-c 2 -g0.01');1 Y5 b! l$ @% |+ M* b- o
[predict_label,accuracy]=svmpredict(test_label,test,model); 3 {' S+ V8 `+ [* c8 ~& y. \( x1 s3 v1 u, _: y% v
make这一步报错 : i' Q% B9 l, j* m# n* O& lError using mex (line 206) 2 H. x5 B1 e1 m2 n# s# DUnable to complete successfully.3 }/ N6 d% y9 y( ^
Error in make (line 1)2 f: B% O, p3 q P/ @" ^9 g
% This make.m is for MATLAB and OCTAVE$ g3 C& O+ A8 C# T8 Y
under Windows, Mac, and Unix' b) W8 _ {7 s
在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~. O) P1 S. g! P" ~' G
! u# ^1 k2 ^2 u6 Q
2 还有一个make这一步出现的错误3 Make时出错) W* e% N# ~1 ~0 ~8 E* P6 p
Undefined function orvariable 'make'% d1 |/ h: L* W' J
解决方法为: 1 C3 i! Q; ~( h$ S& l: [设置matlab的path 6 _* i* X$ F! J# B" R 方法file->set path->set subpath(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。) 8 c% E' t) ?$ V" ]- V还要记得把current folder 设为matlab所在的路径; B y- \9 }+ _! J, [
3 输入load heart_scale.mat;报错 6 l5 L7 l' ]/ I" I6 a' qError using load 5 F* A6 v( W3 n: K L$ L- jUnable to read file heart_scale.mat;: No t( e' f# u8 o) [8 K% F3 y# f
such file or directory. 7 F; Z2 o8 {/ e: ]; }. @; S这个问题是这样的,不应该有最后那个; 去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)/ z5 c3 M$ r9 O( s: c+ J# Y: w& u: K
4" F# d/ V8 O$ ]5 }8 m$ Z" t
load 这一步报错 - e+ B# _+ B2 ~2 Z9 {??? Error using ==>load % D6 [ Z: x3 U4 m0 \Number of columns on line 2 of ASCII file D:\Program ! z, i E7 y2 m" m$ GFiles\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale2 j* j Y ~% G6 X" Z' {% u, c) P
must be the same as previous lines. ) C( d$ d, v$ L9 I' L4 A官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines) 0 p: y" H9 Z. z9 j6 E! d一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread(); {7 ?% E, d- y8 X o) w
使用如下: [label_vector, instance_matrix] =libsvmread('filename');8 W' ]. ^, E6 }9 L0 @/ {
此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale'); $ J: c' l# W' w注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst]=libsvmread('../heart_scale');../代表返回上层路径。; X* o- q0 j# Z4 b( H& J8 T0 e5 Y8 A9 H- |
但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可! ! d2 E2 Q: s2 H0 \1 _( r ' B7 y2 L. |% j4 v7 I. ?2 }0 E" ]6 q- ^- T1 Q% c