刘卫国全套配套课件matlab程序设计与应用第3版第13章matlab外部程序接口技术

上传人:E**** 文档编号:100544298 上传时间:2019-09-24 格式:PPTX 页数:32 大小:419.46KB
返回 下载 相关 举报
刘卫国全套配套课件matlab程序设计与应用第3版第13章matlab外部程序接口技术_第1页
第1页 / 共32页
刘卫国全套配套课件matlab程序设计与应用第3版第13章matlab外部程序接口技术_第2页
第2页 / 共32页
刘卫国全套配套课件matlab程序设计与应用第3版第13章matlab外部程序接口技术_第3页
第3页 / 共32页
刘卫国全套配套课件matlab程序设计与应用第3版第13章matlab外部程序接口技术_第4页
第4页 / 共32页
刘卫国全套配套课件matlab程序设计与应用第3版第13章matlab外部程序接口技术_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《刘卫国全套配套课件matlab程序设计与应用第3版第13章matlab外部程序接口技术》由会员分享,可在线阅读,更多相关《刘卫国全套配套课件matlab程序设计与应用第3版第13章matlab外部程序接口技术(32页珍藏版)》请在金锄头文库上搜索。

1、第13章 MATLAB外部程序接口技术 13.1 MATLAB与Office软件的混合使用 13.2 MATLAB数据接口 13.3 MATLAB与其他语言的接口,13.1 MATLAB与Office软件的混合使用,为了在Word环境下调用MATLAB的计算功能,需要调用MATLAB的Notebook软件工具,它为Word提供M-Book.dot模板。利用该模板创建的Word文档通常称为M-Book文档。 1Notebook的安装与启动 notebook -setup,13.1.1 在Word中使用MATLAB,2Notebook菜单项 M-Book模板定义了Word与MATLAB进行通信的宏

2、指令、文档样式和工具栏。,3单元的使用 在MATLAB Notebook中,凡是在Word与MATLAB之间进行传递的内容称为单元(cell),它是Notebook与MATLAB交互的基本单位。 (1)输入输出单元 定义输入单元的方法 输入单元执行后产生蓝色的输出单元。 (2)自动初始化单元 (3)单元组,4计算区 计算区(calc zone)是一个由普通Word文本、输入单元和输出单元组成的连续区,用于描述某个具体的作业或问题。在计算区里,用户可以根据描述问题的需要,安排段落、标题、分栏,而不受计算区外的有关格式的约束。 定义计算区的方法,13.1.2 在Excel中使用MATLAB,通过S

3、preadsheet Link,可以在Excel工作区和MATLAB工作空间之间进行数据交换,也可以使用插件方式在Excel中调用MATLAB的算法。 1Spreadsheet Link的安装与启动,2Spreadsheet Link的操作 (1)将Excel表格中的数据导出到MATLAB工作空间中 (2)从MATLAB工作空间导入数据到Excel表格中 (3)调用MATLAB函数进行运算,13.2 MATLAB数据接口,MATLAB提供多种方法支持将磁盘文件和剪贴板中的数据导入到MATLAB的工作区,最简单的办法是使用数据导入向导(可通过在“主页”选项卡“变量”命令组中选择“导入数据”命令按

4、钮或在命令行窗口执行uiimport命令来激活它),而在M文件中则可以使用MATLAB文件操作函数。,13.2.1 文件操作,1文件打开与关闭 (1)fopen函数 fid=fopen(filename,permission) r 以读方式打开一个文件。 w 以写方式打开一个文件。 a 打开一个文件,随后的操作可在该文件末尾添加数据 r+ 以读和写方式打开一个文件 fopen默认打开二进制文件,如果打开的是文本文件,则需在上述允许方式后加t,如rt、wt等。例如: F1=fopen(old.txt,rt) F2=fopen(new.dat,r+),(2)fclose函数 fclose函数用于关

5、闭已打开的文件,其调用格式为: status=fclose(fid),2文件的读写 (1)fscanf函数 fscanf 函数用于读取文本文件的内容,并按指定格式存入矩阵,其调用格式为: A,count=fscanf(fid,fmt,size),例如: x=fscanf(fid,%5d,100); y=fscanf(fid,%5d,10,10);,(2)fprintf函数 fprintf函数可以将数据按指定格式写入到文本文件中,其调用格式为: count=fprintf(fid,fmt,A),例13-1 计算当x=0.0,0.1,0.2,1.0时,f(x)=ex的值,并将结果写入文件demo1

6、.txt。 程序如下: x=0:0.1:1; Y=x;exp(x); fid=fopen(demo1.txt,w); fprintf(fid,%6.2f %12.8fn,Y); fclose(fid);,(3)fgetl与fgets函数 除上述对文本文件进行读写操作的函数外,读取文本文件的函数还有fgetl和fgets,它们按行读取数据,其调用格式为: line=fgetl(fid) line=fgets(fid,nchar),例13-2 读出例13-1生成的文件demo1.txt中的数据。 fid=fopen(demo1.txt,r); while 1 line=fgetl(fid); if

7、 line0 break end disp(line) end fclose(fid);,(4)textscan函数 如果一个文件中的数据全部由ASCII字符组成,且数据间有间隔符(如空格、逗号、分号、制表位),则文件称为有格式文件。有格式文件可以使用文本输入函数textscan读取数据,函数调用格式为: C=textscan(fid,fmt,N,param,value) 例13-3 假定文件textdemo.txt中有以下格式的数据: Name English Chinese Mathmatics Wang 99 98 100 Li 98 89 70 Zhang 80 90 97 Zhao

8、77 65 87 从该文件中将前3个数据读入到grades的程序段如下: fid=fopen(textdemo.txt,r); grades=textscan(fid,%s %d %d %d,3,headerlines,1);,(5)fread函数 该函数从文件中读入二进制数据,其调用格式为: A,count=fread(fid,size,precision,skip) 例13-4 假设文件alphabet.txt的内容是按顺序排列的26个大写英文字母,读取前5个字母的ASCII和这5个字符。 程序如下: fid=fopen(alphabet.txt,r); c=fread(fid,5); f

9、rewind(fid); d=fread(fid,5,*char); fclose(fid);,(6)fwrite函数 fwrite 函数按照指定的数据类型将矩阵中的元素写入到文件中,其调用格式为: count=fwrite(fid,A,precision) 例13-5 建立一数据文件magic5.dat,用于存放5阶魔方阵。 程序如下: fid=fopen(magic5.dat,w); cnt=fwrite(fid,magic(5),int32); fclose(fid);,3数据文件定位,(1)fseek函数 该函数用于定位文件位置指针,其调用格式为: status=fseek(fid,o

10、ffset,origin) 例如: fseek(fid,0,-1) %指针指向文件头 fseek(fid,-5,eof) %指针指向文件尾前第5个字节 (2)ftell函数 该函数用来查询文件指针的当前位置,其调用格式为: position=ftell(fid) ftell函数的返回值为从文件头到指针当前位置的字节数。若返回值为-1,表示获取文件当前位置失败。,例13-6 下列程序执行后,变量four、position和three的值是多少? a=1:5; fid=fopen(fdat.bin,w); fwrite(fid,a,int16); fclose(fid); fid=fopen(fd

11、at.bin,r); status=fseek(fid,6,bof); four=fread(fid,1,int16); position=ftell(fid); status=fseek(fid,-4,cof); three=fread(fid,1,int16); status=fclose(fid);,(3)feof函数 该函数用来判断当前的文件位置指针是否到达文件尾部: status=feof(fid) 当到达文件结束位置时,测试结果为1,否则返回0。 (4)ferror函数 用来查询最近一次输入或输出操作中的出错信息: message=ferror(fid),13.2.2 MAT文件与

12、应用,1MAT文件 save命令可以将MATLAB系统内部数据保存为MAT文件,而load命令可以将磁盘上的MAT文件中的数据读入到MATLAB系统中。 MATLAB提供的用于操作MAT文件的API函数封装于两个标准库文件中:libmat.lib和libmx.lib。前者用于对MAT文件的操作,后者用于对MAT文件中矩阵的操作 2C语言MAT函数 用于在C程序中对MAT文件进行操作。,3MAT文件的基本操作,在C程序中,通过指向MAT文件的指针对文件进行操作,定义指向MAT文件的指针的格式为: MATFile *mfp; (1)打开MAT文件 mfp=matOpen(filename,mode

13、),(2)读写MAT文件 向MAT文件中写入一个矩阵。 matPutVariable(mfp,name,mp) matPutArrayAsGlobal(mfp,mp) 获取MAT文件中的变量列表。 matGetDir(mfp,num) 从MAT文件中读取一个矩阵。 matGetVariable(mfp,name) (3)关闭MAT文件。 matClose(mfp),4mx函数,在C程序中,使用MATLAB数据时还用到MATLAB提供的接口函数中的mx函数,以完成对mxArray对象的操作。MATLAB的矩阵运算是以mxArray结构体(C+中是mwArray类)为核心构建的。,5MAT文件操作

14、举例,例13-7 创建对MAT文件进行操作的C程序。,编译生成应用程序的两种方法。 (1)利用Microsoft Visual Studio 2010集成环境 (2)利用MATLAB编译器,13.3 MATLAB与其他语言的接口,MEX(MATLAB executable)动态链接函数接口是MATLAB调用其他语言程序的接口,通过mex命令将C、C+等语言编写的函数编译成动态链接程序,使之成为MATLAB的一个扩展函数。,13.3.1 MEX文件,1MEX函数 MEX函数用于从MATLAB环境中获取必要的矩阵数据和相应信息。所有MEX函数均在MATLAB的子文件夹externinclude中的

15、头文件mex.h得到声明。,2MEX文件的建立 C语言的MEX文件的源程序由如下两个部分组成。 (1)入口子程序(mexFunction) void mexFunction(int nlhs,mxArray *plhs,int nrhs,const mxArray *prhs) (2)计算子程序(computational routine) 包含所有完成计算功能的程序代码,由入口子程序调用。 例13-8 编写求两个数的最小公倍数的C语言MEX文件。,3MEX文件的编译 MEX文件的编译需要具备两个条件:一是要求已经安装MATLAB应用程序接口组件及其相应的工具,另一个是要求有合适的C语言编译器

16、。MEX文件的编译使用mex命令,如果第一次使用,需要配置mex采用什么编译器。 mex setup 编译上述MEX文件,在MATLAB命令行窗口下输入命令: mex c_mex.c,13.3.2 MATLAB引擎,MATLAB引擎(engine)是用于和外部程序结合使用的一组函数和程序库,在C语言程序中利用MATLAB引擎来调用MATLAB中的函数。 1MATLAB引擎函数,2MATLAB引擎的使用 首先需要将mxArray转换成MATLAB中可操作的形式。 将mxArray转换成MATLAB可理解的形式。一是用函数mxCreate来创建矩阵,然后用mxSetName对其命名;二是选择将一个自定义的数据结构复制到mxAr

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号