matlab大三学年学习资料第4章_第1页
matlab大三学年学习资料第4章_第2页
matlab大三学年学习资料第4章_第3页
matlab大三学年学习资料第4章_第4页
matlab大三学年学习资料第4章_第5页
已阅读5页,还剩49页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

第4章MATLAB程序设计 4 1M文件4 2程序控制结构顺序结构选择结构循环结构4 3函数文件 4 1M文件 matlab中命令有2种执行方式 1 交互式命令执行方式 CommandWindow 2 M文件的程序执行方式M文件 用MATLAB语言编写的程序 由若干条命令组合在一起构成的 文件名都是 m 4 1 1M文件的分类 M文件可以根据调用方式的不同 分为两类 命令 脚本文件 ScriptFile 直接运行 函数文件 FunctionFile 只能被调用 文件名的命名规则与变量名相同 最多63个字符 以字母开头 后接字母 数字或下划线 不要与工作空间中的变量重名 clear 例4 1建立一个命令文件将变量a b的值互换 然后运行该命令文件 P56 建立一个新的命令文件 输入命令 保存文件exch m 运行文件clear a 1 10 b 11 12 13 14 15 16 17 18 c a a b b c a b 4 1 2M文件的建立与打开M文件是一个文本文件 它可以用任何编辑程序来建立和编辑 而一般常用且最为方便的是使用MATLAB提供的文本编辑器 1 建立新的M文件启动MATLAB文本编辑器有3种方法 1 菜单操作 从主窗口的File菜单中选择New菜单项 再选择M file命令 2 命令操作 在命令窗口输入命令edit 3 命令按钮操作 单击MATLAB主窗口工具栏上的NewM File命令按钮 启动MATLAB文本编辑器后 输入M文件的内容并存盘 2 打开已有的M文件3种方法 1 菜单操作 从主窗口的 File 菜单中选择 Open 命令 2 命令操作 在命令窗口输入命令 edit文件名 则打开指定的M文件 3 命令按钮操作 单击主窗口工具栏上的OpenFile命令按钮 再从弹出的对话框中选择所需打开的M文件 4 2程序控制结构 顺序 选择 循环结构4 2 1顺序结构1 数据的输入 1 直接输入数据 zjsr m2 从键盘输入数据 可以使用input函数来进行 可以输入矩阵或向量 input 函数的调用格式为 A input 提示信息 选项 提示信息 一个字符串 用于提示用户输入什么样的数据 如 输入矩阵A 选项 1 无 输入数据2 s 选项 则允许用户输入一个字符串 例1 输入一个矩阵 A input 输入矩阵A 例2 输入一个人的姓名 xm input What syourname s 例3 inputsr m 例41 1求一元二次方程ax2 bx c 0的根 程序如下 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 若要分2行显示结果 如何修改 2 数据的输出 MATLAB提供的命令窗口输出函数主要有disp函数 其调用格式为 disp 输出项 其中输出项既可以为字符串 也可以为矩阵 如 disp A disp xm 不显示矩阵的名字 输出格式更紧凑 例4 1a 建立命令文件 将华氏温度f转换为摄氏温度c c 5 f 32 9f2c m程序 首先建立命令文件并以文件名f2c m存盘 clear 清除工作空间中的变量f input InputFahrenheittemperature c 5 f 32 9执行该命令文件 InputFahrenheittemperature 73c 22 7778 例4 2输入x y的值 并将它们的值互换后输出 P59 li42 m 程序如下 x input Inputxplease y input Inputyplease z x x y y z disp x disp y 可以不用disp 如li42 1 m 3 程序的暂停 查看中间结果 观看输出的图形 pause函数 其调用格式为 pause 延迟秒数 如果省略延迟时间 直接使用pause 则将暂停程序 直到用户按任一键后程序继续执行 fa m 若要强行中止程序的运行可使用Ctrl C命令 上机实验 1 习题一 3 4 5 6 p16 习题二 3 4 5 P37 习题三 1 不做 3 2 4 5 部分 p55 地点 公共机房 4 2 2选择结构 if switch try if语句 有3种格式 1 单分支if语句 if条件语句组end条件成立时 则执行语句组 执行完之后继续执行if语句的后继语句 条件不成立 则直接执行if语句的后继语句 2 双分支if语句 if条件语句组1else语句组2end条件成立时 执行语句组1条件不成立时 执行语句组2语句组1或语句组2执行后 再执行if语句的后继语句 例4 3计算分段函数 li43 m P61程序如下 x input 请输入x的值 ifx 10y cos x 1 sqrt x 2 1 elsey x sqrt x sqrt x endy 3 多分支if语句 if条件1语句组1elseif条件2语句组2 elseif条件m语句组melse语句组nend语句用于实现多分支选择结构 2 switch语句根据表达式的取值不同 分别执行不同的语句 其语句格式为 switch表达式 一个标量 一个字符串 case表达式1语句组1 当表达式的值等于表达式1的值时 执行语句组1 case表达式2语句组2 case表达式m语句组motherwise语句组nend swich分支结构例1 一个简单的分支结构的例子 li43 1 m a 10 switchacase0a a 1 case1a a 2 case2a a 3 case3a a 4 otherwisea a 5 enda switch分支结构例2 li43 2 m switch后面的表达式从键盘输入 例4 5某商场对顾客所购买的商品实行打折销售 标准如下 商品价格用price来表示 li45 m P64price 200没有折扣200 price 5003 折扣500 price 10005 折扣1000 price 25008 折扣2500 price 500010 折扣5000 price14 折扣 函数num2cell 将数值矩阵转化为单元矩阵num2cell 5 9 5 6 7 8 9 3 Try语句 try是一种试探性执行语句 语句格式为 try语句组1 若出现错误catch语句组2end语句组1若出现错误 将错误信息赋给保留的lasterr变量 转去执行语句组2 例4 6先求两个矩阵的乘积 若出错 则自动转去求两矩阵的点乘 程序如下 A 123 456 B 789 101112 tryC A B catchC A B endClasterr 4 2 3循环结构1 for语句 格式for循环变量 表达式1 表达式2 表达式3循环体语句end表达式1的值为循环变量的初值表达式2的值为步长表达式3的值为循环变量的终值 步长为1时 表达式2可以省略 例46 1 计算1到100的和 a 0 fori 1 100a a i enda 在实际MATLAB编程中 采用循环语句会降低其执行速度 所以前面的程序通常由下面的程序来代替 n 1 100 y sum n 例4 8已知 当n 100时 求y的值 li48 m 程序如下 y 0 n 100 fori 1 ny y 1 i i endy 如果没有该语句 去掉分号会怎样 将会显示每一个循环中的y值 li48 1 m 如果采用键盘输入n 程序如何修改 li48 2 m i 虚数单位 最好不用作循环变量 在实际MATLAB编程中 采用循环语句会降低其执行速度 所以前面的程序通常由下面的程序来代替 n 100 i 1 n f 1 i 2 y sum f for语句的矩阵形式 for循环变量 矩阵循环体语句end 执行过程 依次将矩阵的各列元素赋给循环变量 然后执行循环体语句 直到各列元素处理完毕 例4 10写出下列程序的执行结果 P67 li410 m 例410 a已知5个学生4门功课的成绩 求每名学生的总成绩 程序如下 s 0 a 65 76 56 78 98 83 74 85 76 67 78 79 98 58 42 73 67 89 76 87 fork as s k enddisp s 如果想求每门功课的学生总分 如何求 li410 b m 2 while语句 while语句的一般格式为 while 条件 循环体语句end执行过程 1 若条件成立 则执行循环体语句 2 执行后再判断条件是否成立 如果不成立则跳出循环 用于事先不能确定循环次数的情况 例410 1 求10的阶乘 s 1 n 1 while n 10 s s n n n 1 ends 以上程序用for循环如何计算 li410 2 m 例4 11从键盘输入若干个数 当输入0时结束输入 求这些数的和 li411 m p68 sum 0 val input Enteranumber endin0 while val 0 sum sum val val input Enteranumber endin0 endsum 若还求这些数的平均值 怎样做 li411 1 m 3 break语句和continue语句与循环结构相关的语句还有break语句和continue语句 它们一般与if语句配合使用 break语句用于终止循环的执行 当在循环体内执行到该语句时 程序将跳出循环 继续执行循环语句的下一语句 continue语句控制跳过循环体中的某些语句 当在循环体内执行到该语句时 程序将跳过循环体中所有剩下的语句 继续下一次循环 例4 13求 100 200 之间第一个能被21整除的整数 li413 p69程序如下 forn 100 200ifrem n 21 0continueendbreakendn 求 100 200 之间所有能被21整除的数 li413 1 也可以用if else的结构 li413 2 在程序中的应用 可放在程序的任意位置 不是执行语句 只作说明用 不参与程序的运行 如li413 m M文件可以根据调用方式的不同分为两类 命令文件 ScriptFile 直接运行 函数文件 FunctionFile 只能被调用 4 3函数文件4 3 1函数文件的基本结构函数文件由function语句引导 其基本结构为 function输出形参表 函数名 输入形参表 注释说明部分函数体语句引导行 以function开头的一行 第1行 表示该M文件是一个函数文件 函数名的命名规则与变量名相同 输入形参为函数的输入参数 用 圆括号 括起来 输出形参为函数的输出参数 当输出形参多于一个时 则应该用 方括号 括起来 函数文件名 m1 函数文件名与函数名可以相同 也可不同 2 当两者不同时 MATLAB将忽略函数名而确认函数文件名 3 调用时 函数文件名 最好相同 注释说明部分 包括3部分 开头 1 第一注释行 大写的文件名 函数功能描述 供 lookfor 和 help 查询使用 2 连续的注释行 输入输出参数的含义等说明信息 与第一注释行 构成在线帮助文本 3 注释行 隔一空行 编写与修改信息 如 编写时间 作者 版本等 例4 16编写函数文件求半径为r的圆的面积s和周长p fcircle mp72函数文件 fcircle m 如下 function s p fcircle r FCIRCLEcalculatetheareaandperimeterofacircleofradiir r圆半径 s圆面积 p圆周长 2004年7月30日编s pi r r p 2 pi r 4 3 2函数调用函数调用的一般格式是 输出实参表 函数名 输入实参表 如 s p fcircle 4 function s p fcircle r 或 x y fcircle 4 或a 4 s p fcircle a 注意 函数调用时各实参出现的顺序 个数 应与函数定义时形参的顺序 个数一致 否则会出错 函数调用时 先将实参传递给相应的形参 从而实现参数传递 然后再执行函数的功能 例416 a 计算半径分别为1 10的园面积和周长 fcirclematrix m 调用 a 1 10 例416 1 建立一个函数文件将变量a b的值互换 然后运行该文件 建立一个新的函数文件 输入命令 保存文件fexch m 在命令窗口输入 clear x 1 5 y 20 x y fexch x y 例4 18利用函数的递归调用 求n 递归调用函数文件factor mfunctionf factor n ifn 1f 1 elsef n 1 n end 求s 1 2 3 4 5 li418 ms 0 fori 1 5s s factor i ends 例4 19任意排列问题 MATLAB提供的函数randperm n 可以产生一个从整数1到整数n的任意排列 编写一个函数文件来实现它的功能 即给出一个任意数组成的行向量 然后产生这个行向量元素的任意排列 函数文件rndprm1 m调用函数文件 rn

温馨提示

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

评论

0/150

提交评论