楼主: majiadaxia
3421 2

[问答] MATLAB的M文件中C语言函数问题 [推广有奖]

  • 3关注
  • 2粉丝

硕士生

4%

还不是VIP/贵宾

-

威望
0
论坛币
1334 个
通用积分
0.3000
学术水平
5 点
热心指数
5 点
信用等级
5 点
经验
1087 点
帖子
92
精华
0
在线时间
104 小时
注册时间
2011-2-22
最后登录
2022-8-16

1论坛币
请问各位大侠,MATLAB的M文件中出现了一个C语言函数导致该文件在MATLAB中无法编译,请问如何解决这个问题?

关键词:MATLAB matla atlab Mat C语言 大侠 函数 C语言 如何

回帖推荐

matlab-007 发表于3楼  查看完整内容

要将用Matlab语言编写的函数文件编译成可独立执行的*.exe文件(即可脱离Matalab环境的执行程序),首先要安装和配置好Matlab Compiler,一般来说,在安装Matlab时就已经安装了相应版本的Matlab Compiler。只是不同版本的Matlab,其编译器的使用方法有一定的差异,这一点要引起一定的注意。 在确定安装好Matlab Compiler后,还需要对Compiler进行适当的配置,方法是在Matlab命令窗口输入: Mbuild –setup 然后 ...

本帖被以下文库推荐

沙发
majiadaxia 发表于 2013-5-21 13:11:10 |只看作者 |坛友微信交流群
已经找到答案了,直接在该函数所在目录下mex该函数,然后就可以调用整个M文件了

使用道具

藤椅
matlab-007 发表于 2015-2-1 20:05:21 |只看作者 |坛友微信交流群
要将用Matlab语言编写的函数文件编译成可独立执行的*.exe文件(即可脱离Matalab环境的执行程序),首先要安装和配置好Matlab Compiler,一般来说,在安装Matlab时就已经安装了相应版本的Matlab Compiler。只是不同版本的Matlab,其编译器的使用方法有一定的差异,这一点要引起一定的注意。
    在确定安装好Matlab Compiler后,还需要对Compiler进行适当的配置,方法是在Matlab命令窗口输入:
        Mbuild –setup
        然后根据提示执行相应的操作,使用者可根据自己计算机中现有编译器的情况选择合适的编译器,如VC++ 6.0、VC++7.0、Bland C的编译器等,目前Matlab好象还不支持VC++8.0(我计算机安装的就是VC++2005,Matlab就无法识别)。当然,如果你的计算机里根本就没有安装其他任何语言的编译器,也可选择Matlab自带的Lcc编译器,其实这个编译器对大多数用户已经够用了(我就是选择的Matlab自带的Lcc编译器)。
配置好编译器后,自然就是对自己编写的M文件进行编译了。
将M文件编译为独立可执行文件的语法是:
        >>mcc –m fun1.m fun2.m…..
        其中fun1就是最后的可执行文件的名称。
另外,也可通过采用命令开关-o指定编译最终目标文件的名称,如 mcc –m main.m –o mrank_main,就是将编译后的文件指定为mrank_main.exe。
编译后的生成文件根据编译器的版本不同而不同。具体的可参阅相关资料。
如果要在没有安装matlab的计算机上执行编译后的程序,首先要将MATLAB701toolboxcompilerdeploywin32中的MCRinstaller.exe安装到该计算机上(7.0以前的版本是mglinstaller.exe)。
    其次是要将“MCRinstaller.exe安装目录runtimewin32”这个路径添加到该计算机的环境变量中,添加的方法是:
右击“我的电脑”“属性”“高级”“环境变量”“添加”指定一个变量名,然后将上述路径复制到里面就可以了。
    第三步是将编译生成的相相关文件拷贝到同一目录下(当然其他目录亦可)。
    第四步是打开MS-dos操作窗口,进入到编译后的*.exe程序所在的目录,执行编译生成的*.exe文件即可。
    需要说明的一个问题:
    如果你的程序还附带有图片(如Version上的图标)、Web页面(如help文档),在编译的时候可能无法与M文件一起编译(因为我没有试过,也没有看到有关这方面的介绍),这没有关系,先在计算机上执行一次你编译后生成的独立可执行文件,这时在同一目录下会生成一个以你编译后的程序名+_mcr结尾的文件夹,这时,你只需要把与程序相关的图标和Web页面拷贝到该文件夹中的Matlabprogram下面的一个子目录(一般与用于编译的文件夹名相同)中即可。
from:http://www.ilovematlab.cn/thread-61004-1-1.html

   matlab设计算法很简单,但是在c上去实现就比较麻烦了,采用matlab自带的mcc链接工具可以方便快速地将需要的m
文件转换为c文件。将m文件转换为c文件有一个很重要的地方需要注意:m文件的开头必须是function[输出参数1,输出参数2,...]=m文件名(输入参数1,输入参数2.....)。否则的话,会提示"...is a script M-file and cannot be compiled with the current Compiler."

实例,将以下语句编写为m文件保存。
function[yfft]=tstmcc( );
y=[1,2,3,5,8];
yfft=fft(y,100);
在matlab下执行mcc -t -l tstmcc.m即可生成c和h文件。
from:http://blog.sina.com.cn/s/blog_3e4367660100otg4.html

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 02:41