Matlab编程2之函数的编写.ppt

上传人:sh****n 文档编号:6379594 上传时间:2020-02-24 格式:PPT 页数:17 大小:340.31KB
返回 下载 相关 举报
Matlab编程2之函数的编写.ppt_第1页
第1页 / 共17页
Matlab编程2之函数的编写.ppt_第2页
第2页 / 共17页
Matlab编程2之函数的编写.ppt_第3页
第3页 / 共17页
点击查看更多>>
资源描述
1 数学实验 第四讲Matlab编程 二 函数文件 2 用Matlab语言编写的程序称为M文件 M文件根据调用方式的不同可以分为两类 Script 脚本文件 命令文件 Function 函数文件 M文件以 m为扩展名 Matlab编程 直接输入文件名即可运行 供其它M文件调用 通常带输入参数和输出参数 3 Matlab编程复习 关系运算 逻辑运算 xor x y any x all x 输入输出 input disp fprintf 控制语句 if switch for while pause break continue return 4 function输出形参列表 函数名 输入形参列表 注释说明部分 可选 函数体语句 必须 第一行为引导行 表示该M文件是函数文件函数名的命名规则与变量名相同 必须以字母开头 当输出形参多于一个时 用方括号括起来以百分号开始的语句为注释语句 函数文件 函数文件由function语句引导 函数文件名必须与函数名一致函数必须是一个单独的M文件 5 functiony myfliplr x returnsXwithrowpreservedandcolumns flippedintheleft rightdirection y x end 1 1 函数文件举例 例 myfliplr m function a b myswap x y swapxandya y b x 例 myswap m 6 functionprintyh n 打印杨辉三角形 本函数没有输出参数yh 1 disp yh ifn 1 return endyh 1 1 disp yh fork 3 nyh old yh k2 ceil k 2 forl 2 k2yh l yh old l 1 yh old l endyh k2 1 k yh k k2 1 1 disp yh end 函数文件举例 例 printyh m 7 函数调用的一般格式 输出实参列表 函数名 输入实参列表 函数调用时 实参的顺序应与函数定义时形参的顺序一致实参与形参之间的结合是通过值传递实现的函数可以嵌套调用 即一个函数可以被其它函数调用 甚至可以被它自身调用 此时称为递归调用函数所传递的参数具有可调性 Matlab用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数 函数调用 8 函数文件myfactor mfunctiony myfactor n if n 1 y 1 elsey n myfactor n 1 end 例 利用函数的递归调用计算n 递归函数举例 9 main m clear s 0 n 10 fori 1 ns s myfactor i endfprintf s g n s 例 计算1 2 10 递归函数举例 10 ex4nargin mfunctiony ex4nargin a b if nargin 1 y a elseif nargin 2 y a b end 参数的可调性举例 例 nargin和nargout的使用 11 参数的可调性举例 ex4nargout mfunction p q ex4nargout a b if nargout 1 p a b elseif nargout 2 p a b q a b end 12 函数通过输入和输出参数与其它M文件进行数据传递 当函数调用完毕后 该函数文件中定义的所有局部变量都将被释放 即全部被清除 如果在若干个M文件中 都把某个变量定义为全局变量 则这些函数将公共使用这一变量 所有函数都可以对它进行存取和修改操作 函数文件中的变量都是局部的 即一个函数文件中定义的变量不能被另一个函数文件或其它M文件使用 全局变量与局部变量 定义全局变量是M文件间传递信息的一种手段 13 变量名列表中的各个变量用空格隔开 不能用逗号 在使用全局变量的所有M文件中 都要对其所使用的全局变量进行定义 全局变量给函数间的数据传递带来了方便 但却破坏了函数对变量的封装 降低了程序的可读性 因而在结构化程序设计中 全局变量是不受欢迎的 特别是当程序较大 子程序较多时 全局变量将给程序调试和维护带来不便 故不提倡使用全局变量 global变量名列表 全局变量的定义 14 程序示例 ex4global 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 15 子函数 一个函数文件中可以含有一个或多个函数 其中第一个称为主函数 其它函数称为子函数子函数由function语句引导除了用global定义的全局变量外 所有函数中的变量都是局部变量 函数之间通过输入 输出参数进行数据传递 调用一个函数时 Matlab会首先检查该函数是否为一个子函数 主函数必须位于最前面 子函数出现的次序任意子函数只能被主函数和位于同一个函数文件中的其它子函数调用 16 子函数举例 ex4subfun mfunction avg med ex4subfun 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 17 上机作业 1 兔子繁殖问题 Fibonaccinumber 假设每对兔子每月生出一对小兔 且新生的兔子满二个月后就能生育 那么从刚出生的一对小兔算起 12个月后总共有多少对兔子 三年后呢 试编写一个函数计算该题 输入为月数 输出为兔子对数 2 编写一个函数 要求实现以下功能 当输入一个参数时 输出错误信息 并返回当输入两个或三个参数时 计算它们的阶乘的和
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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