




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB程序设计程序控制构造函数文献程序举例程序调试第二讲第1页m文献介绍顾客如想灵活应用matlab去处理实际问题,充足调用matlab科学技术资源,就需要编辑m文献.包括matlab语言代码文献称为m文献,其扩展名为m.编辑m文献可使用多种文本编辑器.第2页复习M文献用MATLAB语言编写程序,称为M文献。M文献能够根据调用方式不一样分为两类:命令文献(ScriptFile)和函数文献(FunctionFile)。函数文献文献名必须与其函数名相同。第3页M文献包括两部分:注释文献和程序文献symsxy%symbolvariablesf=x^2+y;fi=finverse(f,y)%functionalinverse
程序部分第4页MATLAB运算符MATLAB运算符可分为三类:算术运算符、关系运算符和逻辑运算符。其中算术运算符优先级最高,其次是关系运算符,再其次是逻辑运算符。算术运算符在前面已经介绍,这里只介绍关系运算符和逻辑运算符.例1+2*3>8+9返回01+2<5&15+2*3>8+9返回11+2*(3>8)+9返回10第5页MATLAB运算符1.关系运算符关系运算符对于程序流程控制非常有用.MATLAB共有六个关系运算符,它们分别是<不大于;<=不大于等于;>大于;>=大于等于;﹦﹦等于;~=不等于
关系运算符能够比较同型矩阵,此时将生成一种0-1矩阵,当对应元素经关系运算为真时,对应位置上生成1,不然为0。关系运算符也能够比较标量和矩阵,此时是标量与矩阵每个元素分别比较,生成一种0-1矩阵.第6页MATLAB运算符2.逻辑运算符MATLAB有三个逻辑运算符:与(&)或(|)非(~)。对于数值矩阵,当元素为0时,逻辑上为假;当元素为非0时,逻辑上为真.同关系运算符同样,逻辑运算符两端运算数能够是同型矩阵,对两矩阵对应元素分别运算,成果为一种0-1矩阵.当逻辑体现式值为真时,赋值1,不然为0.同样,其中一种矩阵也能够是标量。与(&)运算:两个运算数都为真时,成果为真,其他情况下(一真一假或两个都假)成果为假.或(|)运算:两个运算数都为假时,成果为假,其他情况下(一真一假或两个都真)为真.非(~)运算:只有一种运算数,当该运算数为真时,成果为假,不然,成果为真.第7页次序构造1.数据输入从键盘输入数据,则能够使用input函数来进行,该函数调用格式为:A=input(提醒信息,选项);其中提醒信息为一种字符串,用于提醒顾客输入什么样数据。假如在input函数调用时采取's'选项,则允许顾客输入一种字符串。例如,想输入一种人姓名,可采取命令:xm=input('Whatisyourname?','s');R=input('Howmanyapples:')程序控制构造第8页2.数据输出
MATLAB提供命令窗口输出函数主要有disp函数,其调用格式为disp(输出项)其中输出项既能够为字符串,也能够为矩阵。disp(‘a’)和disp(a)分别返回什么成果?第9页例1分别建立命令文献和函数文献,将华氏温度f转换为摄氏温度c。程序1:首先建立命令文献并以文献名f2c.m存盘。clear;%清除工作空间中变量f=input('InputFahrenheittemperature:');c=5*(f-32)/9然后在MATLAB命令窗口中输入f2c,将会执行该命令文献,执行情况为:InputFahrenheittemperature:73c=22.7778第10页程序2:首先建立函数文献f2c.m。functionc=f2c(f)c=5*(f-32)/9然后在MATLAB命令窗口调用该函数文献。clear;y=input('InputFahrenheittemperature:');x=f2c(y)输出情况为:InputFahrenheittemperature:70c=21.1111x=21.1111第11页例2输入x,y值,并将它们值交换后输出。
程序如下:x=input('Inputxplease.');y=input('Inputyplease.');z=x;x=y;y=z;disp(x);disp(y);第12页3.程序暂停暂停程序执行能够使用pause函数,其调用格式为:pause(延迟秒数)假如省略延迟时间,直接使用pause,则将暂停程序,直到顾客按任一键后程序继续执行。若要强行中断程序运行可使用Ctrl+C命令。第13页选择构造1.if语句(条件转移构造)在MATLAB中,if语句有3种格式。(1)单分支if语句:if条件语句组end当条件成立时,则执行语句组,执行完之后继续执行if语句后继语句,若条件不成立,则直接执行if语句后继语句。第14页例3求一元二次方程ax2+bx+c=0根。程序如下:a=input('a=?');b=input('b=?');c=input('c=?');d=b*b-4*a*c;ifd>=0x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);end第15页(2)双分支if语句:if条件语句组1else语句组2end当条件成立时,执行语句组1,不然执行语句组2,语句组1或语句组2执行后,再执行if语句后继语句。第16页
例4计算分段函数值。
程序如下:x=input('请输入x值:');ifx<=0y=(x+sqrt(pi))/exp(2);elsey=log(x+sqrt(1+x*x))/2;endy第17页
(3)多分支if语句:if条件1语句组1elseif条件2语句组2……elseif条件m语句组melse语句组nend语句用于实现多分支选择构造。第18页2.switch语句(开关构造)switch语句根据体现式取值不一样,分别执行不一样语句,其语句格式为:switch体现式case体现式1语句组1case体现式2语句组2……case体现式m语句组motherwise语句组nend第19页当体现式值等于体现式1值时,执行语句组1,当体现式值等于体现式2值时,执行语句组2,…,当体现式值等于体现式m值时,执行语句组m,当体现式值不等于case所列体现式值时,执行语句组n。当任意一种分支语句执行完后,直接执行switch语句下一句。第20页例5某班级对学生成绩划分等级,标准如下(分数用mark来表达):
90≤mark≤100等级为A80≤mark<90等级为B70≤mark<80等级为C60≤mark<70等级为D0≤mark<60等级为E输入学生成绩,输出其成绩等级(百分制换五分制)。第21页
程序如下:mark=input('请输入学生成绩');switchfix(mark/10)case{10,9}%成绩在90与100之间grade='A';case{8}%成绩大于等于80但不大于90grade='B';case{7}%成绩大于等于70但不大于80grade='C';case{6}%成绩大于等于60但不大于70grade='D';otherwise%成绩低于60grade='E';endgradeceil,floor,round,fix.上取整下取整最邻近取整朝零取整ceil(1.8)?floor(1.8)?fix(1.8)?fix(-1.8)?round(1.8)?round(-1.8)?第22页3.try语句语句格式为:try语句组1catch语句组2endtry语句先试探性执行语句组1,假如语句组1在执行过程中出现错误,则将错误信息赋给保存lasterr变量,并转去执行语句组2。第23页例6矩阵乘法运算要求两矩阵维数相容,不然会犯错。先求两矩阵乘积,若犯错,则自动转去求两矩阵点乘。程序如下:A=[1,2,3;4,5,6];B=[7,8,9;10,11,12];tryC=A*B;catchC=A.*B;endClasterr%显示犯错原因第24页循环构造1.for语句for语句格式为:for循环变量=体现式1:体现式2:体现式3循环体语句end其中体现式1值为循环变量初值,体现式2值为步长,体现式3值为循环变量终值。步长为1时,体现式2能够省略。第25页例7一种三位正整数各位数字立方和等于该数本身则称该数为水仙花数。输出所有水仙花数。
程序如下:form=100:999m1=fix(m/100);%求m百位数字m2=rem(fix(m/10),10);%求m十位数字m3=rem(m,10);%求m个位数字ifm==m1*m1*m1+m2*m2*m2+m3*m3*m3disp(m)endendrem:取余第26页例8当n=100时,y是1到(2n-1)奇数倒数之和,求y值。
程序如下:y=0;n=100;fori=1:ny=y+1/(2*i-1);endy第27页在实际MATLAB编程中,采用循环语句会降低其执行速度,因此前面程序通常由下面程序来代替:n=100;y1=1:2:2*n-1;y=sum(1./y1);y第28页for语句更一般格式为:for循环变量=矩阵体现式循环体语句end执行过程是依次将矩阵各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完成。第29页
例9写出下列程序执行成果。s=0;a=[1,3,4;15,16,17;18,19,20;21,22,23];fork=as=s+k;enddisp(‘s’);第30页2.while语句循环次数不确定while语句一般格式为:while(条件)循环体语句end其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,假如不成立则跳出循环。第31页例10从键盘输入若干个数,当输入0时结束输入,求这些数平均值和它们之和。程序如下:sum=0;cnt=0;val=input('Enteranumber(endin0):');while(val~=0)sum=sum+val;cnt=cnt+1;val=input('Enteranumber(endin0):');endif(cnt>0)summean=sum/cntend第32页3.break语句和continue语句与循环构造有关语句尚有break语句和continue语句。它们一般与if语句配合使用。break语句用于终止循环执行。当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句下一语句。continue语句控制跳过循环体中某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下语句,继续下一次循环。第33页例11求[100,200]之间第一种能被21整除整数。程序如下:forn=100:200ifrem(n,21)~=0continueendbreakendn第34页4.循环嵌套假如一种循环构造循环体又包括一种循环构造,就称为循环嵌套,或称为多重循环构造。
例12若一种数等于它各个真因子之和,则称该数为完数,如6=1+2+3,因此6是完数。求[1,500]之间所有完数。form=1:500s=0;fork=1:m/2ifrem(m,k)==0s=s+k;endendifm==sdisp(m);endend第35页函数文献基本构造函数文献由function语句引导,其基本构造为:function输出形参表=函数名(输入形参表)注释说明部分函数体语句其中以function开头一行为引导行,表达该M文献是一种函数文献。函数名命名规则与变量名相同。输入形参为函数输入参数,输出形参为函数输出参数。当输出形参多于一种时,则应当用方括号括起来。函数文献第36页例13编写函数文献求半径为r圆面积和周长。函数文献如下:function[s,p]=fcircle(r)%CIRCLEcalculatetheareaandperimeterofacircleofradiir%r圆半径%s圆面积%p圆周长%2023年7月30日编s=pi*r*r;p=2*pi*r;第37页函数调用函数调用一般格式是:[输出实参表]=函数名(输入实参表)要注意是,函数调用时各实参出现次序、个数,应与函数定义时形参次序、个数一致,不然会犯错。函数调用时,先将实参传递给对应形参,从而实现参数传递,然后再执行函数功能。第38页
例14利用函数文献,实现直角坐标(x,y)与极坐标(ρ,θ)之间转换。函数文献tran.m:function[rho,theta]=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x);调用tran.m命令文献main1.m:x=input('Pleaseinputx=:');y=input('Pleaseinputy=:');[rho,theta1]=tran(x,y);rhotheta1在MATLAB中,函数能够嵌套调用,即一种函数能够调用别函数,甚至调用它本身。一种函数调用它本身称为函数递归调用。第39页
例15利用函数递归调用,求n!。n!本身就是以递归形式定义:显然,求n!需要求(n-1)!,这时可采取递归调用。递归调用函数文献factor.m如下:functionf=factor(n)ifn<=1f=1;elsef=factor(n-1)*n;%递归调用求(n-1)!end第40页函数参数可调性在调用函数时,MATLAB用两个永久变量nargin和nargout分别统计调用该函数时输入实参和输出实参个数。只要在函数文献中包括这两个变量,就能够精确地懂得该函数文献被调用时输入输出参数个数,从而决定函数如何进行处理。第41页
例16nargin使用方法示例。函数文献examp.m:functionfout=examp(a,b,c)ifnargin==1fout=a;elseifnargin==2fout=a+b;elseifnargin==3fout=(a*b*c)/2;end命令文献mydemo.m:x=[1:3];y=[1;2;3];examp(x)examp(x,y')examp(x,y,3)第42页全局变量与局部变量全局变量用global命令定义,格式为:global变量名例17全局变量应用示例。先建立函数文献wadd.m,该函数将输入参数加权相加。functionf=wadd(x,y)globalALPHAB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学三年级数学五千以内加减混合两步运算过关练习口算题带答案
- 三位数除以两位数过关考核习题大全附答案
- 临时活动工作人员协议
- 生活共享项目保证金合同
- 跨境电商运营服务合同
- 房屋买卖定金计收协议
- 防火设备采购协议
- 汉语否定副词“不”和“没(有)”的主观性分析与教学研究-以开罗大学孔子学院为例
- 严寒地区建筑节能改造的衍生方法与多目标决策模型研究
- 基于CO2激光熔接技术的全玻璃光纤准直器设计
- 第4章 带传动设计 (1)课件
- 人教版七年级下册英语单词辨音训练题(一)
- 公共政策的经济学分析课件
- 新世纪健康饮食课件
- 上海市2013年基准地价更新成果
- 道德与法治四年级(下)第二单元单元备课
- 苏州市吴江区2021-2022苏教版五年级数学下册期末试卷真题
- 《红楼梦》PPT课件(优秀)
- 新高考英语读后续写——故事编写思路
- “363生态课堂”模式及流程
- (高清版)建筑工程风洞试验方法标准JGJ_T 338-2014
评论
0/150
提交评论