程序设计教学PPT M文件.ppt_第1页
程序设计教学PPT M文件.ppt_第2页
程序设计教学PPT M文件.ppt_第3页
程序设计教学PPT M文件.ppt_第4页
程序设计教学PPT M文件.ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

m文件 所谓m文件就是由matlab语言编写的可在matlab语言环境下运行的程序源代码文件 matlab语言中的m文件可分为命令式 script 和函数式 function 两种形式 m文件可在matlab的程序编辑器中编写 也可在其他的文本编辑器中编写 并以 m 为扩展名加以保存 命令式文件命令式文件就是命令行的简单叠加 matlab会自动按顺序执行文件中的命令 值得注意的是 命令式文件在运行过程中可以调用matlab工作域内所有的数据 而且所产生的所有变量均为全局变量 回到本章目录 m文件就是由matlab语言编写的可在matlab语言环境下运行的程序源代码文件 matlab语言中的m文件可分为命令式 script 和函数式 function 两种形式 m文件可在matlab的程序编辑器中编写 也可在其他的文本编辑器中编写 并以 m 为扩展名加以保存 这类文件的第一行必须是一特殊字符function开始 格式为 function y1 y2 fun x1 x2 fun是函数名 x1 x2 是输入变量 y1 y2 是输出变量 m文件 m文件建立方法 1 在matlab中 点 file new m file2 在编辑窗口中输入程序内容3 点file save 存盘 m文件名必须与函数名一致 matlab的应用程序也以m文件保存 存储函数式m文件时文件名要与主函数名相一致 回到本章目录 第一行 函数声明行 functiony dfw1 r p res r 1 p0 p 1 y sum res 输出参数 函数名 输入参数 函数名要遵守matlab变量名的命名规则 m函数存盘时的文件名与函数名相同 从函数返回的惟一信息包含在输出参数中 要确保函数中包含一条给输出参数赋值的语句 回到本章目录 函数式文件 functionabcd a b c a bd b a保存为abcd m在工作窗口中调用 a 2 b 3 4 5 6 abcd a b c 5678d 1234 c 结果是什么 命令式文件 a 2 b 3456 c a b d b a 保存为 abcd m在工作窗口中调用 abcd 文件名即可 cc 5678 dd 1234 回到本章目录 函数变量及变量作用域m文件的变量主要有输入变量 输出变量及函数内部变量 输入变量相当于函数的入口数据 是一个函数操作的主要对象 函数的作用就是对输入变量进行加工以实现一定的功能 函数的输入变量为形式参数 即只是传递变量的值而不是变量的地址 函数对输入变量的一切的操作和修改如果不依靠输出变量传出的话 将不会影响工作空间中该变量的值 matlab语言提供了函数nargin来控制输入变量的个数 即可以实现不定参数输入的操作 例如 在函数test1中 如果调用过程时只提供一个输入变量 则求该输入变量的模 如果是两个输入变量 则求两个输入变量的和 回到本章目录 如果调用过程时只提供一个输入变量 则求该输入变量 的模 如果是两个输入变量 则求两个输入变量的和functionc test1 a b ifnargin 1c norm a elseifnargin 2c a b end在工作窗口调用 a 234 a 234 test1 a ans 5 3852 b 3 test1 a b ans 567 回到本章目录 同时 matlab语言还提供了另一个针对输入变量的函数varargin 该函数可以实现不定数目输入变量的函数的程序设计 此时 对函数的一切输入变量均将存储在以varargin命名的单元型数组中 例 在函数test2中 实现如下功能 通过使用函数varargin 用户可以输入任意多个学生的数学 英语及语文的成绩 然后求各科目的平均值 程序如下 回到本章目录 function mathavg englishavg chineseavg test2 varargin s length varargin 求数组的长度mathsum 0 englishsum 0 chinesesum 0 forj 1 smathsum mathsum varargin j 1 englishsum varargin j 2 chinesesum varargin j 3 endmathavg mathsum s englishavg englishsum s chineseavg chinesesum s 思考 此函数如何调用 回到本章目录 与输入变量相对应 matlab语言对输出变量也提供了相应的函数 如nargout varargout等 具体的使用与函数nargin和varargin相似 下面给出一个综合应用示例 示例函数test3中 综合使用了函数nargin nargout narargin narargout等 函数目的是求各学生 总数不确定 的个人平均成绩 以及指定科目的平均成绩等 函数test2的调用 90 89 60 分别表示数学 英语 语文的成绩 a b c test2 90 89 60 79 89 66 99 98 100 a 89 3333b 32 6667c 33 3333思考 如果多个学生的成绩是同一科目的成绩放在一个数组中 如何修改test2函数 回到本章目录 function vararout test3 lessons varargin inputnum nargin lessonnum length lessons outputnum nargout fori 1 lessonnumswitchlessons i case math vararout 1 sum varargin 1 inputnum 1 case english vararout 2 sum varargin 1 inputnum 2 case chinese vararout 3 sum varargin 1 inputnum 3 endendfori 1 inputnumvarargout i 3 sum varargin i end 回到本章目录 在matlab中 函数内部定义的变量除特殊声明外均为局部变量 如果需要使用全局变量 则应当使用命令global定义 而且在任何使用该全局变量的函数中都应加以定义 在命令窗口中也不例外 注意 变量之间必须以空格分隔 而不能用逗号分隔 示例 function avgs test4 a globalsss 定义全局变量 m n size a fori 1 ms i sum a i endss sum s avgs ss m n 调用test4 a 435 678 357 134 test4 a ans 4 6667 globalsss ssss 56 ss 1221158 回到本章目录 子函数与局部函数matlab中也可以定义子函数 用来扩充函数的功能 在函数文件中题头定义的函数为主函数 而在函数体内定义的其他函数均被视为子函数 子函数只能为主函数或同一主函数下的其他的子函数所调用 示例 functionc test a b 主函数c test1 a b test2 a b functionc test1 a b 子函数1c a b functionc test2 a b 子函数2c a b 回到本章目录 局部函数与子函数的区别是 局部函数可以被其父目录下的所有函数所调用 而子函数则只能被其所在m文件的主函数所调用 在函数编辑的结构上 局部函数与一般的函数文件的编辑相同 而子函数则只能在主函数文件中编辑 回到本章目录 程序设计的辅助函数用户交互函数键盘输入函数包括函数input及keyboard 函数input用于提示用户输入指定参数的值 调用格式 var input 提示性语句 其中 提示性语句 将给出相应的提示信息以告知用户输入的对象 在这种调用过程中 用户可以有键盘输入任何的可计算的表达式或已赋值的当前工作空间中的变量名 而且返回至变量var中的值也是数值型 所有的输入以回车键加以确认 回到本章目录 第一种调用格式 a input inputexample n inputexample1 4a 5 ischar a ans 0 第二种调用格式 b input inputexample n s inputexample1 4b 1 4 ischar b ans 1 函数input的另一种调用格式 var input 提示性语句 s 以该格式调用时 input函数将视用户键盘输入的一切字符为字符型赋予变量var 而不对其进行任何计算 在提示型语句中可以用 n 来控制显示时的换行 例如 回到本章目录 另一种输入函数为keybroad 该函数出现在m文件中时 将终止程序的运行 此时用户可以查看运算过程中各变量的值必要时也可进行适当的干涉及编辑 同时该函数在matlab语言中均可应用 直到键入return并回车 这时程序返回中断处 继续执行其余代码 matlab也提供了一种中断函数pause 其调用格式 pause n 该命令的作用是中断程序运行并等待n秒 如果不带参数 则程序无限期中断 直到用户在键盘上键入任意键 回到本章目录 流程控制语句 matlab语言的流程控制语句主要有for while if else end和switch case这四种语句 for语句for循环语句是流程控制语句中的基础 使用该循环语句可以以指定的次数重复执行循环体内的语句 for循环语句的调用形式 for循环控制变量 可以是已定义的向量 也可在for循环语句中定义 循环体end 回到本章目录 fori 1 4 初始值 步长 终值 步长默认为1 forj 4 1 1h i j 1 i j 1 endend结果 hh 1 00000 50000 33330 25000 50000 33330 25000 20000 33330 25000 20000 16670 25000 20000 16670 1429 回到本章目录 while语句while循环语句与for循环语句不同的是 前者是以条件的满足与否来判断循环是否结束的 而后者则是以执行次数是否达到指定值来判断的 while循环语句的一般形式 while循环体end循环判断语句为某种形式的逻辑判断表达式 当表达式的值为真时就执行循环体内的语句 否则退出 当循环判断语句为矩阵时 当且仅当所有的矩阵元素非零时 逻辑表达式的值为真 例如 回到本章目录 n 0 while2 n 100n n 1 end 从例子中可以看出while循环语句与for循环语句是有异曲同工之处的 但是两者还是有区别的 for循环语句一般适用于已知到循环次数 而不知道循环运算目标的问题 while循环语句则一般适用于已知循环运算目标 而循环次数未知的问题 break语句 当程序流程运行至该命令时 则不论循环控制变量是否满足循环判断语句 均将退出当前循环 执行循环后的其他语句 continue命令 当程序流程运行至该命令时 会忽视其后的循环体操作转而执行下一层的循环 回到本章目录 例 计算级数 s 1 2 22 23 263 法二 s 0 i 0 whilei 64s s 2 i i i 1 end 法一 s 0 fori 0 63s s 2 i end 法三 n 0 1 63 s sum 2 n 回到本章目录 例 用while循环语句编写一个计算1000以内的fibonacci数 斐波那契数列 后一个数等于前面两个数的排列 如 1 1 2 3 5 8 13 21 34 55 89 144 f 11 i 1 whilef i f i 1 1000f i 2 f i f i 1 i i 1 endf 1123581321345589144233377610987 回到本章目录 if else end语句if else end语句的一般形式 if逻辑值为 真 时执行语句else逻辑值为 假 时执行语句end例如 ifa 1a a 1 elsea a 2 end 回到本章目录 例 计算分段函数值 程序如下 x input 请输入x的值 ifx 10y cos x 1 sqrt x x 1 elsey x sqrt x sqrt x endy请输入x的值 y 47 1893 12 回到本章目录 在程序设计中 也常碰到需要进行多重逻辑选择的问题 这时可以采用if else end语句的嵌套形式 if逻辑值1为 真 时执行语句elseif逻辑值2为 真 时执行语句elseif else当以上所有的逻辑值均为 假 时执行语句end 回到本章目录 比较大小 a 3 b 6 ifa bmax a elseifa bmax 两数相等 elsemax b enddisp 最大值为 num2str max 解读这段程序 a 10000 n 0 z 1 whilez an n 1 ifmod n 2 1continueendz 2 n 1 if isprime z 是否质数breakendend 回到本章目录 switch case语句switch case语句是用于解决多分支判断选择的问题 switch case语句的一般表达形式 switchcase选择判断

温馨提示

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

评论

0/150

提交评论