matlab程序设计(一).ppt_第1页
matlab程序设计(一).ppt_第2页
matlab程序设计(一).ppt_第3页
matlab程序设计(一).ppt_第4页
matlab程序设计(一).ppt_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章MATLAB程序设计 第一讲 本章学习目标 掌握建立和执行M文件的方法 掌握利用if语句 switch语句实现选择结构的方法 掌握利用for语句 while语句实现循环结构的方法 熟悉利用向量运算来代替循环操作的方法 掌握定义和调用MATLAB函数的方法 5 1M文件介绍 matlab作为一种高级计算语言 它不仅可以象前面所介绍的那样 以一种人机交互式的命令行方式工作 还可以象basic c c 等其他高级计算机语言一样进行控制流的程序设计 即编制一种以m为扩展名的文本文件 简称为M文件 而且 由于matlab本身的一些特点 M文件的编制同basic c c 等比较起来 有许多无法比拟的优点 如语言简单 可读性强 调试容易及调用方便等 因此 Mathworks公司又把matlab语言作为第4代编程语言 5 1M文件介绍 matlab命令有两种执行方式 交互式的命令执行方式 在命令窗口逐条输入命令 matlab逐条解释执行 M文件的程序执行方式 将有关命令编成程序存储在一个扩展名为 m的文件中 matlab称M文件 每次运行该程序 matlab自动依次打开执行该文件中的命令 直至全部命令执行完毕 5 1M文件介绍 5 1 1M文件的建立与打开1 建立新的M文件 1 命令按钮操作 2 菜单操作 3 命令操作 5 1M文件介绍 2 打开已有的M文件 在当前目录窗口选中要打开的m文件 双击鼠标左键 命令按钮操作 菜单操作 命令操作 5 1M文件介绍 5 1 2M文件的分类M文件可以根据调用方式的不同分为两类 命令文件 ScriptFile 和函数文件 FunctionFile 5 1M文件介绍 5 1 2 1命令式文件命令式文件的运行相当于在命令窗口中逐条输入并运行命令 因此 在编制此类文件时 只需把所要执行的命令按行编辑到指定的文件中 且变量不需预先定义 也不存在文件名对应问题 但要注意 a 标点符号的运用要恰到好处 b 建立好的书写风格 保持程序的可读性 c 不要忘记m为文件的扩展名 5 1M文件介绍 例5 1 建立一命令集以实现绘制LOGO图 logotu mloadlogosurf L R colormap M n size L 1 axisoffaxis 1n1n 20 35 view 37 5 60 title LifeistooshorttospendwritingDOloops 5 1M文件介绍 5 1M文件介绍 说明 以符号 引导的行是注释行 不可执行 可供help命令查询 不需要用end语句作为M文件的结束标志 在运行此函数之前 需要把它所在目录加到matlab的搜索路径上去 或将文件所在目录设为当前目录 5 1M文件介绍 5 1 2 2函数式文件为了实现计算中的参数传递 需要用到函数文件 函数式的标志是第一行为function语句 函数文件有返回值 也可只执行操作而无返回值 大多数函数式文件有返回值 函数式文件在matlab中应用十分广泛 matlab提供的绝大多数功能函数都是有函数式文件实现的 函数式文件执行后 只保留最后结果 不保留任何中间过程 所定义的变量也仅在函数内部起作用 并随调用的结束而被清除 5 1M文件介绍 例5 2 计算第n个Fibonnaci数 functionf fibfun n FIBFUNForcalculatingFibonaccinumbers Incidengtally thenameFibonaccicomesfrom FiliusBonassi or sonofBonassus fibfun mifn 2f fibfun n 1 fibfun n 2 elsef 1 end 5 1M文件介绍 说明 要特别注意文件名与函数名一一对应 这样才能保证调用成功 function后的语句定义函数名和输入输出参数 在函数被调用过程中将按此输入输出格式执行 要养成良好的注释习惯 以方便自己和其他用户的调用 5 1M文件介绍 例5 3 在线查询fibfun m函数的使用说明 在MATLAB的主窗口中输入help命令 以查询有关帮助信息 helpfibfunFIBFUNForcalculatingFibonaccinumbers Incidengtally thenameFibonaccicomesfromFiliusBonassi or sonofBonassus fibfun m 用lookfor命令进行关键字查询 lookforfibFIBFUNForcalculatingFibonaccinumbers 5 1M文件介绍 说明 此例中help命令运行后所显示的是M文件注释语句中的第一个连续块 被空行隔离的其他注释语句 将被matlab的help帮助系统忽略 lookfor命令运行后 显示出函数文件的第一注释行 一般来说 为了利用MATLAB对关键字的搜索功能 在编制M文件时 应在第一行注释中尽可能多地包含函数的特征信息 为了使help和lookfor命令对用户所要查询的函数进行搜索 应把创建的新函数放在MATLAB的搜索路径上 5 1M文件介绍 命令式文件与函数式文件的区别 1 命令文件没有输入参数 也不返回输出参数 而函数文件可以带输入参数 也可返回输出参数 2 命令文件对MATLAB工作空间中的变量进行操作 文件中所有命令的执行结果也完全返回到工作空间中 而函数文件中定义的变量为局部变量 当函数文件执行完毕时 这些变量被清除 3 命令文件可以直接运行 在MATLAB命令窗口输入命令文件的名字 就会顺序执行命令文件中的命令 而函数文件不能直接运行 而要以函数调用的方式来调用它 5 2程序控制结构 5 2 1顺序结构顺序结构是指按照程序中语句的排列顺序依次执行 一般涉及数据的输入 数据的计算或处理 数据的输出等内容 1 数据的输入从键盘输入数据 则可以使用input函数来进行 该函数的调用格式为 5 2程序控制结构 A input 提示信息 选项 其中 提示信息 为一个字符串 用于提示用户输入什么样的数据 例如 从键盘输入A矩阵 可以采用下面的命令来完成 A input 输入A矩阵 如果在input函数调用时采用 s 选项 则允许用户输入一个字符串 例如 想输入一个人的姓名 可采用命令 xm input What syourname s 5 2程序控制结构 2 数据的输出MATLAB提供的命令窗口输出函数主要有disp函数 其调用格式为disp 输出项 其中 输出项既可以为字符串 也可以为矩阵 例如 A Hello World disp A 5 2程序控制结构 例5 3 求一元二次方程ax 2 bx c 0的根 由于MATLAB能进行复数运算 所以不需要判断方程的判别式 而直接根据求根公式求根 程序如下 a input a b input b c input c d b b 4 a c x b sqrt d 2 a b sqrt d 2 a disp x1 num2str x 1 x2 num2str x 2 5 2程序控制结构 3 程序的暂停当程序运行时 为了查看程序的中间结果或者观看输出的图形 有时需要暂停程序的执行 这时可以使用pause函数 其调用格式为pause 延迟秒数 如果省略延迟时间 则将暂停程序 直到用户按任一键后程序继续执行 若要强行中止程序的运行可使用Ctrl C组合键 5 2程序控制结构 5 2 2选择结构选择结构是根据给定的条件成立或不成立 分别执行不同的语句 1 if语句 1 单分支if语句 if条件语句块end当条件成立时 则执行语句组 执行完之后继续执行if语句的后继语句 若条件不成立 则直接执行if语句的后继语句 5 2程序控制结构 2 双分支if语句 if条件语句块1else语句块2end当条件成立时 执行语句组1 否则执行语句组2 语句组1或语句组2执行后 再执行if语句的后继语句 5 2程序控制结构 例5 4 计算分段函数 x input 请输入x的值 ifx 0y log x x 1 sqrt x x 1 elsey sin x x 1 enddisp y 5 2程序控制结构 上例也可以用单分支if语句来实现 x input 请输入x的值 y log x x 1 sqrt x x 1 ifx 0y sin x x 1 end 5 2程序控制结构 3 多分支if语句 if条件1语句块1elseif条件2语句块2 elseif条件n语句块nelse语句块n 1end 5 2程序控制结构 例5 5 输入一个字符 若为大写字母 则输出其对应的小写字母 若为小写字母 则输出其对应的大写字母 若为数字字符则输出其对应数的平方 若为其他字符则原样输出 5 2程序控制结构 c input 请输入一个字符 s ifc A end 5 2程序控制结构 例5 6 B样条函数的判断函数 functionf pdbsline x ifx 0f 0 elseifx 1f x elseifx 2f 2 x elsef 0 end 5 2程序控制结构 2 switch语句switch语句根据表达式的取值不同 分别执行不同的语句 其语句格式为switch表达式case结果表1语句块1 5 2程序控制结构 case结果表2语句块2 case结果表n语句块notherwise语句块n 1end 5 2程序控制结构 switch语句的执行过程 5 2程序控制结构 switch子句后面的表达式应为一个标量或一个字符串 case子句后面的结果不仅可以为一个标量或一个字符串 而且还可以为一个将多个结果用大括号括起来的单元数据 Cell 如果case子句后面的结果为一个单元数据 则表达式的值等于该单元数据中的某个元素时 执行相应的语句组 5 2程序控制结构 例5 7 将例5 5改用switch语句实现 c input 请输入一个字符 s cc abs c switch cc casenum2cell abs A abs Z disp lower c casenum2cell abs a abs z disp upper c casenum2cell abs 0 abs 9 disp abs c abs 0 2 otherwisedisp c end 5 2程序控制结构 num2cell函数是将数值矩阵转化为单元矩阵 num2cell 1 5 等价于 1 2 3 4 5 3 try语句try语句是一种试探性执行语句 为开发人员提供了一种捕获错误的机制 其语句格式为try语句块1catch语句块2end 5 2程序控制结构 try语句先试探性执行语句块1 如果语句块1在执行过程中出现错误 则将错误信息赋给保留的lasterr变量 并转去执行语句块2 例5 8 矩阵乘法运算要求两矩阵的维数相容 否则会出错 先求两矩阵的乘积 若出错 则自动转去求两矩阵的点乘 5 2程序控制结构 A input 请输入A矩阵 B input 请输入B矩阵 lasterr 清除原有的错误信息tryC A B catchC A B endCdisp lasterr 显示出错原因 5 2程序控制结构 5 2 3循环结构循环是指按照给定的条件 重复执行指定的语句 1 for语句for语句执行过程 5 2程序控制结构 for语句的格式为for循环变量 表达式1 表达式2 表达式3循环体语句end其中 表达式1的值为循环变量的初值 表达式2的值为步长 表达式3的值为循环变量的终值 步长为1时 表达式2可以省略 5 2程序控制结构 例5 8 一个3位整数各位数字的立方和等于该数本身则称该数为水仙花数 输出全部水仙花数 程序如下 shu 用于存放结果 先赋空值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 m3shu shu m 存入结果endendshu 5 2程序控制结构 for语句的循环变量可以是一个列向量 for语句更一般的格式为for循环变量 矩阵表达式循环体语句end执行过程是依次将矩阵的各列元素赋给循环变量 然后执行循环体语句 直至各列元素处理完毕 5 2程序控制结构 例5 9 写出下列程序的执行结果 s 0 a 12 13 14 15 16 17 18 19 20 21 22 23 fork as s k enddisp s 5 2程序控制结构 注意 for语句一定要有end作为结束标志 否则下面的输入都被认为是for循环之内的内容 循环语句中的分号 可防止中间结果的输出 循环语句书写成锯齿形将增加可读性 如果m或n有小于1的值 结构上仍然是合法的 但内部并不运行 如果a矩阵本身不存在m n个元素 则缺少的元素会被自动加上去 5 2程序控制结构 2 while语句while语句的一般格式为while 条件 循环体语句end 5 2程序控制结构 例5 10 求使最小的n 程序如下 y 0 n 0 while y 1 5 n n 1 y y 1 n n 也可以写成 y y 1 n 2enddisp 满足条件的n是 num2str n 5 2程序控制结构 3 break语句和continue语句break语句用于终止循环的执行 当在循环体内执行到该语句时 程序将跳出循环 继续执行循环语句的下一语句 continue语句控制跳过循环体中的某些语句 当在循环体内执行到该语句时 程序将跳过循环体中所有剩下的语句 继续下一次循环 5 2程序控制结构 例5 11 求鸡兔同笼问题 鸡兔同笼 头共36 脚共100 求鸡 兔各多少 程序如下 i 1 while1ifrem 100 i 2 4 0enda1 ia2 100 2 i 4 5 2程序控制结构 例5 12 fid fopen m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论