QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5123|回复: 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. .错误。- T1 z3 N& v& L  r& q, W
    这该怎么解决啊?
    ; @4 A% O  Y: U+ B》mex-setup
    ( m; c7 J1 B! C; a% \7 l$ ~    Usage:
    " C' ^3 I! i, ^0 w        MEX [option1 ... optionN] sourcefile1 [... sourcefileN]
    / V9 J( ]; K& p8 x$ l$ |5 Q            [objectfile1 ... objectfileN] [libraryfile1 ... libraryfileN]
    , e* D4 s* a" g7 C7 g& k $ U9 f1 ?: d$ K, t6 Z
        Use the -help option for more information, or consult the MATLAB API Guide.
    ! k) Y) p$ \2 k6 j5 ^& h4 c% { ( m0 \/ D  x/ A% U
    : T; q3 O* x5 w5 L2 {; Z  J  e
      E:\PROGRA~1\MATLAB\R2012\BIN\MEX.PL: Error: No file names given. 4 v! S( n. L$ G
    + B' f& @. O* e
    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题讨论群组

    网上找到这个总结的不错,你可以借鉴!2 K/ V. B: Q5 i% l: A
    0 P7 V* v6 n  h0 r" E8 n5 J; p
    在matlab上使用libsvm工具箱使用错误及解决方法汇总
    $ @5 T4 {( b8 O  a首先附上使用过程
    1 V" k  _2 }! N, o4 Dstep1: 输入>>mex -setup" o( C: I; G. c3 m
       step2:2 q' V. [. E* p; D  ^
       Please choose yourcompiler for building external interface (MEX) files: 1 f; b) G: f- j' Q; n. ^
       Would you like mex to locate installed compilers [y]/n?        是否让matlab自动检测编译器可以选y
    , V) u& I1 o" m/ _+ H  step3:
    " F  t) A# h3 a/ M: F' X   Select a compiler:# x; K% n" y+ s5 X- O  F0 ~
    4 g3 p( N) w3 o0 N+ c* }' n) n

    5 X3 v  M! w! n5 C8 o  ^4 d3 W     [1] Lcc-win32 C2.4.1 in E:\PROGRA~1\MATLAB\R2010a\sys\lcc 6 M' F. a9 g, \6 |3 M
         [2] MicrosoftVisual C++ 2008 SP1 in e:\Program Files\Microsoft Visual Studio 9.0
    & @5 v( Y& }- ^" Z7 A1 s     [3] MicrosoftVisual C++ 6.0 in E:\Program Files\Microsoft Visual Studio 1 Q: w; s  W2 R) C5 g9 \) o
         [0] None
    ( u9 T7 f& _2 F  a6 [0 o     [1]matlab 自带的不能用 其他的如果有的话 就相应的选择就行  6 b9 |0 W* B0 G9 j: |, D) ^7 s/ [
         我选择了 【2】
    0 k% B8 U7 g: p, T    step4:) u+ j5 r& m! S. \7 o& n
         Compiler: Microsoft Visual C++ 2008 SP1  7 n3 t3 Y. d, R+ O
          Location:e:\Program Files\Microsoft Visual Studio 9.0 ! Y/ k$ `0 d& w
          Are thesecorrect [y]/n?  路径是否正确 是的就选y
    % m5 t7 D) C6 J6 M1 T      如果没有自动检测出来依次的话step2就选【n】就可以,再顺着提示下来。
    / ^! i, e6 X( Y( F  }Step 5   # x. w1 \( c" \, O4 m/ L9 K
    Make0 ?& S& h: m/ n8 T7 F! R# r$ E
    后面就是:; J2 E+ ^( R% i
    load heart_scale.mat(此处无分号)" m$ q- ~; S9 ~( z8 _
    train = heart_scale_inst;
    / f2 A( I+ F7 e! W. l, h$ ]train_label=heart_scale_label;
    ! {6 b! {/ F/ J0 gtest=train;
    8 f" ~3 H; {! n) a- w* I% [8 K) z/ Otest_label=train_label;) |3 A& \5 i) _3 O0 e9 @, u
    model=svmtrain(train_label,train,'-c 2 -g0.01');; v: [; V$ m4 G% ?# u
    [predict_label,accuracy]=svmpredict(test_label,test,model);' ~1 V* @  r( m" d/ t9 m; [
    1
    ( \! }$ X7 R$ b; ?make这一步报错
    0 H7 m% X3 b+ Q2 M8 u; }- aError using mex (line 206)
    1 v) H5 P( v) ]4 H1 X5 v; XUnable to complete successfully.
    0 x  g  b# l% U; aError in make (line 1)
    * ?, w1 i6 j  s8 e% This make.m is for MATLAB and OCTAVE# U" m* K! |1 J9 P
    under Windows, Mac, and Unix5 h8 \" k# P7 b- A; s) @
    在尝试了许多方法后,竟然是换了低版本的libsvm,搞定了~~~, Z3 \: ~/ x$ E% g6 F2 k7 p( Y6 ]
    9 D4 r% W1 e( z" a
    2 还有一个make这一步出现的错误3 Make时出错
    / k* G$ ?, }0 [+ ^Undefined function orvariable 'make'
      x3 o8 B: U) }6 S6 d解决方法为:. d* L" L) n# @8 _
    设置matlab的path
    0 z0 _, B/ R. u! h3 [   方法file->set path->set subpath(为什么要sub path因为只有这样才能将你要加的文件目录的子文件都加进去,否则只是加了你所要加的那个目录。)
    / ?9 O9 y! {$ h还要记得把current folder 设为matlab所在的路径1 r4 l) l5 o# p$ i
    3 输入load heart_scale.mat;报错! d7 N0 B! V( \# d) E
    Error using load; G! _) Q4 g' y: ]0 g7 H
    Unable to read file heart_scale.mat;: No
    0 i; H, p$ W9 l8 ~such file or directory.& D* q3 `" ]6 x
    这个问题是这样的,不应该有最后那个;   去掉分号就可以了。。。(粗心所致。。。不知道别人会不会像我这样。。。)
    1 Q% b2 L3 p, s3 W4
    : G- }1 j1 A3 d: a( Pload 这一步报错
    % h& B  k0 [9 R2 k??? Error using ==>load  P- H  t. B* b* R! V; `. @1 s
    Number of columns on line 2 of ASCII file D:\Program. T; z2 |: K; o) o9 h& n7 F
    Files\MATLAB2010\matlab\toolbox\libsvm-3.13\heart_scale
    # B4 J  l  M1 [1 jmust be the same as previous lines.  Q4 H5 E' N, i, }+ q3 x
    官方现在不给heart_scale.mat,给的都是VC++下的格式。一些旧版本的工具箱还可以找到mat文件,新版本都没有了。所以load会报错:heart_scalemust be same as previous lines)0 W( j  a/ _) X  F% V1 q3 b: Y
    一种解决方法是:使用给的一个函数,转化数据。此函数为libsvmread()- R2 I; m, D; `. u" y6 Q/ K
    使用如下: [label_vector, instance_matrix] =libsvmread('filename');% P4 I: }) b9 U) Z/ X5 y6 r  s
    此处为了跟官方统一名称可以[heart_scale_label,heart_scale_inst] =libsvmread('heart_scale');5 |% o, w8 f) m8 ]
    注意:由于heart_scale在libsvm-3.11目录下,不是在matlab下,所以直接用libsvmread命令会报错,要买改变当前路径,或者使用[heart_scale_label,heart_scale_inst]=libsvmread('../heart_scale');../代表返回上层路径。+ H- ]: \# W3 }) X  ^. P2 D
    但是最简单的方法是,找到旧版本工具箱的mat文件添加上即可!
    & G7 s/ g4 \3 O2 @: a+ r" T* o: [& l1 V4 r. e# F

    ( m6 u/ ]: ~; V. f6 @0 d% D% ^1 I) T: N
    6 V$ k9 Z7 T) R; o3 ^( C$ f
    5 到svmtrain这一步报错) U, e! Z" s7 L1 ?9 u0 S8 m/ Z
    ??? Errorusing ==>svmtrain at 172
      L5 Z, [+ D5 y5 e" F5 T: b. yGroup mustbe a vector.7 f4 x! }% F6 @4 P! Y1 O! v3 Y+ K
    是因为在添加工具箱的时候没有添加完全,file-Set Path-Add with Subfold ...添加好路径就可以了
    : u! x1 @% Y1 W: s. f# I在使用过程中到目前只遇到这些错误~现在也只是会简单的用libsvm工具箱……
    数学建模社会化
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-19 13:31 , Processed in 0.434152 second(s), 62 queries .

    回顶部