《matlab函数》PPT课件.ppt

上传人:san****019 文档编号:7348793 上传时间:2020-03-20 格式:PPT 页数:26 大小:500.60KB
返回 下载 相关 举报
《matlab函数》PPT课件.ppt_第1页
第1页 / 共26页
《matlab函数》PPT课件.ppt_第2页
第2页 / 共26页
《matlab函数》PPT课件.ppt_第3页
第3页 / 共26页
点击查看更多>>
资源描述
第六讲函数文件 本讲主要内容 什么是函数文件如何编写函数文件函数参数的可调性递归函数全局与局部变量子函数自定义函数的三种途径 M文件根据调用方式的不同可以分为两类 Script 脚本文件 命令文件独立的m文件 直接输入文件名即可运行Function 函数文件可调用m文件 它由function引导 可供其它M文件调用 通常带输入参数和输出参数 Matlab编程 表3 1脚本文件与函数文件的区别 第一行为引导行 表示该M文件是函数文件函数名的命名规则与变量名相同 必须以字母开头 当输出形参多于一个时 用方括号括起来以百分号开始的语句为注释语句 函数文件 函数文件由function语句引导 函数文件名必须与函数名一致函数必须是一个单独的M文件 function输出形参列表 函数名 输入形参列表 注释说明部分 可以被help命令显示程序语句段 函数体部分 函数文件 ftoc m 例 将华氏温度转化为摄氏温度 编程示例 clear f input Pleaseinputf c 5 f 32 9 fprintf c g n c 脚本文件 ftoc m functionc ftoc f 将华氏温度f转化为摄氏温度cc 5 f 32 9 fprintf c g n c 函数文件举例 function s l mycircle r 函数功能 求半径为r的圆的面积和周长 输入参数 圆的半径r 输出参数 圆的面积s和周长ls pi r 2 l 2 pi r 例 编写函数文件求半径为r的圆的面积和周长 函数定义好了以后 就可以像系统函数一样 随意调用 试一试 a mycircle 10 ab mycircle 5 y f2cf 0 函数文件举例 functiony func x 函数功能 求分段函数ifabs x 1y sqrt 1 x 2 elsey x 2 1 end 例 编写函数文件求下面的分段函数 函数定义好了以后 就可以像系统函数一样 随意调用 试一试 a func 10 func 0 5 ezplot func x 2 2 holdonfplot func x 0 5 2 2 r holdoff 函数调用的一般格式 输出实参列表 函数名 输入实参列表 函数调用时 实参的顺序应与函数定义时形参的顺序一致实参与形参之间的结合是通过值传递实现的函数可以嵌套调用 即一个函数可以被其它函数调用 甚至可以被它自身调用 此时称为递归调用函数所传递的参数具有可调性 Matlab用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数 函数调用 narginEx mfunctiony narginEx a b if nargin 1 y a elseif nargin 2 y a b end 参数的可调性举例 重要系统变量nargin 存储调用函数时输入实参的个数 例 nargin的使用 若调用格式如下 运行结果分别是什么 narginEx 4 5 narginEx 3 narginEx 1 2 3 解 函数文件内容为functionc calnar a b 当输入1个参数求其绝对值 输入2个参数求其平方和的算术平方根if nargin 1 c abs a elseif nargin 2 c sqrt a 2 b 2 end 例 定义一个函数 当输入1个参数求其绝对值 输入2个参数求其平方和的算术平方根 例 画以r为半径的圆 返回圆面积 可以指定线色等属性 functionsa circle r s CIRCLEplotacircleofradiirinthelinespecifiedbys r指定半径的数值 s指定线色的字符串 sa圆面积 circle r 利用蓝实线画半径为r的圆周线 circle r s 利用串s指定的线色画半径为r的圆周线 sa circle r 计算圆面积 并画半径为r的蓝色圆面 sa circle r s 计算圆面积 并画半径为r的s色圆面 ifnargin 2error 输入参数太多 end ifnargin 1s b end t 0 0 01 2 pi plot r cos t r sin t s axisequal sa pi r 2 参数的可调性举例 重要系统变量nargout 存储调用函数时输出实参的个数 例 nargout的使用 nargoutEx mfunction p q nargoutEx a b if nargout 1 p a b elseif nargout 2 p a b q a b end 若调用格式如下 运行结果分别是什么 x nargoutEx 4 5 a b nargoutEx 4 5 nargoutEx 1 2 3 函数文件myfactor mfunctiony myfactor n if n 1 y 1 elsey n myfactor n 1 end 例 利用函数的递归调用计算n 递归函数举例 main m clear s 0 n 10 fori 1 ns s myfactor i endfprintf s g n s 例 计算1 2 10 递归函数举例 函数文件中的变量都是局部的 即一个函数文件中定义的变量不能被另一个函数文件或其它M文件使用当函数调用完毕后 该函数文件中定义的所有局部变量都将被释放 即全部被清除函数通过输入和输出参数与其它M文件进行数据传递如果在若干个M文件中 都把某个变量定义为全局变量 则这些函数将公共使用这一变量 所有函数都可以对它进行存取和修改操作定义全局变量是M文件间传递信息的一种手段 全局变量 Global 与局部变量 Local 变量名列表中的各个变量用空格隔开 不能用逗号 在使用全局变量的所有M文件中 都要对其所使用的全局变量进行定义 即 在M文件中只有特殊定义的 才是全局变量 其他都是局部的 全局变量给函数间的数据传递带来了方便 但却破坏了函数对变量的封装 降低了程序的可读性 因而在结构化程序设计中 全局变量是不受欢迎的 特别是当程序较大 子程序较多时 全局变量将个程序调试和维护带来不便 故不提倡使用全局变量 global变量名列表 全局变量的定义 程序示例 globalmain mclear globalaba 1 b 3 y mysquaresum a b fprintf a g b g n a b z myproduct a b fprintf a g b g n a b mysquaresum mfunctionsquare sum mysquaresum x y square sum x 2 y 2 a x y myproduct mfunctionproduct myproduct x y globalaproduct x y a x y 子函数 一个函数文件中可以含有一个或多个函数 其中第一个称为主函数 其它函数称为子函数子函数也由function语句引导除了用global定义的全局变量外 所有函数中的变量都是局部变量 函数之间通过输入 输出参数进行数据传递 调用一个函数时 Matlab会首先检查该函数是否为一个子函数 主函数必须位于最前面 子函数出现的次序任意子函数只能被主函数和位于同一个函数文件中的其它子函数调用 子函数举例 subfun mfunction avg med subfun x 主函数n length x avg mean x n med median x n functiona mean x n 子函数 计算平均值a sum x n functionm median x n 子函数 计算中值x sort x ifrem n 2 1m x n 1 2 elsem x n 2 x n 2 1 2 end M文件函数 Mfilefunction 内联函数 InlineFunction 匿名函数 AnonymousFunction 自定义函数的三个途径 M文件函数 函数文件形式建立的自定义函数也称为永久函数定义的一般格式 function输出形参列表 函数名 输入形参列表 注释说明部分 可选 函数体语句 必须 例 做如下函数文件 myfunc mfunctiony myfunc x y x 2 myfunc 2 计算在x 2处的函数值ezplot myfunc 作函数图像fplot myfunc 5 5 r 注意到 上边两个命令中的文件名仍需加单引号 M文件函数 Mfilefunction inline函数也称为内联函数 内嵌函数 在线函数一般格式 函数名 inline 函数表达式 变量1 变量2 例 f inline x 2 x 定义了函数f x x 2f 2 计算在x 2处的函数值ezplot f 作函数图像fplot f 0 5 r 注意到 当f是函数时 上边两个命令中的f不再加单引号 内联函数 InlineFunction 定义的函数称为匿名函数 临时函数 是函数指针 也称为函数句柄 效率优于inline函数 7 0版本后建议用匿名函数取代inline函数 一般格式 函数句柄 输入变量 函数表达式例 f x x 2 定义了函数f x x 2f 2 计算在x 2处的函数值ezplot f 作函数图像fplot f 0 5 r 注意到 当f是函数时 上边两个命令中的f不再加单引号 匿名函数 AnonymousFunction 本章内容小结 上机作业 编写一个使用循环计算n 的函数 factor2 m 当输入一个参数时 计算它的阶乘当输入两个参数时 计算它们的阶乘的和当输入参数超过三个时 输入错误信息 并返回 编写一个函数 要求实现以下功能 factor3 m s input Entermoney s0 2 s year 0 whiles s0year year 1 s s 1 0 036 endprintf year d n year 函数文件举例 例 设银行利率为3 6 将10000元人民币存入银行 问多长时间会连本带利翻一番
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!