版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章MATLAB程序设计5.1M文件5.2运算符5.3循环结构5.4选择结构5.5程序设计的有关问题5.1M文件MATLAB软件的使用有两种常用方式:人机直接交互的命令行操作方式MATLAB作为一种高级“数学演算和图视器”M文件的编程工作方式MATLAB作为一种高级计算机程序语言,不仅可以象C,FORTRAN等语言一样进行程序设计,而且由于其本身的特点,更具有语言简单、可读性强、调试容易、调用方便等其它语言无法比拟的优点。5.1M文件为了编写、运行、调试和修改MATLAB程序的方便,可以把程序中的命令写入一个文本文件,当用户输入运行这个程序的指令时,程序中的命令就由MATLAB按顺序逐条执行。MATLAB可以识别的文本文件称为M文件,它可以用适当的文本编辑器创建,但其扩展名必须是“m”。即M文件的文件名应为:***.m。M文件有两种形式:(1)命令式(Script)(2)函数式(Function)(1)命令式M文件
命令式M文件就是一个MATLAB命令的集合,即将一组相关的MATLAB命令编辑在同一个文本文件中,将此文件保存在指定的文件夹中。运行时只需在命令窗口输入文件名,MATLAB就会自动按顺序执行文件中的命令。这样就解决了在命令窗口逐条运行多条命令的麻烦,也可以避免作许多重复性的工作。命令式M文件在运行中可以调用MATLAB工作空间(WorkSpace)的所有数据(变量),而且所产生的变量均一直保存在工作空间中,直到用户清除为止(全局变量)。例5.1建立命令文件将给定矩阵a,b的值互换。在M文本编辑器窗口输入如下命令:c=a;a=b;b=c;a,b并以文件名exam1.m保存在MATLAB\work文件夹中。在MATLAB命令窗口输入并运行a=1:8;b=[11,12,13,14;15,16,17,18];exam1a=1112131415161718b=12345678(2)函数式M文件
为了实现计算中的参数传递,需要用到函数式M文件。大多数函数式M文件有返回值。MATLAB中的绝大多数功能函数(命令)都是由函数式M文件实现的。使用MATLAB函数时,MATLAB根据用户通过有效途径传递给它的输入变量,计算出所要求解的结果。然后,把这些结果按要求返回给用户。(2)函数式M文件
函数式M文件执行之后,除最后返回值之外,不保留任何中间过程。即函数式M文件所定义的变量仅在函数内部起作用(局部变量),并随文件调用(执行)的结束而被清除。由MATLAB函数执行的命令,以及由这些命令所创建的中间变量,都是隐含的。所有可见的东西只是输入和输出,也就是说函数可以看成是一个黑箱,把一些数据送进去,经过加工处理,把结果送出来。函数式M文件的结构函数式M文件一般由五部分构成函数定义行(必须在文本的第一行)H1行(可省略,如果有,其位置必须在函数定义行的下一行)函数帮助文本(可省略,如果有,其位置必须紧随H1行)注释(可省略,如果有,其位置一般在函数帮助文本下,与函数帮助文本隔一行)函数体注意
函数式M文件的第一行,即函数定义行,其格式必须为function[输出变量]=函数名(输入变量)保存函数式M文件时,文件名应与函数名相同。H1行的内容可由MATLAB命令lookfor搜索到,因此该行应该提供函数的重要信息。H1行和函数帮助文本可由help命令显示。例5.2编写函数式M文件求半径为r的圆的面积和周长function[x,y]=cir(r)函数定义行%CIRareaandperimeterofacircleH1行函数帮助文本函数体x=pi*r^2;y=2*pi*r;%Withoneoutputargument,x=cir(r)%istheareaxofacircleofradiir.%Withtwooutputargument,[x,y]=cir(r)%areareaxandperimeteryofacircle%ofradiir.%r:圆半径a:圆面积p:圆周长%2004年9月编注释将此函数文件以文件名cir存入matlab\work文件夹中,然后在MATLAB命令窗口调用该函数例如运行如下命令x=cir(10)[y,z]=cir(5)x=314.1593y=78.5398z=31.4159helpcirCIRareaandperimeterofacircleWithoneoutputargument,x=cir(r)istheareaofacircleofradiir.Withtwooutputargument,[x,y]=cir(r)areareaxandperimeteryofacircleofradiir.r:圆半径a:圆面积p:圆周长H1行函数帮助文本5.2运算符
1.算术运算符(略)2.关系运算符<小于<=小于等于>大于>=大于等于==等于~=不等于关系运算法则关系运算符可以比较两个同型矩阵,关系运算的结果生成一个同型的0-1矩阵。两矩阵相应元素比较结果为真时,结果矩阵对应位置生成1,否则为0。注:关系运算也适用于矩阵与数量。
例5.3A=[123;456;789]B=5*ones(3)P=A<=B,Q=A>BR=A==B,S=A~=BR=000010000A=123B=555456555789555P=A<=BQ=A>BP=111110000Q=000001111R=A==BS=A~=BS=1111011113.逻辑运算符
逻辑运算符包括三种
&(and),|(or),~(not)逻辑运算可以进行同型矩阵或一个矩阵的运算,运算的结果生成一个同型的0-1矩阵。&(and)两同型矩阵,相同位置元素都非0时,结果矩阵相应位置为1,否则为0;|(or)两同型矩阵,相同位置元素不全为0时,结果矩阵相应位置为1,否则为0;~(not)对一个矩阵,元素非0时,结果矩阵相应位置为0,否则为1。R=001100A=120B=-100034010P=A&BQ=A|BP=100010Q=110011R=~AS=~BS=011101例5.4逻辑运算的例子A=[1,2,0;0,3,4],B=[-1,0,0;0,1,0]P=A&B,Q=A|B,R=~A,S=~B在一个表达式中,算术运算符优先级最高,其次是关系运算符,最低级别是逻辑运算符。圆括号可以改变其顺序。注意
例如x1=1&5<6-4x1=0x2=1&(5<6)-4x3=(1&5)<6-4x4=((1&5)<6)-4x2=1x3=1x4=-35.3循环结构在实际问题中,经常会遇到有规律的重复运算,或在程序中对某些语句进行重复执行,这就需要用到循环语句。在循环语句中,每循环一次,就必须作出判断,是继续循环执行还是终止执行跳出循环,这个判断的依据称为循环的终止条件。MATLAB语言提供了两种循环方式:for循环和while循环5.3.1for循环for循环的特点是它的循环判断条件通常是对循环次数的判断。即一般情况下,for循环语句的循环次数是已知的。格式:
for
k=a:s:b
循环体语句
end其中k是循环变量,a、b和s分别是循环的初始值、终止值的限制值和步长(s=1时可以省略)程序运行时,首先将a的值赋给k,执行循环体语句。执行完一次循环之后,k自增一个s值,然后判断k的值是否介于a和b之间,如果满足仍然执行循环体,直至不满足为止。此时将结束for语句的执行,而继续执行end语句的后续语句。例5.5求前100个自然数和的程序n=100;a=0;%定义初始值fork=1:n%定义循环变量a=a+k;%循环变量累加enda%输出结果a=5050例5.6求数列n2+3n前10项构成的向量n=10;a=[];%定义初始值fork=1:n%定义循环变量a(k)=k^2+2*k;%计算a的第k个分量enda%输出结果a=3815243548638099120a=zeros(1,10);注意在编制计算程序时应尽量避免过多使用循环语句,以提高程序运行速度。例如前面的程序可以用下面的程序代替
n=100;k=1:n;a=sum(k)a=5050为了测定程序运行所用的时间,可以启动秒表定时器tic,toc格式:ticMATLAB程序toc5.3.2while
循环while循环的判断控制一般是一个逻辑判断语句,通常用于循环次数是未知的情况。格式:
while
关系表达式循环体语句
end关系表达式的值为1(真)时,语句被反复执行,直至关系表达式的值为0(假)时终止,跳出循环执行end的后续语句。例5.7求使2n>1000的最小正整数n输入并运行如下程序k=1;while2^k<=1000k=k+1;endkk=10注意在设计多重循环时,要注意内、外循环之间的关系以及各语句放置的位置,不要搞错。例5.8求5阶方阵A=(aij),其中aij=i2+j2解:输入并运行如下程序forn=1:5
form=5:-1:1 A(n,m)=n^2+m^2;
end
end
AA=25101726581320291013182534172025324126293441505.4选择结构5.4.1if语句在MATLAB中,if语句有3种格式1.单分支if语句格式:当关系表达式的值为1(真)时,则执行语句组,执行完之后继续执行end的后继语句,若关系表达式的值为0(假)时,则直接执行end的后继语句。if
关系表达式语句组
end例5.9编写程序判断一个给定矩阵A的第1列元素是否全为0,若全为0,则从矩阵A中删除第1列。解:编写如下程序:if
A(:,1)==0A=A(:,2:length(A))end如果A=[023;056],运行结果为A=2356
2.双分支if语句格式:
if
关系表达式语句组1
else语句组2
end当关系表达式的值为1(真)时,执行语句组1,否则执行语句组2,语句组1或语句组2执行后,再执行end的后继语句。例5.10判定给定整数N的奇偶性输入并运行如下的程序:ifrem(N,2)==0
'Nisaeven.'else
'Nisaodd.'end如果N是偶数,输出字符串:ans=Nisaeven.如果N是奇数,输出字符串:ans=Nisaodd.
3.多分支if语句格式:if关系表达式1语句体1elseif关系表达式2语句体2······elseif关系表达式n语句体nelse语句体n+1end
如果关系表达式j(j=1,2,…,n)为真,则执行语句j,然后执行end的后续语句;如果if和elseif后所有的关系表达式都为假时,则执行语句n+1,然后执行end的后续语句。例5.11复杂条件语句的例子给定整数N,输入并运行如下的程序:ifN<0
'Nisanegativenumber.'elseifN==0
'N=0'elseifrem(N,2)==0
'Nisapositiveeven.'else
'Nisapositiveodd.'end5.4.2break语句break语句的作用是导致for,while等循环语句的人为终止(不必等待循环自然结束)。如果一个循环语句内包含break语句时,则该循环语句内部应设置是否执行break语句的条件语句。若执行break语句,程序将跳出该循环。break语句一般与if语句配合使用。对于多重循环,break语句仅对本层循环起作用。例5.12
鸡兔同笼问题求解程序h=input('inputthenumberofheadh=');f=input('inputthenumberoffeetf=');fork=0:h
if2*k+4*(h-k)==fbreakendendji=k,tu=h-k5.5程序设计的有关问题5.5.1
两种M文件的比较命令式M文件与函数式M文件形式上的差别就是有无函数定义行,即函数式M文件去掉函数定义行就转变为命令式M文件。命令式M文件与函数式M文件本质的差别是:命令式M文件的所有变量都是全局变量,函数式M文件的中间变量都是局部变量。
例5.12鸡兔同笼问题求解的比较
命令式M文件h=input('h=');f=input('f=');fork=0:h
if2*k+4*(h-k)==f
break
endendj=k,t=h-k函数式M文件function[j,t]=jth(h,f)fork=0:h
if2*k+4*(h-k)==f
break
endendj=k;t=h-k;运行结果比较函数式M文件clear[j,t]=jth(36,100)j=22t=14whoYourvari
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临床烤灯(红外线灯)使用技术操作评分标准
- 暴雨洪涝灾害应急处置方案
- 甜樱桃设施栽培技术规程
- 温通刮痧操作技法手册
- 客户满意度调查服务规范
- 肉羊羔羊开口料饲喂标准
- 轮椅转运老人安全操作流程手册
- 体检报告精准解读操作规范
- 生态破坏应急预案编制指南
- 颈肩腰腿痛功能评估规范
- 水利工程建设安全监督工作指南(贵州省)
- 2025年焊工(高级)证考试题库及答案
- 注册安全工程师初级考试题库及答案
- 安宁疗护服务创新创业项目商业计划书
- 2025年湖南省初中学业水平考试中考(会考)地理试卷(真题+答案)
- 2025年7月浙江高中学业水平考试数学试卷真题(含答案详解)
- 高中政治七本教材核心知识点-2025届高考政治三轮冲刺统编版
- 职业性肌肉骨骼疾患课件
- 霍乱防治培训课件
- 循环水控制管理制度
- 中医治疗高血脂课件图片
评论
0/150
提交评论