版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.1
M文件4.2Matlab的程序结构4.3Matlab文件操作4.4Matlab程序设计主要内容:1指令驱动模式通常matlab以指令驱动模式工作,即在matlab窗口下当用户输入单行指令时,matlab立即处理这条指令,并显示结果,这就是matlab命令行模式。命令行模式操作时,matlab窗口只允许一次执行一行上的一个或几个语句。在matlab窗口输入数据和命令进行计算时,当处理复杂问题和大量数据时是不方便的。命令行方式程序可读性差,而且不能存储,对于复杂的问题,应编写成能存储的程序文件。matlab的工作模式2m文件模式
m文件是matlab所特有的使用该语言编写的磁盘文件。将matlab语句构成的程序存储成以m为扩展名的文件,然后再执行该程序文件,这种工作模式称为程序文件模式。程序文件不能在指令窗口下建立,因为指令窗口只允许一次执行一行上的一个或几个语句。4.1M文件
m文件的语法类似于c语言,但又有其自身特点。它只是一个简单的ASCII码文本文件,执行程序时逐行解释运行程序,matlab是解释性的编程语言。
m文件可以使用系统认可的文本文件编辑器来建立m文件。如dos下的edit,windows的记事本和word等。常用且最为方便的是使用MATLAB提供的文本编辑器。m文件有两类脚本文件(ScriptFile):独立的m文件函数文件(FunctionFile):可调用的m文件脚本文件是一串matlab命令的集合,完成制定的功能,变量空间是workspace;函数文件是一个黑箱,根据输入作出输出,变量空间是独立的函数变量空间,在函数运行完成后关闭。m文件的建立命令操作:在MATLAB命令窗口输入命令edit菜单操作1脚本文件脚本文件既不接受输入参数也不返回输出参数,脚本文件实际上是一串指令的集合,与在命令窗口逐行执行文件中的所有指令,其结果是一样的。脚本文件包括两部分:注释部分和程序部分%绘制sin(x)*cos(x)图形x=0:0.1:4*pi;y=sin(x).*cos(x);plot(x,y)a.m%注释部分,用以说明函数的作用及有关内容,使用help命令时显示。只显示程序中的第一句注释语例4.1绘制sin(x)*cos(x)图形2函数文件函数文件是指能够接受并输出参数的m文件。函数文件的格式:
function
输出形参表=函数名(输入形参表)注释说明语句段程序语句段说明:函数m文件第一行必须以单词function作为引导词。函数文件的文件命名规则与变量相同,且必须是函数名.m。当输出形参多于一个时,须用方括号括起来,以矩阵形式表示。程序中的变量均为局部变量,不保存在工作空间中。其变量只在函数运行期间有效。例4.2求圆的周长和面积function[l
s]=peri_area(r)%计算圆的周长和面积l=2*pi*r;%周长s=pi*r.^2;%面积peri_area.m只有一句注释时有多句注释时4.2Matlab的程序结构matlab的程序结构与c语言相似,主要有以下三种基本结构顺序结构选择结构循环结构1顺序结构(1)数据的输入input函数
调用格式
a=input(′提示信息′,′选项′)说明:选项用于控制输入数据格式,′s′允许输入字符串。除了字符串输入需加‘s’,其余一概不需要加(2)数据的输出disp函数调用格式
disp(输出项)说明:输出项可以是变量或字符串。输出变量时,不显示变量名。sprintf函数:字符串格式化命令主要功能是把格式化的数据写入某个字符串中调用格式
S=sprintf(格式,输出项)说明:输出格式控制同c语言输出项可以是变量或表达式x=pi;m=2;sprintf('x1=%f
x2=%4.3f\nx3=%10.9f',
(1+sqrt(5))/2,x,pi)sprintf(‘%d’,round(x))%舍为最接近的整数
sprintf('%s','hello')S=sprintf('Thearrayis%dx%d.',m,3);disp(S)例4.3
求一元二次方程ax^2+bx+c=0的根。%解一元二次方程%abc方程系数%x1x2为方程的根disp('plsinputabc')a=input('a=');b=input('b=');c=input('c=');d=b*b-4*a*c;x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);disp('x1x2is')disp([x1,x2])disp(sprintf('x1=%8.5f\nx2=%8.5f',x1,x2))(3)程序的暂停pause函数调用格式
pause(延迟秒数)说明:如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。若要强行中止程序的运行可使用Ctrl+C命令。2选择结构(1)
if语句a单分支if语句:
格式
if
条件语句组
endb双分支if语句:
格式
if
条件语句组1
else
语句组2
end2选择结构(1)
if语句c多分支if语句
格式
if
条件1
语句组1
elseif
条件2
语句组2……
elseif
条件m
语句组m
else
语句组n
end(2)switch语句switch表达式
case表达式1
语句组1case表达式2
语句组2……case表达式m
语句组motherwise
语句组nend说明:当表达式的值等于表达式1的值时,执行语句组1。当表达式的值等于表达式m的值时,执行语句组m。当表达式的值不等于case所列的表达式的值时,执行语句组n。当任意一个分支的语句执行完后,直接执行switch语句的下一句。(3)
try语句try
语句组1catch
语句组2end说明:
try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。A=[1,2,3;4,5,6];B=[7,8,9;10,11,12];tryC=A*B;catchC=A.*B;endCerro=lasterr%显示出错原因test.m3循环结构(1)
for语句格式
for
循环变量=表达式1:表达式2:表达式3
循环体语句
end说明:表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。(2)
while语句格式
while(条件)
循环体语句
end说明:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环。(3)
break和continue语句break语句:用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。continue语句:控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。例4.4求[100,200]之间第一个能被21整除的整数。%计算100~200之间第一个能被21整除的整数forn=100:200
ifrem(n,21)~=0
%rem(x,y):计算x./y的余数
continue
end
breakendn1文件的打开与关闭(1)文件的打开格式fid=fopen(文件名,打开方式)说明:其中文件名用字符串形式,表示待打开的文件。常见的打开方式有:′r′表示对打开的文件读数据;′r+′表示读写;′w′删除已经存在的文件内容或建立一个新文件,并打开文件写;′w+′删除已经存在的文件内容或建立一个新文件,读写;′a′表示在打开的文件末尾添加数据。fid用于存储文件句柄值,句柄值用来标识该数据文件,其它函数可以利用它对该数据文件进行操作。(2)文件的关闭格式sta=fclose(fid)说明:该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回–1。2文件的读写操作(1)二进制文件的读写操作说明:A用于存放读取的数据。COUNT返回所读取的数据元素个数fid为文件句柄precision代表读写数据的类型:′int′′float′′char′等size为可选项,若不选用则读取整个文件内容,若选用则它的值可以是下列值:(1)N表示读取N个元素到一个列向量。
(2)[M,N]表示读数据到M×N的矩阵中,数据按列存放。文件数据格式有两种形式,一是二进制文件,二是文本文件。对不同类型的文件读写是不同的。读二进制文件格式[A,COUNT]=fread(fid,size,precision)说明:COUNT返回所写的数据元素个数。fid为文件句柄。A用来存放写入文件的数据,precision用于控制所写数据的类型,其形式与fread函数相同。写二进制文件格式
COUNT=fwrite(fid,A,precision)(2)文本文件的读写操作说明:A用以存放读取的数据。COUNT返回所读取的数据元素个数。fid为文件句柄。format用以控制读取的数据格式,由%加上格式符组成,常见的格式符有%d,%f,%e,%c,%s等。size为可选项,决定矩阵A中数据的排列形式。读文本文件格式A=fscanf(fid,format)[A,COUNT]=fscanf(fid,format,size)说明:A存放要写入文件的数据。先按format指定的格式将数据矩阵A格式化,然后写入到fid所指定的文件。格式符与fscanf函数相同。写文本文件格式
COUNT=fprintf(fid,format,A)例4.5文件的操作clearx=0:0.1:2*pi;fid=fopen(′example.mat′,′wb+′)count=fwrite(fid,x,′float′)fclose(fid)fid1=fopen(′example.mat′,′rb+′)t=fread(fid1,′float′);y=[t,sin(t)];plot(t,y(:,2))fwrite(fid1,y,′float′)fclose(fid1)saveexample.daty-ASCIIclearclcx=0:0.1:2*pi;fid=fopen(‘ax.txt','w+');count=fprintf(fid,'%4.5f\n',x);fclose(fid);fid1=fopen(‘ax.txt','r+');t=fscanf(fid1,'%f');y=[t,sin(t)];plot(t,y(:,2));fid=fopen('ay.txt',’w+’);COUNT=fprintf(fid,'%4.5f\n',y);fclose(fid1);1函数的调用说明:函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致,否则会出错。函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。格式
[输出实参表]=函数名(输入实参表)例4.6利用函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换。
%定义函数文件tran.m:function[rho,theta]=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x);
%调用tran.m的命令文件exam406.mx=input('Pleaseinputx=:');y=input('Pleaseinputy=:');[rho,the]=tran(x,y);rhothe2函数参数的可调性说明:在调用函数时,用nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。只要在自定义函数文件中包含这两个函数,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。
nargin
和nargout例4.7
narginnargout用法示例。
%定义函数文件sumproduct.m:function[out1,out2]=sumproduct(x,y,z)ifnargin==0disp('noinputarguments'),returnelseifnargin==1sum=x;product=x;elseifnargin==2sum=x+y;product=x.*y;elseifnargin==3sum=x+y+z;product=x.*y.*z;elsedisp('toomanyinputarguments')endifnargout==0returnelseifnargout==1out1=sum;elseout1=sum;out2=product;end例4.7
narginnargout用法示例。
%调用sumproduct.msumproduct[x,y]=sumproduct(1,2,3)[x,y]=sumproduct(1)x=sumproduct(1,2,3)[x,y]=sumproduct(1,2,3,4)3定义全局变量说明:全局变量名一般用大写。自定义函数文件中的变量,作用区域仅在函数内部。对于自定义函数中的一些公用变量,可以定义成全局变量,在主程序中统一定义.格式
global
X例4.8
global用法示例。functiony=Ep(x)%计算弹性势能globalKy=K*x.^2/2;functionf=F(x)%计算弹力globalKf=K*x;
%计算exa
温馨提示
- 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
提交评论