1 / 10
文档名称:

C语言环境中调用Matlab程序指南.pdf

格式:pdf   页数:10页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C语言环境中调用Matlab程序指南.pdf

上传人:drp539607 2015/9/21 文件大小:0 KB

下载得到文件列表

C语言环境中调用Matlab程序指南.pdf

文档介绍

文档介绍:C 语言环境中调用 Matlab 程序指南
甄梓宁
znzhen@

Matlab 在计算方面功能强大、编写简单,但是要运行 Matlab 程序必须装有 Matlab 并且用户
界面也不够完善,因此除了计算的其他部分采用 C 等更规范完备的语言进行编写是较好的选
择。本文就对如何在 C 程序中调用 Matlab 程序作说明。
在 C 程序中调用 Matlab 程序有两大类方法。第一种是调用 Matlab 引擎,第二种是将 m 文
件打包成 dll 文件在 C 语言环境下调用。前者虽然易于实现,可以实时监控程序的运行,但
是独立性差,需要安装完整版 Matlab,且每次调用都会启动 进程;后者则实现
复杂,调试麻烦,但只需安装 MCR(ponent Runtime),耗费资源较少。关于 MCR,
请见第四章的说明。至于两种方法需要在 C 环境中如何配置请见第五章。
而反过来若要在 Matlab 下调用 C 程序则一般使用 Matlab 自带的 mex 工具,在此不作介绍。

一、调用 Matlab 引擎
调用 Matlab 引擎可以在 WIN32、MFC 中使用,它的原理实际上相当于打开一个精简版
的 Matlab 然后往里面输命令。下面是调用 Matlab 中的加法程序 的例子。
先在 Matlab 的 work 目录下创建 文件并编写程序如下:
function s = add (a, b)
s = a+b;
在 C 程序中,首先打开精简版的 Matlab:(所需头文件,引用库等见第五章)
Engine *ep = engOpen (NULL);
编译运行后,会自动打开一个命令行监控窗口,输入 pwd 就可以看到当前的工作目录,
于是需要先将工作目录转换至存放 的目录:
engEvalString (ep, ”cd ..\\..\\work”);
engEvalString 是往 Matlab 里输命令的函数,显然我们的目标是成功运行:
engEvalString (ep, ”s=add(a,b)”);
当然,目前 Matlab 中并没有 a 和 b 两个变量,因此需要在 C 中初始化这两个变量并转
换成 Matlab 基本变量类型 mxArray,才能将它们输入到 Matlab 中。关于 mxArray,在
第三章会有详细说明。下面是对 a=1,b=2 的转换过程:
1
double aval=1, bval=2;
mxArray *a=mxCreateDoubleMatrix(1,1,mxREAL);
mxArray *b=mxCreateDoubleMatrix(1,1,mxREAL);
mxSetPr(a,&aval);
mxSetPr(b,&bval);
于是可以往 Matlab 里输入了:(双引号内是在 Matlab 里的变量名称)
engPutVariable(ep,"a",a);
engPutVariable(ep,"b",b);
运行 :
engEvalString (ep, ”s=add(a,b)”);