QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5256|回复: 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. .错误。
    5 f8 p$ s% f3 w+ ^6 P这该怎么解决啊?
    $ o$ J- [8 I+ p4 x, ~8 I. U- l》mex-setup3 i5 d  D* {$ z$ L9 {, O' P# Z! |$ X8 @
        Usage:
    ! h; O* F6 f, c        MEX [option1 ... optionN] sourcefile1 [... sourcefileN]
    1 O/ p) x; r8 w; s% E* k+ V            [objectfile1 ... objectfileN] [libraryfile1 ... libraryfileN]
    % q' P; B" ]' z9 m+ d ; f* A* {/ r$ Q4 m  b7 T
        Use the -help option for more information, or consult the MATLAB API Guide.
    - N% s2 C) W1 ~) n3 }* L+ e
    & x1 D) Z" ~" H6 \5 R& j 9 {: e% c  I8 O& t0 k# o
      E:\PROGRA~1\MATLAB\R2012\BIN\MEX.PL: Error: No file names given.
    ; b: Q) |; f3 `
    9 X& K0 b4 K- r9 v. rUndefined 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题讨论群组

    网上找到这个总结的不错,你可以借鉴!
    . D5 f# L. `+ n) M
    + F3 w" g" m  K在matlab上使用libsvm工具箱使用错误及解决方法汇总8 M) o8 ?3 f5 a' u3 ?+ x
    首先附上使用过程* l0 r( R3 [' @2 Q; o
    step1: 输入>>mex -setup
    ( [  t% P% h' a2 r% y" M, S   step2:: t1 t1 _' {3 N. Q: J7 i/ I" d0 @
       Please choose yourcompiler for building external interface (MEX) files:
    / y& p: `1 K" J+ Q5 g   Would you like mex to locate installed compilers [y]/n?        是否让matlab自动检测编译器可以选y
      e3 ~% C2 g2 |% {  step3:3 I* o. L) C' ]: Q
       Select a compiler:  A2 |; B, h, L& H* V  ]
      X; ]* v8 \4 a" e

      w- c: u% V# H: m( P4 b     [1] Lcc-win32 C2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc % n" O$ F! t" l
         [2] MicrosoftVisual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0
    0 F+ i7 C' g. W! D+ J$ g0 O     [3] MicrosoftVisual C++ 6.0 in E:\Program Files\Microsoft Visual Studio 8 J! M. C' U" P) {
         [0] None $ f9 v! B, j5 j9 m5 Q9 c# a4 V
         [1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行  
    % g; H$ {" _% R     我选择了 【2】
    ; x) O) p0 N  ]3 a* J    step4:' V6 `4 d+ e3 F( _+ @. h- |( B3 h# q+ }; m
         Compiler: Microsoft Visual C++ 2008 SP1  ; C3 v+ D; f' X8 R/ P
          Location:e:\Program Files\Microsoft Visual Studio 9.0
    / U. k* J6 g& _      Are thesecorrect [y]/n?  路径是否正确 是的就选y 6 K  Q: l9 a7 J* I- K% m
          如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。/ W9 [( R, F5 C4 X
    Step 5   - @% }8 p4 r5 B) w+ R" m
    Make7 Z9 K5 A# C5 K0 P' z/ Z: I
    后面就是:: R/ [5 O$ _+ O
    load heart_scale.mat(此处无分号)
    6 C* ?& E5 L9 J# Q8 o+ D# e' C* htrain = heart_scale_inst;
    ' i1 }: ~" G9 Q# _6 g0 |train_label=heart_scale_label;- `- \& `# e: K
    test=train;
    6 B" O  L, q" W) btest_label=train_label;
    7 K) c1 D0 r( h' E3 xmodel=svmtrain(train_label,train,'-c 2 -g0.01');# `6 U. Z- A: ]  R4 C
    [predict_label,accuracy]=svmpredict(test_label,test,model);) p+ V8 ^' v) I5 i4 W; G& z  u4 ~
    1
    ! k1 p/ m6 ?: E1 zmake这一步报错* e$ u" u% ]5 Z* d7 ~0 [" [* O, @
    Error using mex (line 206)
    ! a+ a6 Y: l' S- U" f5 p2 ]+ rUnable to complete successfully.9 l  U1 S* V  i# K+ {& J3 k
    Error in make (line 1)9 x% ]( f# |8 [
    % This make.m is for MATLAB and OCTAVE  y0 J3 Z; f- U1 d) ~& L1 k9 A
    under Windows, Mac, and Unix* Z1 r8 i* @! L! Q
    在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~* X: l4 L! b/ {3 `2 M8 i/ K

    + m! D7 {4 X" f& U( ~2 还有一个make这一步出现的错误3 Make时出错% b" I: W9 T6 ]' i
    Undefined function orvariable 'make'9 n' I% D8 [0 |  @/ {+ [
    解决方法为:
    - M# Y, b! r4 N2 r设置matlab的path & e  d7 S. ^+ J9 ^8 I: N
       方法file->set path->set subpath(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。)( {7 d- j- D& [/ s7 b/ V
    还要记得把current folder 设为matlab所在的路径  j5 p" v, n9 M) X3 z
    3 输入load heart_scale.mat;报错
    : \5 C; F( G0 _: P5 x- _9 K) t; v9 T2 vError using load
    6 h3 w; B* C! |# E) q# a* y" YUnable to read file heart_scale.mat;: No; v; g1 x( b  L( d
    such file or directory.
    ; G4 q: b# H6 v( n, b这个问题是这样的,不应该有最后那个;   去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)$ z- ~) M  u' y5 {) ?4 s( _  N
    4* y! |. t- u2 \! C
    load 这一步报错) {7 L* p" u7 J7 u6 z) S
    ??? Error using ==>load
    - m8 {  ~; o' {9 u: k# k" INumber of columns on line 2 of ASCII file D:\Program
    5 B/ M! @' m4 HFiles\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale" P' w4 W, l/ D# _- w- S
    must be the same as previous lines.
    ! @% t/ r6 T( H) X9 E5 r0 c2 Y官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines)* X  m8 ?% y4 `7 A3 `& g
    一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()
    2 s- T5 m# b% V; }使用如下: [label_vector, instance_matrix] =libsvmread('filename');0 Y/ q5 E& t& q/ h# V2 W9 L
    此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');9 P' [4 X5 k. Q% x5 T: j
    注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst]=libsvmread('../heart_scale');../代表返回上层路径。- d9 B* B2 {4 z. Y5 J
    但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!4 U& Y1 k; O$ G4 E' x
    ' K+ n, A' A) l  N, T, s

    , y. m' X8 N3 j$ k& {: S9 r& ~! N! s; Y' \3 W- n
    1 y+ [! c6 ?) V  @
    5 到svmtrain这一步报错- @6 g" Z: a* c' ~6 X
    ??? Errorusing ==>svmtrain at 172* G4 E0 z5 q; e) z5 X' D( g& E
    Group mustbe a vector.
    $ ?( C4 `' D: l, ~* S  S6 B! p是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了- c2 {( \! ~( Y3 x8 X* C0 Q4 z% v
    在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱……
    数学建模社会化
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-10-11 07:40 , Processed in 0.301706 second(s), 61 queries .

    回顶部