091211MATLAB程序设计

上传人:宝路 文档编号:48012604 上传时间:2018-07-08 格式:PPT 页数:38 大小:632.35KB
返回 下载 相关 举报
091211MATLAB程序设计_第1页
第1页 / 共38页
091211MATLAB程序设计_第2页
第2页 / 共38页
091211MATLAB程序设计_第3页
第3页 / 共38页
091211MATLAB程序设计_第4页
第4页 / 共38页
091211MATLAB程序设计_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《091211MATLAB程序设计》由会员分享,可在线阅读,更多相关《091211MATLAB程序设计(38页珍藏版)》请在金锄头文库上搜索。

1、Tel:13797073406QQ:641296082Email:zuo_第三章 MATLAB程序设计3.1 程序控制 3.2 M文件结构 3.3 函数的使用 3.4 程序调试 3.5 函数的特殊形式与用法 3.6 函数绘图 3.7 数值分析 3.8 M文件剖析Tel:13797073406QQ:641296082Email:zuo_3.1 程序控制3.1.1 分支控制语句F1.if结构格式n一种选择n两种选择n多种选择说明n表达式有时由多个逻辑子表达式组成,MATLAB将尽 可能少地检测这些子表达式的值nif指令判决和break指令的配合使用,可以强制终止for 循环和while循环if e

2、xpression(commands) endif expression(commands) else(commands) endif expression1(commands) elseif expression2(commands) else(commands) endTel:13797073406QQ:641296082Email:zuo_3.1 程序控制3.1.1 分支控制语句F2.switch结构格式:说明:nex应为标量或字符串n检测值testk类型可以是标量或 字符串,也可以是元胞数组n与C语言不同,在执行完每个 case块后,MATLAB会自动跳 出switch结构,无需使用b

3、reak 指令switch excase test1(commands)case test2case testk(commands)otherwise(commands) endTel:13797073406QQ:641296082Email:zuo_3.1 程序控制3.1.2 循环控制语句F1.for循环格式:说明:nx:循环变量,依次取array各列ncommands:循环体n重复执行次数由array的列数决定nfor循环结构可以嵌套narray可以是任何合法的MATLAB数组l循环不会因为在循环体内对循环变量重新设置新值而 中断l为了得到高效代码,应尽量提高代码的向量化程度, 而避免使用

4、循环结构l为了得到高效代码,在循环指令之前应尽量对数组进 行预定义for xarray(commands) endTel:13797073406QQ:641296082Email:zuo_3.1 程序控制3.1.2 循环控制语句F2.while循环格式:说明:ncommands:循环体n首先检测expression的值,如其为逻辑真,则执行循环 体内的命令,直到expression的值为逻辑假时退出循环n如果expression的值是数组,则只有在数组中所有元素 均为真时才执行循环体lwhile循环与for循环的区别是执行循环体的次数能否预 先确定l如果expression的值为空数组,则MA

5、TLAB认为表达 式值为假,而不执行循环体while expression(commands) endTel:13797073406QQ:641296082Email:zuo_3.1 程序控制例1 谁去执行紧急任务:侦查班长接到一 项紧急任务,准备在代号为A、B、C、 D、E、F六名战士中挑选若干名人员去 执行该任务。人员配备的要求是: A、B两人中至少去一个人; A、D不能一起去; A、E、F三人中要派两人去; B、C两人都去或都不去; C、D两人中去一人; 若D不去,则E也不去。Tel:13797073406QQ:641296082Email:zuo_3.1 程序控制例2 某航空公司规定:

6、在旅游旺季7 9月份,如果订票超过20张,优惠票 价的15%;20张以下,优惠5%;在 旅游淡季15月份、10月、11月份 ,订票超过20张,优惠30%,20张 以下,优惠20。请设计一个程序 能根据月份和旅客订票张数决定优 惠率。Tel:13797073406QQ:641296082Email:zuo_3.1 程序控制例3 百钱买百鸡:公元五世纪末,我 国古代数学家张丘建提出了“百鸡问 题”:“鸡翁一,值钱五;鸡母一, 值钱三;鸡雏三,值钱一。百钱买 百鸡,问鸡翁、母、雏各几何?”翻 译为现代汉语意为:“每只公鸡值5 元,每只母鸡值3元,小鸡三只值1 元;用100元买100只鸡,问公、母 、

7、小鸡各可买多少只?”Tel:13797073406QQ:641296082Email:zuo_3.1 程序控制例4 二分法是计算机对多项式方程求根时 经常采用的一种方法,其基本思想是: 若f(x1)f(x2)”用户输入return指令后程序继续运行在“K”状态下用户可以输入各种合法指令用于程序调试或在程序执行时修改变量F3.input命令:在程序运行过程中接收用户输入,并将输入内容保存到变量中v=input(message):将用户键入内容赋给vv=input(message,s):将用户键入内容作为字符串赋给vF4.disp命令:显示字符串型的信息提示F5.pause命令:使程序暂停运行,当

8、用户按任意键才继续执行用于程序调试或查看中间结果,也可以控制程序执行速度Tel:13797073406QQ:641296082Email:zuo_3.2 M文件结构3.2.1 M文件的一般结构F函数声明行:FH1行:F在线帮助文本区:F编写和修改记录:F函数体:F注释:function x=myfun(y) %MYFUN %我的第一个函数 %调用格式: %x=myfun(y)%2009年4月14日编写%计算y的平方 x=y2;Tel:13797073406QQ:641296082Email:zuo_3.2 M文件结构3.2.2 M脚本文件和M函数文件F1.M脚本文件M脚本文件没有函数声明行,H

9、1行和帮助文字 经常也可以省略MATLAB在运行脚本文件时,只是简单地按顺 序从文件中读取每一条命令,送到命令窗口中执 行M脚本文件运行产生的变量都驻留在MATLAB 的工作空间中,可以很方便地查看变量,在命令 窗口中运行的命令都可以使用这些变量脚本文件的命令可以访问工作空间的所有数据, 因此要注意避免工作空间和脚本文件中的同名变 量相互覆盖,一般在脚本文件开头使用clear命令 清除工作空间的变量Tel:13797073406QQ:641296082Email:zuo_3.2 M文件结构3.2.2 M脚本文件和M函数文件F2.M函数文件M函数文件可以有一个或多个函数,每个函数以 函数声明行开

10、头,这些函数声明行是必不可少的M函数文件在运行过程中产生的变量都存放在函 数本身的工作空间中,函数的工作空间是独立的 、临时的,随具体的M函数文件调用而产生并随 调用结束而删除,在MATLAB运行过程中如果 运行多个函数则产生多个临时的函数空间当文件执行完最后一条命令或遇到return命令时 就结束函数文件的运行,同时清除函数工作空间 的变量如果从组成程序结构的角度来看,M函数文件仅 比M脚本文件多出一个函数声明行,其它部分完 全一样Tel:13797073406QQ:641296082Email:zuo_3.2 M文件结构3.2.2 M脚本文件和M函数文件F3.函数声明行格式:functio

11、n outputs=函数名(inputs)说明:l函数名必须以字母开头,后面可以是字母、下划线以 及数字的任意组合,但不得超过31个字符l函数名最好与保存文件名一致;如果两者不一致, MATLAB将以保存文件名为准l输入参数列表是函数接收的输入参数,各参数之间用 逗号分隔l输出参数列表是函数运算的结果,各参数之间用逗号 分隔Tel:13797073406QQ:641296082Email:zuo_3.3 函数的使用3.3.1 主函数和子函数F1.主函数和子函数的定义:MATLAB允许一个M函数文件包含多个函数代码,其中第 一个出现的函数称为主函数,该文件中的其他函数称为子 函数。保存时所用函数

12、文件名与主函数文件名相同。外部程序只能对主函数进行调用F2.子函数的性质在M函数文件中,主函数的位置不可改变,但子函数的排 列次序可以任意改变子函数只能被处于同一文件的主函数或其他子函数调用在M函数文件中,子函数的优先级仅次于内建函数同一文件的主函数、子函数的工作空间彼此独立help、lookfor等指令都不能直接提供关于子函数的任何帮 助信息子函数的帮助操作:help primefun/subfunTel:13797073406QQ:641296082Email:zuo_3.3 函数的使用3.3.2 输入输出参数检测F检测指令:nargin:在函数体内,用于获取实际输入参数数目nargout

13、:在函数体内,用于获取实际输出参数数目nargin(fun):获取fun指定函数的标称输入参数数目nargin(fun):获取fun指定函数的标称输出参数数目inputname(n):在函数体内使用,给出第n个输入参数的 实际调用变量名F说明:在函数体内使用nargin、nargout的目的是与程序流控制指 令配合,对于不同数目的输入输出参数,函数可以完成不 同的任务nargin、nargout、inputname本身都是函数,而不是变量 ,因此用户不能使用赋值指令对它们进行处理Tel:13797073406QQ:641296082Email:zuo_3.3 函数的使用3.3.3 变长度输入输

14、出参数F格式Fvarargin:变长度输入参数列表Fvarargout:变长度输出参数列表F变长度参数必须放在普通参数之后Fvarargin、varargout本身都是元胞数组,编写M函 数文件时,它们每个元胞应当作一个普通输入参数 处理FM函数文件被调用时,函数输入变量首先依先后次 序逐个对应分配给输入参数列表中那些被明确定义 的普通输入参数,然后把剩余的输入变量依次逐个 分配到varargin元胞数组的元胞中,因此varargin元 胞数组的长度取决于分配到的输入变量数Fvarargout的工作机理、规则与varargin相同function outputs,varargout=funna

15、me(inputs,varargin)Tel:13797073406QQ:641296082Email:zuo_3.3 函数的使用例5 多个多项式的乘法。在MATLAB 中提供了两个多项式相乘的函数 conv(p1,p2),但对于多个多项式相 乘,只能不断利用该函数嵌套,非 常不便。应该怎样利用varargin函数 来实现多个多项式的乘法呢?Tel:13797073406QQ:641296082Email:zuo_3.3 函数的使用 3.3.4 局部变量、全局变量和静态变量F1.局部变量(Local variable)存在于函数空间内部的中间变量产生于该函数的运行过程中其影响范围仅限于该函数本身F2.全局变量(Global variable)不同的函数空间以及基本工作空间共享的变量每个希望共享变量的空间都必须用glo

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号