版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主讲:韩锟Tel:82656370(H)82655345(O)Email:hkun@3.4程序调试echo
——控制M文件在执行过程中是否显示。这对程序的调试和演示很有用。一、辅助函数对于脚本M文件,
echoon:打开所有脚本文件的显示
echooff:关闭所有脚本文件的显示
echo:在上述两种状态之间切换echoonnum=1switchnumcase0
disp('I''mateacher.');case1
disp('Youareastudent.');otherwise
disp('Weareallstudents');end脚本文件untitled.m
num=1num=1switchnumcase0case1
disp('Youareastudent.');Youareastudent.input
——提示用户从键盘输入数值、字符串、表达式等。input命令的调用格式①:
A=input(提示信息)>>a=input('a=?')a=?2a=2>>a=input('a=?')a=?in???Errorusing==>inputUndefinedfunctionorvariable'in'.input命令的调用格式②:
A=input(提示信息,‘s’)
——允许用户输入字符串>>a=input('a=?','s')a=?ina=inpause
——在程序运行时暂停程序的执行pause命令的调用格式:
pause(延迟秒数)延迟时间可缺省,程序将暂停,直至用户按任意键。tips:keyboard
——停止文件的执行并控制键盘,此时命令提示符变为K>>,用户可在其后运行任何Matlab命令。可使用return指令返回正常模式。tips:容错函数error
——error函数显示错误信息,并终止当前正在运行的M文件。
functionfoo(x,y)ifnargin~=2error('Wrongnumberofinputarguments')end
>>foo(1)???Errorusing==>fooWrongnumberofinputarguments函数文件foo.m二、M文件调试编写M文件时的错误类型:M文件错误类型
语法错误
syntaxerror
运行错误
Run-timeerror1)语法(Syntax)错误变量名、函数名、文件名、关键字的误写;包括:标点符号、关键字的缺、漏;函数调用格式不符合定义;数据类型不符合定义;……说明:这类错误通常能在运行时发现,这时Matlab会中止M文件的执行并给出相应的错误原因及所在行、列号2)运行(Run-time)错误运行错误由算法本身引起,发生在程序运行过程中。相对于语法错误而言,运行错误较难处理,尤其是M函数文件,它一旦停止运行,其中间变量会被删除一空,错误很难查找,必须利用各种调试手段。M文件调试方法:1)直接调试法:
思路:直接在M文件中利用人机交互函数控制M文件的执行过程,利用辅助函数或其它手段显示、观察一些中间变量在运行中的值,发现一些运行中的错误。具体操作举例:去掉某些语句后面的分号,迫使M文件输出一些中间计算结果,以便发现可能的错误;在M文件的适当位置,添加显示某些关键变量值的语句(如使用disp函数);利用echo命令,使运行时在屏幕上逐行显示M文件内容。必要时,使用快捷键Ctrl+C,强制中止程序的执行。在M文件的适当位置,添加keyboard命令,设置程序的断点,查看和修改变量的值;对于M函数文件,调试时可将函数声明行注释掉,使一个中间变量难以观察的M函数文件变为一个所有变量都保留在Matlab工作空间的M脚本文件,方便观察中间变量的值。2)工具调试法:利用Matlab的M文件编辑/调试器提供的debug工具进行调试。3.5文件操作一、基本文件管理命令命令描述dir列出当前目录下的文件p=cd返回当前工作目录到ppwd返回当前工作目录cdpath改变当前工作目录到pathdelete删除M文件what列出当前工作目录下的M文件和MAT文件type列表显示M文件的内容二、文件操作基本流程读写文件关闭文件创建/打开文件三、创建/打开文件——使用函数fopen知识点1:fopen的调用格式①:fid=fopen(filename,permission)用字符串给定的数据文件名打开文件的方式文件指针上述语句的含义:用permission指定的模式打开名为filename的文件,返回文件指针给fid。说明:如果文件不在Matlab的搜索路径范围内,则需在filename中指定文件的路径。fid是一个整型标量,用来标识该数据文件,其他函数可以利用它对该数据文件进行操作。fid=非负整数——成功打开文件fid=-1——打开文件失败permission指打开文件的方式,取值见下表:permission描述‘r’打开文件读‘r+’打开文件读写‘w’删除已存在文件的内容或建立一个新文件,并打开文件写‘w+’删除已存在文件的内容或建立一个新文件,并打开文件读写‘a’建立并打开一个新文件或打开一个已存在的文件写,在文件的结尾处添加内容‘a+’建立并打开一个新文件或打开一个已存在的文件读写,在文件的结尾处添加内容文件必须存在!!文件可以以二进制代码的格式打开(缺省),也可以以文本代码的格式打开;对于PC机系统,如要用文本格式打开文件,必须在permission参数指定打开模式的字符后添加字母“t”,如‘rt’、’wt+’。>>fid=fopen('untitled.m','r')fid=
3以二进制格式打开文件>>fid=fopen('untitled.m','rt')fid=
3以文本格式打开文件知识点1:fopen的调用格式②:[fid,message]=fopen(filename,permission)>>[fid,message]=fopen('untitled.m','r')fid=3message=''>>[fid,message]=fopen('untitled11.m','r')fid=
-1message=Nosuchfileordirectory知识点1:fopen的调用格式③:fids=fopen(‘all’)返回行向量fids,包括当前所有打开文件的指针,但不包括标准输出(指屏幕,文件指针总是为1,和标准错误提示,文件指针总为2)。向量元素的个数等于打开文件的个数。知识点1:fopen的调用格式④:filename=fopen(fid)根据打开的文件指针返回文件名,如果文件不在Matlab的当前工作路径下,则文件名中包含路径。
>>filename=fopen(fid)filename=untitled.m四、关闭文件——使用函数fclose知识点2:fclose的调用格式①:status=fclose(fid)含义:关闭指针fid所指的文件,成功关闭返回0,关闭失败返回-1。知识点2:fclose的调用格式②:status=fclose(‘all’)上述语句的含义:关闭所有打开的文件,成功关闭返回0,关闭失败返回-1。打开的文件在进行读写操作后一般需要立即关闭,以免未关闭的文件指针造成混乱。tips:五、读写文件(难点)写二进制文件——使用函数fwrite知识点3:fwrite的调用格式:count=fwrite(fid,A,precision,skip)写入文件的数据
指定读写数据的类型,可缺省
指定每写一个数据后跳过的字节数,可缺省成功写入数据的个数count=fwrite(fid,A,precision,skip)——含义:把矩阵A中的数据按precision指定的数据格式每隔skip个字节写入文件指针fid所指的文件中。t=1:100;fid1=fopen('test.mat','w');count=fwrite(fid1,t,'int8');fclose(fid1);以二进制格式打开文件test.mat写将矩阵t中元素以int8格式写入该文件读二进制文件——使用函数fread知识点4:fread的调用格式:[A,count]=fread(fid,size,precision,skip)存放读取的数据指定读取数据的大小,可缺省[A,count]=fread(fid,size,precision,skip)含义:从文件指针fid所指的文件读取二进制数据,并写入矩阵A,可选参数count返回成功读取的元素个数。size指定需要读的数据个数,如不指定则读取整个文件内容,其取值如下:n——读n个数据到一个列向量inf——一直读到文件的结尾,读取的数据放在一个列向量中[M,N]——读出的数据按列放入M×N的矩阵,如文件中数据不足,则用0来填补。其中N可以是inf,M则不行。t=1:100;fid1=fopen('test.mat','w');count=fwrite(fid1,t,'int8');fclose(fid1);以二进制格式打开test.mat读从test.mat中读5个int型数据,每读一个数后跳过1个字节再读下一数据,读出数据存入矩阵AA=13579fid2=fopen('test.mat','r');A=fread(fid2,5,'int8',1)fclose(fid2)为何在写完文件之后、读取文件数据之前要关闭文件?
t=1:100;fid1=fopen('test.mat','w');count=fwrite(fid1,t,'int8');%fclose(fid1)%fid2=fopen('test.mat','r');A=fread(fid1,5,'int8',1)A=Emptymatrix:5-by-0
t=1:100;fid1=fopen('test.mat','w');count=fwrite(fid1,t,'int8');fclose(fid1);fid2=fopen('test.mat','r');A=fread(fid2,5,'int8',1)
B=fread(fid2,[5,4],'int8')fclose(fid2);A=13579B=1116212612172227131823281419242915202530第二个fread语句接着前一个fread语句读数据的位置之后读数据,不是从文件开始的位置读注意:在向文件中写入数据后,必须先关闭文件,再打开文件读数据,否则读取数据的位置将从写入的最后一个数据开始,而不会从文件头开始。文件位置指针打开一个文件时,Matlab就为该文件分配一个位置指针,按照这个指针所指的位置进行读写数据的操作,每读完一个数据后,文件位置指针向后移动一个数据所占的字节数。1)获取当前指针位置——使用函数ftell知识点5:ftell的调用格式:pos=ftell(fid)含义:返回从文件开头到指针当前位置的字节数,若返回-1则表示获取当前指针位置失败。2)移动文件位置指针——使用函数fseek知识点5:fseek的调用格式:status=fseek(fid,offset,origin)位置指针相对移动的字节数移动位置指针的参考起点含义:把fid所指文件的位置指针从origin指定的参照位置移动由参数offset指定的字节数。status=fseek(fid,offset,origin)offset表示位置指针相对移动的字节数,若为正整数表示向文件尾方向移动,若为负整数则表示向文件头方向移动。origin取值为:
‘bof’或-1:文件的开头;
‘cof’或0:文件的当前位置;
‘eof’或1:文件的结尾。t=1:100;fid1=fopen('test.mat','w');count=fwrite(fid1,t,'int');pos1=ftell(fid1)fclose(fid1);fid2=fopen('test.mat','r');pos2=ftell(fid2)A=fread(fid2,5,'int',4)pos3=ftell(fid2)B=fread(fid2,[5,4],'int')fseek(fid2,-80,'cof');pos4=ftell(fid2)C=fread(fid2,[5,4],'int')fclose(fid2);pos1=400pos2=0A=13579pos3=40B=1116212612172227131823281419242915202530pos4=40C=1116212612172227131823281419242915202530写有格式文本文件——使用函数fprintf知识点6:fprintf的调用格式:count=fprintf(fid,format,A)%+12.5e\n以%开头可选的标志,详见帮助数据宽度小数点后数据位数格式变换符,表示读取数据的格式转义字符Matlab下的格式变换符如下表所示:符号含义c字符d十进制数e指数格式的浮点数f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 800G DAC高速铜缆行业研究:市场格局、产业链与发展趋势
- 豆野螟嗅觉基因OBP2、CSP2和CSP3功能解析:基于分子与生理机制的探究
- 谱风险度量下投资组合优化模型的理论与实践:基于市场动态的深度解析
- 《非ST段抬高型急性冠脉综合征2024指南》科室专项解读(业务学习专用)
- 吉林中考语文作文专项练习(题目+指导+范文)
- 诺丁斯师生观:内涵、特征与教育实践新解
- 2026年温州心血管病医院医护人员招聘笔试备考试题及答案详解
- 语用学视域下男女非真实性话语使用差异探究
- 2026湖南株洲醴陵市事业单位公开招聘工作人员12人考试参考题库及答案详解
- 2026四川泸州市人民医院第二季度编外人员招聘16人考试模拟试题及答案详解
- 智能体在教学场景中的应用及其有效性研究
- 标准物流运输管理制度
- 征集和招录人员政治考核表
- 墙面维修修补合同范本
- 2025年云南省大理白族自治州中考二模地理试题
- 2025年六宫格数独试题及答案
- 2025年黑龙江省交通投资集团有限公司招聘笔试参考题库含答案解析
- 公路工程施工安全生产风险管控清单
- 旅游行业安全风险辨识及防范措施
- 《田径场地教学》课件
- 2025年中国中信金融资产管理股份有限公司北京市分公司招聘笔试参考题库附带答案详解
评论
0/150
提交评论