版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1、第8章高级编程技术,2、本章的目标,掌握MATLAB文件的处理方法,了解MATLAB应用程序接口的原理,了解两种复杂数据类型的结构和单元,并了解面向对象编程的基本概念,3、主要内容,8.1文件8.2应用程序接口,4、8.1文件,文件可分为两类:文本文件由字符和与字符显示格式相关的控制符号组成,具有常见的扩展名:“TXT”、“BAT”和“HTM”。二进制文件是具有公共扩展名的非文本文件:“com”、“EXE”、“BMP”和“wav”。5.基本的低级文件输入输出指令。1打开和关闭文件fopen,fclose 2格式读取和写入fprintf,fscanf,fgetl,fgets 3格式读取和写入
2、fread,fwrite 4文件定位和状态feof,fseek,ftell,ferror,frewind,6,8.1.1打开和关闭文件,1fopen函数fidfopen(文件名,权限)FID,消息=fopen(文件名,权限)文件名,权限,机器格式=fopen (FID) FID=fopen(所有)2 fclose函数状态=fclose(所有)命令是fidfopen(my.txt,r),7,8.1.2读写格式化数据,fprintf函数计数=fprintf (FID,format,a.)fscanf函数a,count=fscanf (FID,格式,大小),8,示例8-1,当x=0.1时,计算f(x
3、)=ex的值,并将结果写入文件my。程序x=0:1。y=x;exp(x);%y有两行数据fid=fopen(my.txt,w);fprintf(fid,% 6.2 f .8fn,y);f close(FID);9,示例8-2,从前面示例中生成的my.txt文件中读取数据,并将结果输出到屏幕。程序fid=fopen(my.txt,r);a,计数=f canf(FID,%f %f,2 INF);fprintf(1%,f %fn,a);f close(FID);输出相同示例8-1文件中的数据格式。10,8.1.3文件定位和文件状态,1feof功能:检查文件是否结束。status=feof(fid)
4、2ferror函数:查询文件的输入输出错误信息。函数:使位置指针回到文件的开头。4fseek功能:设置文件位置指针状态=fseek (FID,偏移量,原点)5 ftell功能:用于查询当前文件指针位置=ftell(fid)的位置;11,示例8-3输出文件的大小。程序fid=fopen(my.txt,r);f SEK(FID,0,eof);x=全时当量(FID);fprintf(1,文件大小=%dn,x);frewind(FID);x=全时当量(FID);fprintf(1,文件位置=%dn,x);f close(FID);输出文件大小=231文件位置=0,12,8.1.4逐行读取数据,1fge
5、tl函数:逐行读取文件中的数据,但不读取新的行字符。Line=fgetl(fid) 2fgets函数:用于从文件中读取行,保留换行符,并将行作为字符串返回。(1)行=fgets (FID) (2)行=fgets (FID,nchar),13,示例8-4,编写一个程序来读取示例8-1中生成的数据。程序fid=fopen(my.txt,r);而恐惧(FID)%在文件未完成时逐行读取数据;s=fgets(FID);fprintf(1,%s,s);结束fc lose(FID);输出相同示例8-1文件中的数据格式。14,8.1.5读取和写入二进制数据文件,fwrite函数:用于将二进制数据写入文件计数=
6、fwrite(fid,A,精度)。Fread函数:用于从文件中读取二进制数据a,count=fread (FID,大小,精度)。注意:当使用函数fread()和fwrite()读写文件时,必须以二进制模式打开文件。15,示例8-5,在二进制文件中存储5行5列的魔方数组。程序fid=fopen(my.dat,w);a=魔法(5);fwrite(fid,a,long);f close(FID);16,示例8-6,从二进制文件中读取“魔方阵列”。程序fid=fopen(my.dat,r);a,计数=fread(fid,5,inf,long);f close(FID);A,17,8.1.6图像和声音文
7、件的读取和写入,1读取功能:从文件A读取图像=imread(文件名,fmt) a,map=imread(文件名,fmt) 2图像功能:显示图像(A)3写入功能:将图像写入文件imwrite(A,文件名,fmt) imwrite (a,映射,文件名,fmt),18,示例8-7,显示真彩色(RGB)图像。x,map=imread(c : MATLAB 7 toolboxmatlababdemostree 1 . jpg);图像(x);19,示例8-8,将图像写入文件,程序x,map=imread(c : MATLAB 7 toolboxmatlababdemostree 1 . jpg);imwr
8、ite(x,my . BMP);%将图像保存为真彩色bmp x,map=im read(my . BMP);图像(x);20,8.1.6图像和声音文件的读写,4imfinfo函数:查询图像文件信息innfo imflnfo(filename)5 avread函数:用于读取带扩展名的声音文件。”wav y=wavread(file) y,fs,Nbits=wavread(file) 6wavwrite函数:用于将数据写入扩展名为 wav 的声音文件。WavWrite (y,fs,nbits,wavefile) 7wavplay功能:使用windows音频输出设备播放声音wavplay(y,fs)
9、,21,示例8-9,读取音频数据文件并以不同频率播放。程序:y=wa vread(c : mat lab 7 toolbox Simulink simdemossimgeneraltilet . wav)图(y);wav play(y);wavplay(y,11025);wavplay(y,44100);22,8.2应用程序接口,MATLAB的外部接口应用包括以下内容:(1)调用MATLAB中已有的C/C语言代码;(2)用C/C语言调用MATLAB算法;(3)利用组件标准开发客户/服务器模式;例如,在Visual Basic程序或微软Excel中调用MATLAB算法(4)用C/C语言读写MAT
10、数据文件。23,8.2.1 MEX文件,示例8-10简单MEX文件示例mexHelloWorld.c程序:#包含MEX。h void MEX函数(int nlhs,mxarray * plhs,int nrhs,const mxarray * prhs) MEX printf(你好,MATLAB世界!);24,8.2.2 MATLAB计算引擎,MATLAB计算引擎的应用是利用MATLAB提供的一组接口函数,在后台调用MATLAB应用程序,通过某种通信机制完成用户开发的C/C语言应用程序中复杂的系统任务。25,8-11,设计了一个用C/C语言调用网格函数绘制高斯矩阵曲面的程序。解决问题的步骤:2
11、6,示例8-11程序:#包含#包含引擎。h无效主()引擎* EPint状态=0;/打开计算引擎ep=engOpen(空);如果(ep=(引擎*)空)打印(错误:无法打开MATLAB计算引擎n);出口(-1);/执行MATLAB指令工程字符串、网格(峰值););getchar();/关闭MATLAB计算引擎状态=发动机关闭(EP);如果(状态!=0) printf(不能正常关闭MATLAB计算引擎n);出口(-1);27,8.2.3基于组件的接口编程。该方法的主要特点如下:(1)应用程序与MATLAB工作环境完全分离;(2)MATLAB数学库和工具箱包含多种功能,降低了算法编译的难度;(3)由于
12、算法程序是由组件构成的,所以算法是保密的。28,8.2.4用C/C语言读写MAT数据文件。支持C/C语言读写MAT文件的函数库如下:1打开数据文件MAT打开MAT文件* MAT打开(常量字符*文件名,常量字符*模式)2关闭数据文件MAT close int MAT close(MAT File * mfp)3获取变量MAT getvariable mxarray * MAT getvariable(MAT File * mfp,写数据match variable int match variable(MAT File * mfp,常量字符*名称,常量矩阵* MP),29,扩展读取, 8.3结构
13、数组8.4单元数组8.5面向对象编程,30个应用实例,实例8-12用C/C语言调用MATLAB计算魔方数组,并将结果显示在屏幕上。,31,程序代码1 #,包括发动机h #包括无效主()发动机* ep双* p;mxArray *方程;int i=0,j=0;int状态=0;/打开计算引擎ep=发动机开启(空);如果(ep=(发动机*)为空(打印f(错误:无法打开MATLAB计算引擎n);出口(-1);32,程序代码2,/执行MATLAB指令恩格尔斯特林(ep,A=魔术(5););等式=EnGetVariable(EP,A);p=mxGetPr(方程式);printf(nMATLAB中计算魔法(5
14、)n对于(I=0;i5;I)对于(j=0;j5;j)印刷力(8.0磅力,*(p I j * 5);printf(n);/关闭MATLAB计算引擎状态=发动机关闭(欧洲议会);如果(状态!=0) printf(无法正常关闭MATLAB计算引擎n);出口(-1);33,例8-13,34,程序代码1 、#包括#包括#包括引擎h .无效主()引擎*伊平状态=0;ep=发动机开启(空);/执行MATLAB指令双A=2,3,4,-1,1,-1,3,-5,1,B=5,5,9;双* pa *、Pb *、PCMXArray * x *、y *、z;35,程序代码2,x=mxCreateDoubleMatrix(3,3,MxReal);y=mxCreateDoubleMatrix(3,1,MxReal);pa=mxGetPr(x);Pb=MxGe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 耐用消费产业行业研究:珀莱雅总经理任花知晓董事长花知晓全面纳入珀莱雅管控体系
- 2026年科研团队年度工作总结与成果汇报
- 2027届重庆市涪陵区数学四上期末学业质量监测试题含解析
- 云南省玉溪市元江县2025-2026学年上学期期末考试高二物理试卷(含答案)
- 扬大附中东部分校七年级下学期语文期中复习第1-3单元字词
- 注册会计师《公司战略与风险管理》真题及答案(含解析)
- 注册会计师考试《会计》或有事项专项卷(带评分标准)
- 2026湖南郴州资兴市部分事业单位面向自收自支编制人员公开选聘工作人员21人考前冲刺试卷附参考答案详解(夺分金卷)
- 2026江苏泰州泰兴市人民医院社会化住院医师规范化培训(第3批)招聘6人备考题库一套附答案详解
- 2026年辽东学院面向社会招聘高层次和急需紧缺工作人员8人(第二批)备考题库附参考答案详解(综合卷)
- 煤矿入井安全操作规程培训
- 高中数学立体几何学习现状及教学策略
- 饲草产品加工工安全技能测试水平考核试卷含答案
- 甘肃省民航机场集团招聘笔试题库2026
- 《JBT 14962-2025磁悬浮离心式压缩机能效限定值及能效等级》专题研究报告
- 2025年案件管理检察业务竞赛真题及答案
- 2026广岩国际投资有限责任公司招聘14人备考题库及答案详解(各地真题)
- 券商从业人员专属2026新三板考试试题答案
- 华为基本法(更新)
- 钛白粉行业风险分析报告
- NCIC临床实践指南:免疫检查点抑制剂毒性管理指南(2026版)课件
评论
0/150
提交评论