MATLAB外部程序接口技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第十一章MATLAB外部程序接口技术

11.1M编译器的功用和前提准备

11.2创建MEX文件

11.2.1MEX文件编译的验证

【例11.2-1】验证mex应用程序把C码文件编译成MEX文件的正确性。

(1)先将matlab\extern\examples\mex目录下的yprime.c文件复制到用户自己的工作目录(比方d:\mywork),然后将此文件名改为my_yprime.c。

(2)运行以下指令

cd d:\mywork

mex my_yprime.c

my_yprime(1,1:4)

which my_yprime

ans =

2.0000 8.9685 4.0000 -1.0947

d:\mywork\my_yprime.dll

〖说明〗

应该指出:mex的编译操作也可以象图11.2-1那样在DOS环境中进行,结果相同。

图 11.2-1 在DOS状态下进行编译操作

【例11.2-2】验证mcc应用程序把M码文件编译成MEX文件的正确性。

(1)先将matlab\extern\examples\mex目录下的yprime.m文件复制到用户自己的工作目录(比方d:\mywork),然后将此文件名改为my_yprime_m.m。

(2)运行以下指令

cd d:\mywork %把用户目录指定为当前目录

mcc -x my_yprime_m

my_yprime_m(1,1:4)

which my_yprime_m

ans =

2.0000

8.9685

4.0000

-1.0947

d:\mywork\my_yprime_m.dll

11.2.2由M文件创建C MEX文件的算例

【例11.2-3】先编写一个“判断方阵是否奇异”的M文件,然后由该M文件生成相应的MEX文件。

(1)在MATLAB的编辑器中,编写下面的函数文件exm1.m 。

[exm1.m]

function y=exm1(A)

[m,n]=size(A);

if m~=n;

error('An input matrix should be n-by-n.')

end

r=rank(A);

if r==m

disp('This matrix is nonsigular')

else

disp('This matrix is sigular')

end

(2)把该函数文件存放于用户目录d:\mywork下。

(3)在MATLAB命令窗中,运行以下指令对exm1.m进行编译。

mcc -x exm1 %编译m文件。

(4)调用MEX文件exm1.dll 进行计算

A=[1,0,1;2,1,0;4,1,4]

exm1(A)

which exm1

A =

1 0 1

2 1 0

4 1 4

This matrix is nonsigular

d:\mywork\exm1.dll

【例11.2-4】产生一个绘圆的MEX文件。本例演示:(A)M脚本文件不能被编译;(B)如何把脚本文件改写成函数文件;(C)改写后的M函数文件可被正确编译。

(1)原始的绘圆脚本文件

[circle.m]

clf;r=2;t=0:pi/100:2*pi;x=r*exp(i*t);

plot(x,'r*');axis('square')

(2)对该脚本文件直接编译将因错误而失败

mcc -x circle

??? Error: File "circle" is a Script M-file and cannot be compiled with the current Compiler.

Error in ==> H:\MATLAB53\toolbox\compiler\mcc.dll

(3)把脚本文件改写成函数文件

[circle_f.m]:

function circle_f(r)

clf;t=0:pi/100:2*pi;x=r*exp(i*t);

plot(x,'r*');axis('square')

(4)再对circle_f.m进行编译,将顺利通过

mcc -x circle_f

(5)运行生成的MEX文件circle_f.dll

circle_f(0.5)

which circle_f

11.3创建独立的外部应用程序

11.3.1M编译器的预配置

一对M编译器mbuild应用程序的设置

二配置正确性的验证

【例11.3-1】验证mbuild应用程序把C码文件编译成EXE文件的正确性。

(1)先将matlab\extern\examples\cmath目录下的ex1.c文件复制到用户自己的工作目录(比方d:\mywork),然后将此文件名改为my_ex1.c。

(2)在MATLAB指令窗中运行以下指令,将在d:\mywork目录下产生my_ex1.exe。

cd d:\mywork

mbuild my_ex1.c

(3)打开Windows的DOS窗口,并使d:\mywork成为当前目录,运行my_ex1.exe,若得到结果与图11.3-1相同,就表示mbuild应用程序工作正常。

图 11.3-1 在DOS窗口运行验证程序my_ex1.exe所得的结果

相关文档
最新文档