![讲稿-程序设计-MATLAB入门.ppt_第1页](http://file.renrendoc.com/FileRoot1/2019-2/3/03a28d9e-edaa-42ee-a23c-032b6cd67299/03a28d9e-edaa-42ee-a23c-032b6cd672991.gif)
![讲稿-程序设计-MATLAB入门.ppt_第2页](http://file.renrendoc.com/FileRoot1/2019-2/3/03a28d9e-edaa-42ee-a23c-032b6cd67299/03a28d9e-edaa-42ee-a23c-032b6cd672992.gif)
![讲稿-程序设计-MATLAB入门.ppt_第3页](http://file.renrendoc.com/FileRoot1/2019-2/3/03a28d9e-edaa-42ee-a23c-032b6cd67299/03a28d9e-edaa-42ee-a23c-032b6cd672993.gif)
![讲稿-程序设计-MATLAB入门.ppt_第4页](http://file.renrendoc.com/FileRoot1/2019-2/3/03a28d9e-edaa-42ee-a23c-032b6cd67299/03a28d9e-edaa-42ee-a23c-032b6cd672994.gif)
![讲稿-程序设计-MATLAB入门.ppt_第5页](http://file.renrendoc.com/FileRoot1/2019-2/3/03a28d9e-edaa-42ee-a23c-032b6cd67299/03a28d9e-edaa-42ee-a23c-032b6cd672995.gif)
已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB入门,第三部分 程序设计,一、关系运算、逻辑运算,二、程序结构与控制,三、M文件,二、程序结构与控制语句,控制语句:forend循环、whileend循环、if-else-end、Swich语句,顺序结构(按照顺序执行命令) 循环结构 分支结构 理论上有了以上3种结构就可以构造功能强大的程序。由于matlab是C语言编成的,它的控制语句也同C语言有相似之处,但是又有不同之处,程序结构:,1、顺序结构,它是按照顺序执行命令。,input disp pause(或Ctrl+C),eg1. x=input(input x,please:); y=input(input y,please:); z=x; x=y; y=z; disp(x); disp(y);,Eg2. x=1:50; y=reshape(x,10,5); z=y; n=input(请输入显示次数:); t=input(请输入间隔时间:); for i=1:n disp(x=1-50) disp(z) pause(t) end,(1) for循环:允许一组命令以固定的和预定的次数重复 for x=array commands end 在for和end语句之间的命令串commands按数组(array)中的每一列执行一次. 在每一次迭代中,x被指定为数组的下一列,即在第n次循环中,x=array(:,n). 也可嵌套使用。,2.循环结构 循环是计算机解决问题的主要手段,许许多多实际问题大都包含有规律性的重复计算和对某些语句的重复执行。,eg2. 1+100 eg3. 1-20阶乘累加和 eg4.p30 双重循环实现希尔伯特矩阵,eg1. 对n=1,2,10,求xn= 的值.,eg2. 1+100 程序:s=0; for i=1:100 s=s+i; end s,法1: s=0; p=1; for i=1:20 p=p*i; s=s+p; end s,eg3. 1-20阶乘累加和,法2: s=0; for i=1:20 p=1; for k=1:i p=p*k; end s=s+p; end s,法3: s=0; for i=1:20 s=s+prod(1:i); end s,Eg1. for n=1:10 x(n)=sin(n*pi/10); end x,Eg4(见p30) for i=1:3 for j=1:4 a(i,j)=1/(i+j-1); end end a,a = 1 1/2 1/3 1/4 1/2 1/3 1/4 1/5 1/3 1/4 1/5 1/6,while (expression) commands end 只要在表达式(expression)里的所有元素为真,就执行while和end语句之间的命令串commands. 表达式一般由逻辑、关系运算以及一般的运算组成。,( 2) While循环 与for循环以固定次数求一组命令相反,while循环以不定的次数求一组语句的值.,eg2.找MATLAB软件最小的正数(预定义的)。P30 num=0;EPS=1; while (1+EPS)1 EPS=EPS/2; num=num+1; end num EPS=2*EPS,eg1: 设银行年利率为11.25%.将10000元钱存入银行,问多长时间会连本带利翻一番?money=10000 years=0 while money20000 years=years+1; money=money*(1+11.25/100); end years money,分析:Fibonacci数组的元素满足Fibonacci 规则: 现要求该数组中第一个大于10000的元素。,程序: a(1)=1;a(2)=1;i=2; while a(i)=10000 a(i+1)=a(i-1)+a(i); %当现有的元素仍小于10000时,求解下一个元素。 i=i+1; end; i a(i),Eg3.寻Fibonacci数组第一个大于10000的元素及位置。,3. (选择)分支结构 3.1 if-else-end结构 i) 有一个选择的一般形式是: if (expression) commands end 如果在表达式(expression)里的所有元素为真,就执行if和end语句之间的命令串commands.,x=input(x=) if x1 f=x2+1 end if x=1 f=2*x end,另: x=2,1 for i=1:2 if x(i)1 f=x(i)2+1 end if x(i)=1 f=2*x(i) end end,ii) 有三个或更多的选择的一般形式是: if (expression1) commands1 else if (expression2) commands2 else if (expression3) commands3 else if else commands end end end end,eg2.打折问题. 程序: cost=3;number=input(number=); if number20 sums=number*0.8*cost; else sums=number*0.95*cost; end sums,循环结构中常用的两个函数命令Break,continue一般与if语句配合使用. Break:语句用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环(多层循环只跳出最内层循环),继续执行循环语句的下一语句。 Continue:语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。,思1:求100,200之间第一个能被21整除的整数。,程序1: for n=100:200 if rem(n,21)=0 n break end end,程序2: for n=100:200 if rem(n,21)=0 continue end break end n,思2:分别用for和while循环找出100,200之间所有的素数。,I.for循环程序: for m=101:2:200 k=fix(sqrt(m); for i=2:k+1 if rem(m,i)=0 break; end end if i=k+1 disp(int2str(m) end end,II.while循环程序: m=101; while m=k+1 disp(int2str(m) end m=m+2; end,思考题2程序:,3.2 switch-case-end结构 if-else-end语句所对应的是多重判断选择,而有时也会遇到多分支判断选择的问题。MATLAB语言为解决多分支判断选择提供了switch-case语句。 swich语句是多分支选择语句,虽然在某些场合switch功能可以由if语句的多层嵌套来完成,但是会使程序变得复杂和难于修改维护,而利用switch语句构造多分支选择时显得更加简单明了、容易理解。,switch-case语句的一般表达形式为: switch表达式 case 选择判断值1 选择判断语句1 case 选择判断值2 选择判断语句2 otherwise 判断执行语句 end,程序1: N = input(输入分数); switch N case 100 %得分为100时 S =满分; %列为满分等级 case 90 %得分在90和99之间 S = 优秀; %列为优秀等级 case 80 %得分在80和89之间 S = 良好; %列为良好等级 case 60 %得分在60和79之间 S = 及格; %列为及格等级 otherwise %得分低于60。 S =不及格; %列为不及格等级 end disp(S),Eg1 .学生的成绩管理,用来演示switch结构的应用。 %划分区域:满分(100),优秀(90-99),良好(80-89),及格(60-79),不及格(60)。,程序2: N = input(输入分数); N1=fix(N/10); switch N1 case 10 %得分为100时 S =满分; %列为满分等级 case 9 %得分在90和99之间 S = 优秀; %列为优秀等级 case 8 %得分在80和89之间 S = 良好; %列为良好等级 case 6,7 %得分在60和79之间 S = 及格; %列为及格等级 otherwise %得分低于60。 S =不及格; %列为不及格等级 end disp(S),eg2: 某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示): price200 没有折扣 200price500 3%折扣 500price1000 5%折扣 1000price2500 8%折扣 2500price5000 10%折扣 5000price 14%折扣 输入所售商品的价格,求其实际销售价格。,程序如下: price=input(请输入商品原价格为:); switch fix(price/100) case 0,1 %价格小于200 rate=0; case 2,3,4 %价格大于等于200但小于500 rate=3/100; case num2cell(5:9) %价格大于等于500但小于1000 rate=5/100; case num2cell(10:24) %价格大于等于1000但小于2500 rate=8/100; case num2cell(25:49) %价格大于等于2500但小于5000 rate=10/100; otherwise %价格大于等于5000 rate=14/100; end price=price*(1-rate) %输出商品实际销售价格,Num2cell 将元素转化为元包,三. M文件,所谓M文件就是由MATLAB语言编写的可在MATLAB语言环境下运行程序源代码文件。由于目前的MATLAB软件是用C语言编写而成。因此,M文件的语法与C语言十分相似,并且语法简单,调试容易,人机交互性强。用户可以使用任何文字处理M文件的编写和修改。这些特点造就了matlab强大的可开发性和可扩展性,mathwork公司推出的一系列工具箱就是明证。用户还可以用M文件来建造和扩充属于自己的“库”。因此,有人说:“一个不了解M文件,没有掌握M文件的matlab使用者不能称其为一个真正的matlab用户。” M文件可以分为脚本文件(Script) (文本文件或命令式文件)和函数文件(Function)两种。M文件不仅可以在MATLAB的程序编辑器中编写,也可以在其他的文本编辑器中编写,并以“m”为扩展名加以存储。,matlab的.m文件保存的命名规则:(基本遵循变量命名) 1.文件名命名要用英文字符,第一个字符不能是数字(下划线呢?) 2.文件名不要取为matlab的一个固有函数,m文件名的命名尽量不要是简单的英文单词,最好是由大小写英文/数字/下划线等组成。原因是简单的单词命名容易与matlab内部函数名同名,结果会出现一些莫名其妙的错误。 3、文件存储路径一定为英文 4、m文件起名不能为两个单词,如three phase,应该写成three_phase或者ThreePhase,1. 脚本文件,命令行简单的叠加,matlab会自动按顺序执行文件中的命令 。这样就解决了用户在命令窗中运行许多命令的麻烦,还可以 避免用户做许多重复性的工作。,Eg1. 输入如下一段程序 (picture.m) x=linspace(0,2*pi,20); y=sin(x); plot(x,y,r+) title(2D plot),Eg2.% 新建M-file, area.m % 计算一个球的体积 r = input(Type radius 输入半径:); Area=pi*r2; volume=(4/3)*pi*r3; fprintf(半径 The radius is %12.5fn,r) fprintf(面积 The area of a circle%12.5fn,Area) fprintf(体积 The volume of a sphere%12.5fn,volume),提醒两点:1.标点符号的运用要恰到好处。 2.建立好的书写风格,保持程序的可读性。 3.养成良好的注释习惯,MATLAB的内部函数是有限的,有时为了研究某一个函数的各种性态,需要为MATLAB定义新函数,为此必须编写函数文件. 它主要用以解决参数传递和函数调用的问题。函数文件是文件名后缀为M的文件,这类文件的第一行必须是一特殊字符function开始,格式为: function 因变量名=函数名(自变量名) 函数值的获得必须通过具体的运算实现,并赋给因变量.,2. 函数M文件,* M文件建立方法与脚本M文件一样,M文件名必须与函数名一致. * 脚本文件运行时,所有数据都在内存中。而函数M文件除特别声明外都为局部变量(仅仅在函数运行期间有效)。一个函数的M文件与脚本文件在通信方面是不同的。函数与MATLAB工作空间之间的通信,只通过传递给它的变量和通过它所创建的输出变量。在函数内中间变量不出现在MATLAB工作空间,或与MATLAB工作空间不交互。,M文件函数必须遵循以下特定的规则。 1. 函数名和文件名必须相同。例如,函数fliplr 存储在名为fliplr.m 文件中。 2. MATLAB头一次执行一个M文件函数时,它打开相应的文本文件并将命令编辑成存储器的内部表示,以加速执行以后所有的调用。如果函数包含了对其它M文件函数的引用,它们也同样被编译到存储器。普通的脚本M文件不被编译,即使它们是从函数M文件内调用;打开脚本M文件,调用一次就逐行进行注释。 3. 在函数M文件中,到第一个非注释行为止的注释行是帮助文本。当需要帮助时,返回该文本。例如, help fliplr返回上述前八行注释。 4. 第一行帮助行,名为H1 行,是由lookfor 命令搜索的行。 5. 函数可以有零个或更多个输入参量。函数可以有零个或更多个输出参量。 6. 函数可以按少于函数M文件中所规定的输入和输出变量进行调用,但不能用多于函数M文件中所规定的输入和输出变量数目。如果输入和输出变量数目多于函数M文件中function 语句一开始所规定的数目,则调用时自动返回一个错误。 7. 当函数有一个以上输出变量时,输出变量包含在括号内。例如,V,D = eig(A)。不要把这个句法与等号右边的V,D 相混淆。右边的V,D 是由数组V和D 所组成。 8. 当调用一个函数时,所用的输入和输出的参量的数目,在函数内是规定好的。函数工作空间变量nargin 包含输入参量个数;函数工作空间变量nargout 包含输出参量个数。事实上,这些变量常用来设置缺省输入变量,并决定用户所希望的输出变量。,MATLAB语言的函数文件包含如下5个部分。 1.函数题头:指函数的定义行,是函数语句的第一行,在该行中将定义函数名、输入变量列表及输出变量列表等。 2.HI行:指函数帮助文本的第一行,为该函数文件的帮助主题,当使用lookfor命令时,可以查看到该行信息。 3.帮助信息:这部分提供了函数的完整的帮助信息,包括HI之后至第一个可执行行或空行为止的所有注释语句,通过MATLAB语言的帮助系统查看函数的帮助信息时,将显示该部分。 4.函数体;指函数代码段,也是函数的主体部分。 5.注释部分:指对函数体中各语句的解释和说明文本,注释语句是以%引导的。,例1:,首先建立一个M函数:fun1.m function Y= fun1(x) Y=(x3 - 2*x2 + x - 6.3)/(x2 + 0.05*x - 3.14); 在指令窗口运行以下指令: fun1(1)*fun1(2)+fun1(3)*fun1(3) ans = -12.6023,计算f(1)f(2)+f2(3).,例2:定义函数 f(x1,x2)=100(x2-x12)2+(1-x1)2,function f=fun(x) f=100*(x(2)-x(1)2)2+(1-x(1)2,1.建立M文件:fun.m,MATLAB(fun),2. 可以直接使用函数fun.m,例如:计算 f(1,2), 只需在MATLAB命令窗口键入命令: x=1 2 fun(x) 也可看p33例子,返回,Eg3.多个因变量的例子:p33下面 function mean,stdev=stat(x) m,n=size(x); if m=1 m=n; end mean=sum(x)/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度车辆借人使用期间车辆维修及费用承担协议
- 2025年度电影首映期间线上直播权购买合同
- 2025年中国圆柱滚子市场调查研究报告
- 2025-2030年文化主题文具礼盒行业深度调研及发展战略咨询报告
- 2025-2030年基因检测云服务平台行业深度调研及发展战略咨询报告
- 2025-2030年戒酒辅助疗程设计行业深度调研及发展战略咨询报告
- 2025-2030年厨电产品保险服务企业制定与实施新质生产力战略研究报告
- 2025-2030年护色剂天然无毒行业跨境出海战略研究报告
- 2025-2030年文化主题便签本行业跨境出海战略研究报告
- 2025-2030年基础数学教具套装企业制定与实施新质生产力战略研究报告
- 输变电工程监督检查标准化清单-质监站检查
- 2024-2025学年北京海淀区高二(上)期末生物试卷(含答案)
- 【超星学习通】马克思主义基本原理(南开大学)尔雅章节测试网课答案
- 公共组织学(第三版)课件:公共组织结构
- 人教版八年级上册地理2024-2025学年八年级上册地理第一章 从世界看中国 测试卷(一)(含答案)
- 2024化工园区危险品运输车辆停车场建设规范
- CKDMBD慢性肾脏病矿物质及骨代谢异常
- 潮汕英歌舞课件
- 田字格模版内容
- 第一章 公共政策分析的基本理论与框架
- 热连轧带钢生产工艺
评论
0/150
提交评论