MATLABSimulink教程-编程、计算与仿真(第2版)课件 chapter4 MATLAB的函数编程_第1页
MATLABSimulink教程-编程、计算与仿真(第2版)课件 chapter4 MATLAB的函数编程_第2页
MATLABSimulink教程-编程、计算与仿真(第2版)课件 chapter4 MATLAB的函数编程_第3页
MATLABSimulink教程-编程、计算与仿真(第2版)课件 chapter4 MATLAB的函数编程_第4页
MATLABSimulink教程-编程、计算与仿真(第2版)课件 chapter4 MATLAB的函数编程_第5页
已阅读5页,还剩26页未读, 继续免费阅读

下载本文档

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

文档简介

第四章:MATLAB的函数编程MATLABFunctionProgramming主讲:薛定宇

东北大学信息学院国家级

一

流

本

科

课

程

建设MATLAB科学运算与仿真MATLAB科学运算与仿真国家级一流本科课程建设第四章MATLAB函数编程MATLABFunctionProframming主讲:薛定宇东北大学信息学院第4章

MATLAB的函数编程MATLAB脚本文件函数的基本结构函数变量的传递MATLAB函数调试方法与处理4.1MATLAB脚本文件MATLAB的程序编辑界面edit例4-1建立第一个程序MATLAB语句将其写入编辑界面,并存盘后缀名为m脚本文件的局限性4.1.2MATLAB实时编辑界面实时文件(livefile)两种模式文本:格式(标题、正文)插入对象:图片、公式、链接等代码——可以执行,实时文本文件后缀名mlx,非纯文本文件可以转换为PDF文件,不能反向转换例4-2

生成一个实时文件期望的实时文件创建文件公式的代码实时代码4.2函数的基本结构为什么需要MATLAB函数?函数的结构函数名的命令规则输入、输出变元的个数函数的递归调用匿名函数4.2.1为什么需要MATLAB函数?例4-3脚本文件的局限性如果和式不是10000,而是20000,则需要修改源程序大规模程序,修改源程序很困难可以定义用户接口,无需修改源程序4.2.2

函数的结构函数主体结构函数示意图例4-4

将例4-1脚本文件转换成函数例4-1的脚本文件接口设计输入变元N返回变元s

和m存盘,构造新文件函数调用4.2.3函数名的命令规则函数名与变量名规则一致由字母引导,后面接字母、数字或下划线区分大小写命名规则与注意事项避免使用过简的函数名,如a,不要与变量名冲突命名前确保没有同名函数,用which命令确认文件名可以与函数名不同,以文件名为准,建议尽量一致大小写与文件名不一致时可能给出警告信息4.2.4

输入、输出变元的个数实际的输入、输出个数

nargin、nargout进入函数就会自动生成这两个量可以利用这些量,使得函数调用的格式更灵活例4-5Hilbert矩阵生成函数生成n×m

阶Hilbert矩阵矩阵元素输入变元n、m,返回变元H如果只给出一个变元,则生成方阵4.2.5函数的递归调用什么是递归调用?递归调用就是函数自己调用自己以阶乘为例阶乘的重要性质MATLAB的递归调用假设k=my_fact(n)函数能求n的阶乘,则

k=n*my_fact(n-1)递归调用应该有出口,否则会一直递归下去例4-6

编写求阶乘n!的函数核心语句k=n*my_fact(n-1)添加出口1!=0!=1检查输入变元类型,输入变元应该为非负整数,否则出错MATLAB实现例4-7Fibonacci序列的递归实现数学公式递归实现实际调用Fibonacci序列耗时的原因二叉树不能利用以前的信息,每个数都从头计算如果利用以前的信息,则可以提高程序效率4.2.6匿名函数函数对应实体的*.m文件简单函数可以采用简洁的定义方法,不用建立实体文件匿名函数格式f=@(变量名列表)函数表达式匿名函数举例可以直接使用工作空间中的当前值如果想采用变量的新值,应该重新定义匿名函数例4-8

匿名函数与数学函数如果已知,求可以由MATLAB如果已知,求应该重新定义,再求值例4-9

分段函数求值分段函数匿名函数定义求值4.3函数变量的传递输入、输出变元的传递与提取局部变量与全局变量工作空间变量的存取4.3.1

输入、输出变元的传递与提取调用函数时输入变元的传递第k项提取返回变元:例4-10

多项式乘法两个多项式乘法如何求多个多项式乘法由函数实现任意多个多项式的乘积MATLAB计算例4-11

函数的容错处理正常情况下p

为行向量如果某个p为列向量,需要容错处理强制将

p转成行向量MATLAB实现4.3.2局部变量与全局变量变元之外的函数变量函数内其他的变量都是局部变量函数调用后,变量消失局部变量不修改工作空间里的同名变量由global命令声明全局变量至少两个地方需要声明全局变量全局变量赋值的地方、全局变量使用的地方例4-12

全局变量传递前面的MATLAB函数如果N不选择为输入变元,而使用全局变量MATLAB实现4.3.3工作空间变量的存取由工作空间读入变量向工作空间写入变量与主调函数交互数据base改写成caller例4-13

工作空间变量读写前面的MATLAB函数如果N,m直接读写,MATLAB实现4.4MATLAB函数调试方法与处理MATLAB编辑器带有跟踪调试(debug)功能设置断点、显示断点直接访问MATLAB的内部变量对内部变量进行直接操作程序的单步执行例4-14

函数的跟踪调试函数清单进入跟踪调

温馨提示

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

评论

0/150

提交评论