QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5141|回复: 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. .错误。! }) B( F0 `% e5 p, V+ v
    这该怎么解决啊?
    - S+ ^0 F. w) w2 d4 z; e》mex-setup
    $ h2 T& [, b  `    Usage:
    0 D5 @8 |; Z: s6 {3 P        MEX [option1 ... optionN] sourcefile1 [... sourcefileN] $ l# J1 _5 n; n! b2 t7 Q7 o
                [objectfile1 ... objectfileN] [libraryfile1 ... libraryfileN]
      O* m( l3 M) @' U - k* I, m3 O: W$ k# ]! W
        Use the -help option for more information, or consult the MATLAB API Guide. 3 G; s$ Q1 x- r9 V" c" K
    7 E( o3 b4 s/ E; m8 f
    $ u8 t- R+ \( c2 i
      E:\PROGRA~1\MATLAB\R2012\BIN\MEX.PL: Error: No file names given. 3 u, {! y* a2 j! [& ]. Z' ^& H/ l

    7 y1 i$ P- A6 }9 n6 QUndefined 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题讨论群组

    网上找到这个总结的不错,你可以借鉴!/ k7 a" p# |8 V' D8 s" A/ Q

    1 b2 O  _; Y( a在matlab上使用libsvm工具箱使用错误及解决方法汇总
    0 m0 o$ g$ d2 z  F首先附上使用过程
    # C5 a; B4 e7 W- W& w) q$ Nstep1: 输入>>mex -setup' m7 x9 ^$ A, \, }- X
       step2:3 _) i+ [: }9 M1 c# R
       Please choose yourcompiler for building external interface (MEX) files: ( N+ W0 |* L6 |1 C6 S8 M5 A/ ]
       Would you like mex to locate installed compilers [y]/n?        是否让matlab自动检测编译器可以选y
    ( R$ Z" f% z5 b. G2 G! b3 U  step3:
    3 _! N8 O, j# h& ]   Select a compiler:
    / l- t6 L; H0 G( }
    / H/ w, f# ^) G! ~' W! S
    % W8 |  p- O+ h5 h- m2 a) v     [1] Lcc-win32 C2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc - i1 c/ d# S2 k9 I5 f
         [2] MicrosoftVisual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0 % q- Y( a- A' r% V9 c6 s) G5 c' J: q
         [3] MicrosoftVisual C++ 6.0 in E:\Program Files\Microsoft Visual Studio - Y/ |0 h$ ^, |- j) {
         [0] None 1 x4 x% o/ r5 u1 M# r0 Q
         [1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行  . i7 g; [- p2 W/ @3 }! g1 g
         我选择了 【2】/ V  J0 z4 ^- k
        step4:0 d( X( h7 X' @6 L
         Compiler: Microsoft Visual C++ 2008 SP1  2 z" n3 S2 _( Q" V7 |4 C
          Location:e:\Program Files\Microsoft Visual Studio 9.0 ' V6 q8 D. g# O! V" @1 \- X
          Are thesecorrect [y]/n?  路径是否正确 是的就选y / s' i: R7 V) |8 @9 \& r
          如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。
    ' s6 J4 x8 c5 f+ E) k, Q/ u% WStep 5     X( _: H, U5 R: G
    Make; y( h" t! `% G1 }5 w7 O, m6 `
    后面就是:
    . @6 T4 H+ x/ ^* Sload heart_scale.mat(此处无分号)
    # ^2 K: l0 l  C. ]train = heart_scale_inst;
    1 K/ z! z" Z' j$ A8 G# y" mtrain_label=heart_scale_label;
    4 }/ h1 `& h9 e8 }" V5 itest=train;
    4 M$ F5 w3 F! p  D+ U/ Ntest_label=train_label;' V+ y' z8 |2 m8 ^% f7 Z  y
    model=svmtrain(train_label,train,'-c 2 -g0.01');$ y7 O& `" `" e. g/ S  z$ n
    [predict_label,accuracy]=svmpredict(test_label,test,model);
    ! o, `5 d/ u+ }4 a1 a1+ \1 W' l' R0 @. {: v
    make这一步报错, ?% N; \/ W7 l3 G$ Y
    Error using mex (line 206)
    1 ~" @: Y! _9 s5 t5 kUnable to complete successfully.& Q- g  ~2 j1 p% F. e6 k; h
    Error in make (line 1)) Q# t2 @6 k& j
    % This make.m is for MATLAB and OCTAVE( [' t6 ^, A! S6 Z# }
    under Windows, Mac, and Unix
    $ E7 |5 M2 m, F: L5 Q3 k8 V% S在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~
    % Z0 _" W; ]: Q0 ?
    ( q* A8 U1 j) S3 j9 q2 还有一个make这一步出现的错误3 Make时出错0 v+ m1 y4 l3 h, u: ?: M
    Undefined function orvariable 'make'
    # M# s: r# h4 t9 X解决方法为:
    & z! y& {; c: @( n设置matlab的path 5 P6 E) {" m2 S; i0 r+ A1 H5 U
       方法file->set path->set subpath(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。)
    2 D- y( ?( ]5 t5 W6 B1 A还要记得把current folder 设为matlab所在的路径/ t2 C# [: J* _1 D2 Z; _
    3 输入load heart_scale.mat;报错' Z! c( ?$ g5 z* S7 u9 X
    Error using load2 e3 J' J9 z" y3 a! s* Q' R
    Unable to read file heart_scale.mat;: No# H3 g' y$ Q6 O: W' j
    such file or directory.
      L9 \. L& K* e& f5 T6 v' {这个问题是这样的,不应该有最后那个;   去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)9 m9 l0 Q2 }* m  a9 ^0 D& d8 |
    4
    ! I' D3 C: O- Kload 这一步报错5 \/ `7 [. J  T: s% W$ F( p; u$ M
    ??? Error using ==>load
    2 h( j$ F$ {% oNumber of columns on line 2 of ASCII file D:\Program/ ~- p: {# O1 T0 y
    Files\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale
    " l) b3 L" R% d; d* X9 ~2 ?must be the same as previous lines.
    ( i" o9 e: i. e" E, V. x/ V( p官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines)
      e& n: U5 a. b& t$ x6 q% z: C4 ^一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()- s' W# k) N# ~
    使用如下: [label_vector, instance_matrix] =libsvmread('filename');
    0 K4 O! p* G1 M3 j( n9 P$ C& E& k# `此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');
    1 E* p- v7 b6 R" }% T8 j& H注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst]=libsvmread('../heart_scale');../代表返回上层路径。8 l) ^' U$ s2 O; C5 d
    但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!" }) @9 b& g; x; R5 O- @& v+ l6 K
    1 o( h1 o. Y( l

    # Z: Z6 a7 T, V0 j) ]" J; i' y: L# M+ ~/ w# o8 s3 P
    + Q' O. a3 R- x- d7 X
    5 到svmtrain这一步报错. r2 ]0 F$ @) l2 r  Y
    ??? Errorusing ==>svmtrain at 172* X8 s" c! _! m/ o0 _
    Group mustbe a vector.
    & O% T2 @' G: f& ~& i/ k是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了
    - N2 @- v" r% ~! v; @+ A; S6 X在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱……
    数学建模社会化
    回复

    使用道具 举报

    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试试
    数学建模社会化
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-5-30 17:09 , Processed in 0.389295 second(s), 63 queries .

    回顶部