版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第13章MATLAB外部程序接口技术13.1MATLAB与Office软件的混合使用13.2MATLAB数据接口13.3MATLAB与其他语言的接口13.1MATLAB与Office软件的混合使用为了在Word环境下调用MATLAB的计算功能,需要调用MATLAB的Notebook软件工具,它为Word提供M-Book.dot模板。利用该模板创建的Word文档通常称为M-Book文档。1.Notebook的安装与启动>>notebook-setup13.1.1在Word中使用MATLAB2.Notebook菜单项M-Book模板定义了Word与MATLAB进行通信的宏指令、文档样式和工具栏。3.单元的使用在MATLABNotebook中,凡是在Word与MATLAB之间进行传递的内容称为单元(cell),它是Notebook与MATLAB交互的基本单位。(1)输入输出单元定义输入单元的方法输入单元执行后产生蓝色的输出单元。(2)自动初始化单元(3)单元组4.计算区计算区(calczone)是一个由普通Word文本、输入单元和输出单元组成的连续区,用于描述某个具体的作业或问题。在计算区里,用户可以根据描述问题的需要,安排段落、标题、分栏,而不受计算区外的有关格式的约束。定义计算区的方法13.1.2在Excel中使用MATLAB通过SpreadsheetLink,可以在Excel工作区和MATLAB工作空间之间进行数据交换,也可以使用插件方式在Excel中调用MATLAB的算法。1.SpreadsheetLink的安装与启动2.SpreadsheetLink的操作(1)将Excel表格中的数据导出到MATLAB工作空间中(2)从MATLAB工作空间导入数据到Excel表格中(3)调用MATLAB函数进行运算13.2MATLAB数据接口MATLAB提供多种方法支持将磁盘文件和剪贴板中的数据导入到MATLAB的工作区,最简单的办法是使用数据导入向导(可通过在“主页”选项卡“变量”命令组中选择“导入数据”命令按钮或在命令行窗口执行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函数用于关闭已打开的文件,其调用格式为: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.txt。程序如下:x=0:0.1:1;Y=[x;exp(x)];fid=fopen('demo1.txt','w');fprintf(fid,'%6.2f%12.8f\n',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');while1line=fgetl(fid);ifline<0breakenddisp(line)endfclose(fid);(4)textscan函数如果一个文件中的数据全部由ASCII字符组成,且数据间有间隔符(如空格、逗号、分号、制表位),则文件称为有格式文件。有格式文件可以使用文本输入函数textscan读取数据,函数调用格式为:C=textscan(fid,fmt,N,param,value)例13-3假定文件textdemo.txt中有以下格式的数据:NameEnglishChineseMathmaticsWang 9998100Li 988970Zhang 809097Zhao 776587从该文件中将前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);frewind(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,offset,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('fdat.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.2MAT文件与应用1.MAT文件save命令可以将MATLAB系统内部数据保存为MAT文件,而load命令可以将磁盘上的MAT文件中的数据读入到MATLAB系统中。MATLAB提供的用于操作MAT文件的API函数封装于两个标准库文件中:libmat.lib和libmx.lib。前者用于对MAT文件的操作,后者用于对MAT文件中矩阵的操作2.C语言MAT函数用于在C程序中对MAT文件进行操作。3.MAT文件的基本操作在C程序中,通过指向MAT文件的指针对文件进行操作,定义指向MAT文件的指针的格式为:MATFile*mfp;(1)打开MAT文件mfp=matOpen(filename,mode)(2)读写MAT文件①
向MAT文件中写入一个矩阵。matPutVariable(mfp,name,mp)matPutArrayAsGlobal(mfp,mp)②
获取MAT文件中的变量列表。matGetDir(mfp,num)③
从MAT文件中读取一个矩阵。matGetVariable(mfp,name)(3)关闭MAT文件。matClose(mfp)4.mx函数在C程序中,使用MATLAB数据时还用到MATLAB提供的接口函数中的mx函数,以完成对mxArray对象的操作。MATLAB的矩阵运算是以mxArray结构体(C++中是mwArray类)为核心构建的。5.MAT文件操作举例例13-7创建对MAT文件进行操作的C程序。编译生成应用程序的两种方法。(1)利用MicrosoftVisualStudio2010集成环境(2)利用MATLAB编译器13.3MATLAB与其他语言的接口MEX(MATLABexecutable)动态链接函数接口是MATLAB调用其他语言程序的接口,通过mex命令将C、C++等语言编写的函数编译成动态链接程序,使之成为MATLAB的一个扩展函数。13.3.1MEX文件1.MEX函数MEX函数用于从MATLAB环境中获取必要的矩阵数据和相应信息。所有MEX函数均在MATLAB的子文件夹extern\include中的头文件mex.h得到声明。2.MEX文件的建立C语言的MEX文件的源程序由如下两个部分组成。(1)入口子程序(mexFunction)voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]){…}(2)计算子程序(computationalroutine)包含所有完成计算功能的程序代码,由入口子程序调用。例13-8编写求两个数的最小公倍数的C语言MEX文件。3.MEX文件的编译MEX文件的编译需要具备两个条件:一是要求已经安装MATLAB应用程序接口组件及其相应的工具,另一个是要求有合适的C语言编译器。MEX文件的编译使用mex命令,如果第一次使用,需要配置mex采用什么编译器。>>mex–setup编译上述MEX文件,在MATLAB命令行窗口下输入命令:>>mexc_mex.c13.3.2MATLAB引擎MATLAB引擎(engine)是用于和外部程序结合使用的一组函数和程序库,在C语言程序中利用MATLAB引擎来调用MATLAB中的函数。1.MATLAB引擎函数2.MATLAB引擎的使用首先需要将mxArray转换成MATLAB中可操作的形式。①将mxArray转换成MATLAB可理解的形式。一是用函数mxCreate来创建矩阵,然后用mxSetName
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学本科一年级(康复治疗学)康复医学基础测试题及答案
- 2025年中职旅游服务与管理(智慧旅游基础)试题及答案
- 音乐治疗评估技术发展趋势试题及答案
- 语文试卷(26-158C)答案【甘肃卷】甘肃金太阳2026届高三上学期12月阶段性考试(26-158C)(12.29-12.30)
- 2025-2030中国节能减排市场投资需求规模与投融资模式创新研究报告
- 福贡县2024-2025学年第二学期五年级科学期末学业测评考点及答案
- 丁青县2024-2025学年第一学期三年级英语期末学业展示考点及答案
- 2026中国组合屋面(BUR)膜行业盈利动态与应用趋势预测报告
- 2025至2030中国免税店行业牌照稀缺性与渠道多元化布局战略分析报告
- 2026年物流行业仓库管理岗位面试题
- 电子制造行业数字化转型白皮书
- 肿瘤患者双向转诊管理职责
- 公共安全视频监控建设联网应用(雪亮工程)运维服务方案纯方案
- 福建省漳州市2024-2025学年高一上学期期末教学质量检测历史试卷(含答案)
- 定额〔2025〕2号文-关于发布2020版电网技术改造及检修工程概预算定额2024年下半年价格
- 管道穿越高速桥梁施工方案
- 2024版《中医基础理论经络》课件完整版
- 2022版义务教育(物理)课程标准(附课标解读)
- 井喷失控事故案例教育-井筒工程处
- 地源热泵施工方案
- GB/T 16947-2009螺旋弹簧疲劳试验规范
评论
0/150
提交评论