QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5258|回复: 2
打印 上一主题 下一主题

求助:关于混合编程的错误,用mex编译就出现 - MATLAB 应用发布

[复制链接]
字体大小: 正常 放大
深叶子        

5

主题

7

听众

24

积分

升级  20%

  • TA的每日心情
    难过
    2014-9-22 12:14
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    自我介绍
    数学专业
    跳转到指定楼层
    1#
    发表于 2014-8-23 20:04 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    如何实现C语言与MATLAB接口,出现 E:\PROGRA~1\MATLAB\R2012\BIN\MEX.PL: Error: No file names given. .错误。
    6 @8 N8 K$ h* Z# z" [5 M这该怎么解决啊?) j5 ?- e  _3 W, d: F4 o
    》mex-setup
    , S: L6 A' x8 ?& [# t$ s    Usage: - `8 l  L. a% f" K
            MEX [option1 ... optionN] sourcefile1 [... sourcefileN] 7 v$ Q& d" w) n
                [objectfile1 ... objectfileN] [libraryfile1 ... libraryfileN] / b2 }& K. Y3 x2 J9 s

    # `  O6 C$ y. x$ Z6 e    Use the -help option for more information, or consult the MATLAB API Guide. / |$ l4 K3 |3 K) S1 H4 I

      w& z8 A( O# `1 [
    $ f$ i1 S3 s6 W1 A  E:\PROGRA~1\MATLAB\R2012\BIN\MEX.PL: Error: No file names given.
    & H- D! V/ I+ r; Y1 t" E 0 R# s' j1 J- q1 Q( L' y) S
    Undefined function or variable 'setup'.
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    到 ...
    madio        

    3万

    主题

    1312

    听众

    5万

    积分

  • TA的每日心情
    奋斗
    2024-7-1 22:21
  • 签到天数: 2014 天

    [LV.Master]伴坛终老

    自我介绍
    数学中国站长

    社区QQ达人 邮箱绑定达人 优秀斑竹奖 发帖功臣 风雨历程奖 新人进步奖 最具活力勋章

    群组: 数学建模培训课堂1

    群组: 数学中国美赛辅助报名

    群组: Matlab讨论组

    群组: 2013认证赛A题讨论群组

    群组: 2013认证赛C题讨论群组

    编译文件的时候后面要加上需要编译的文件的名字,貌似就是这个问题。Undefined function or variable 'setup'是不是mex后面没有加一个空格,你改成mex  -setup试试
    数学建模社会化
    回复

    使用道具 举报

    madio        

    3万

    主题

    1312

    听众

    5万

    积分

  • TA的每日心情
    奋斗
    2024-7-1 22:21
  • 签到天数: 2014 天

    [LV.Master]伴坛终老

    自我介绍
    数学中国站长

    社区QQ达人 邮箱绑定达人 优秀斑竹奖 发帖功臣 风雨历程奖 新人进步奖 最具活力勋章

    群组: 数学建模培训课堂1

    群组: 数学中国美赛辅助报名

    群组: Matlab讨论组

    群组: 2013认证赛A题讨论群组

    群组: 2013认证赛C题讨论群组

    网上找到这个总结的不错,你可以借鉴!
    % j! s9 I9 h1 R* u& O- T" D5 O" @% O
    在matlab上使用libsvm工具箱使用错误及解决方法汇总2 X7 V0 ~, Z; ?
    首先附上使用过程
    8 q) L; y# u1 |5 v3 `4 y" z3 Nstep1: 输入>>mex -setup
    & ^& j; ]+ C6 H7 G7 O. Y; i   step2:- B- r4 D" C; ?( |" M. ]5 g
       Please choose yourcompiler for building external interface (MEX) files:
    ; }, y8 O8 o' |9 `* A9 t  j   Would you like mex to locate installed compilers [y]/n?        是否让matlab自动检测编译器可以选y) C, b& H) N. j4 q
      step3:: n1 q+ v" q+ Q6 i/ S$ s
       Select a compiler:
    ( @* \7 |! ~7 {$ V, r, s+ `  d3 L5 n9 z/ M/ I+ g
    + D( Q( j1 F1 Z) b
         [1] Lcc-win32 C2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc
    7 t6 K$ U6 n$ X+ s# r     [2] MicrosoftVisual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0   |+ R1 v/ K2 C" X" ]( f# S5 x' e1 U
         [3] MicrosoftVisual C++ 6.0 in E:\Program Files\Microsoft Visual Studio ( g3 j7 d5 B3 v/ b
         [0] None 5 i: B' q) b' @/ o
         [1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行  - Q7 z3 ], ]  q3 U
         我选择了 【2】) @3 ^  T6 E: I/ o( N* O( E
        step4:7 y* ~9 j$ y9 ~. I3 m/ H
         Compiler: Microsoft Visual C++ 2008 SP1  
    ! n* T' W8 O8 {$ U8 u      Location:e:\Program Files\Microsoft Visual Studio 9.0
    , H3 S# V) i/ Z0 p. T      Are thesecorrect [y]/n?  路径是否正确 是的就选y
    9 l/ h) w, q# Y' m% m      如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。; Z; l4 g2 F7 O) p- E3 h  u
    Step 5   
    ( _. t) m. c. [Make
    2 h5 t! G$ c8 ]+ l后面就是:
      E. W2 f1 G: U; g$ Eload heart_scale.mat(此处无分号)  B$ {% o, E5 f) X$ G
    train = heart_scale_inst;  {' X# J: d  K
    train_label=heart_scale_label;
    1 k: I- B! Q  N" S  Ztest=train;# Y1 v8 b4 _/ p
    test_label=train_label;) i/ `2 o& c; U* U# ~% n- h; ]
    model=svmtrain(train_label,train,'-c 2 -g0.01');
    9 ^  j: s9 |$ t. d( A! T[predict_label,accuracy]=svmpredict(test_label,test,model);
    . s% F5 A" ]) p+ O5 Z7 k& n$ {6 u; ^% ^16 y0 Q+ o3 H, o& {# u
    make这一步报错
    6 b% K: q+ C' ^9 tError using mex (line 206)( F2 }+ s" B5 X$ F* k7 \3 n
    Unable to complete successfully.) M9 c" h9 T4 u/ f; M; t5 j6 H; m
    Error in make (line 1)5 O) {  F& o0 W) J
    % This make.m is for MATLAB and OCTAVE
    ' W, e. b$ p7 N. p! c& eunder Windows, Mac, and Unix; S$ d" L9 D3 N4 X
    在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~+ ~: @' \1 X1 m+ V: R& m9 j

    , }3 ^$ z9 i/ }% i: c2 还有一个make这一步出现的错误3 Make时出错
    % \1 M$ {% w1 ^1 A, \# R8 MUndefined function orvariable 'make'- Z% J! s" c) x! z) L
    解决方法为:
    % @" m; t8 d" Z设置matlab的path
    ) Y% X5 ^% d. H   方法file->set path->set subpath(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。)- ^6 k+ k: a( X. U/ o3 d
    还要记得把current folder 设为matlab所在的路径0 S+ ~6 `7 k6 Q" n) s) j
    3 输入load heart_scale.mat;报错
    ; }  J# W+ u0 g' Y* a) k0 z0 {! @/ WError using load
    / f: C) ^* ?; O/ z6 dUnable to read file heart_scale.mat;: No) ^9 e' ^8 d& a8 n9 _9 [
    such file or directory.5 j- c7 m8 E! f' }: Y! r" @' `
    这个问题是这样的,不应该有最后那个;   去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)
    ! |' i+ p2 G( N2 r43 l" u' G; s& d3 Z& R
    load 这一步报错
    5 h% Z3 |* m0 z??? Error using ==>load  j5 x* j) R+ n& e  Y' c# R
    Number of columns on line 2 of ASCII file D:\Program
    / Y# c) M: ~. }, m% D) DFiles\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale
    6 D  O" S2 _& Y3 k% Zmust be the same as previous lines.
    3 ]0 M* g- C4 x) A# ~官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines)" e# Y/ D% E6 r+ Z6 K! v
    一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()0 l: R( i' _/ ]/ V
    使用如下: [label_vector, instance_matrix] =libsvmread('filename');8 }( x, g% `/ J
    此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');
    & {* [6 }8 \% e! B. p0 O" s1 K注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst]=libsvmread('../heart_scale');../代表返回上层路径。7 Z, U) \0 {( z$ W/ J( Q2 S
    但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!
    ' D8 i/ D+ v% q: ^; d
    1 f, c8 X& \/ H8 b2 G) l; r3 a, s5 d5 S9 N9 l  |" I' A. N

    * I* h# J4 u  T! N& x4 R
    7 ?$ A! ?4 T) O0 i5 到svmtrain这一步报错$ C* K( h; T7 P% m; l7 |
    ??? Errorusing ==>svmtrain at 172/ s# g$ X7 E. {! P* J9 B
    Group mustbe a vector.: T: y& L6 K/ ?1 i5 t
    是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了
    0 w0 Y5 q) M8 Y在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱……
    数学建模社会化
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-10-12 01:17 , Processed in 1.478125 second(s), 62 queries .

    回顶部