• 1. 2018/10/16第一章 MATLAB 7 简介1MATLAB 7课件 第一章 MATLAB 7简介 第二章 MATLAB 7的安装和用户界面 第三章 基本使用方法 第四章 数值向量和数组 第五章 字符串、单元数组和结构 第六章 数值计算功能 第七章 符 号 运 算 第八章 图 形 处 理 第九章 GUI图形设计 第十章 MATLAB 7程序设计
  • 2. 2018/10/16第一章 MATLAB 7 简介2第一章 MATLAB 7简介 教学目标 教学重点 教学过程
  • 3. 2018/10/16第一章 MATLAB 7 简介3教学目标 本章主要介绍MATLAB的一些基本情况,让大家对该软件有一个整体的认识。它主要包括MATLAB的功能、发展历史以及MATLAB 7的新特点等,由于MATLAB软件在不断地更新,所以,也要介绍获取MATLAB 7最新信息的途径。
  • 4. 2018/10/16第一章 MATLAB 7 简介4教学重点 了解MATLAB语言的基本功能和特点 了解MATLAB 7的新特点和新功能
  • 5. 2018/10/16第一章 MATLAB 7 简介5教学过程 MATLAB的初步知识 MATLAB的优点 MATLAB的缺点 MATLAB 7的新功能
  • 6. 2018/10/16第一章 MATLAB 7 简介6MATLAB的初步知识MATLAB最初是由Cleve Moler用Fortran语言设计的,有关矩阵的算法来自Linpack和Eispack课题的研究成果;现在的MATLAB程序是MathWorks公司用 C语言开发的。 MATLAB作为美国 MathWorks公司开发的用于概念设计,算法开发,建模仿真,实时实现的理想的集成环境。是目前最好的科学计算类软件。
  • 7. 2018/10/16第一章 MATLAB 7 简介7MATLAB的主要应用领域(1)数值分析。 (2)数值和符号计算。 (3)工程与科学绘图。 (4)控制系统的设计与方针。 (5)数字图像处理。 (6)数字信号处理。 (7)通讯系统设计与仿真。 (8)财务与金融工程。
  • 8. 2018/10/16第一章 MATLAB 7 简介8MATLAB的优点1. 容易使用 2. 可以由多种操作系统支持 3. 丰富的内部函数 4. 强大的图形和符号功能 5. 可以自动选择算法 6. 与其他软件和语言有良好的对接性
  • 9. 2018/10/16第一章 MATLAB 7 简介9 MATLAB的缺点 运行效率较低 由于MATLAB是一种合成语言,因此,与一般的高级语言相比,用MATLAB编写的程序运行起来时间往往要长一些。 价格比较贵 一般的用户可能支付不起它的高昂费用。但是,购买MATLAB的昂贵费用在很大程度上可以由使用它所编写的程序的价值抵消。
  • 10. 2018/10/16第一章 MATLAB 7 简介10MATLAB 7的新功能提供了MATLAB、SIMULINK的升级以及其他最新的75个模块的升级 该版本不仅提高了产品质量,同时也提供了最新的用于数据分析、大规模建模、固定点开发和编码等新特征。
  • 11. 2018/10/16第一章 MATLAB 7 简介11第二章 MATLAB 7的安装和 用户界面 教学目标 教学重点 教学过程
  • 12. 2018/10/16第一章 MATLAB 7 简介12教学目标 本章主要介绍MATLAB 7的安装和用户界面,通过对本章的学习,用户将学会MATLAB软件的安装过程并对用户界面有一个直观的认识
  • 13. 2018/10/16第一章 MATLAB 7 简介13教学重点初步认识MATLAB 7的用户界面 掌握MATLAB 7的路径搜索
  • 14. 2018/10/16第一章 MATLAB 7 简介14教学过程 MATLAB 7的安装过程 MATLAB 7用户界面概述 MATLAB 7的路径搜索
  • 15. 2018/10/16第一章 MATLAB 7 简介15MATLAB 7的安装 过程用户在购买到正版MATLAB 7后,可以按照相关的说明进行安装,安装过程相对比较简单。这里不在赘述。安装MATLAB 7必须具有由Mathworks公司提供的合法个人使用许可,如果没有使用许可,用户将无法安装MATLAB。
  • 16. 2018/10/16第一章 MATLAB 7 简介16MATLAB 7用户界面概述MATLAB 7的用户界面主要包括以下三个方面的内容: MATLAB 7的主菜单 MATLAB 7的工具栏 MATLAB 7的窗口
  • 17. 2018/10/16第一章 MATLAB 7 简介171. MATLAB 7的主菜单 MATLAB 7的主菜单包括File、Edit、Debug、Desktop、Window和Help菜单。 可以执行的操作有New、Open、Undo、Redo、Cut、copy和Step等。
  • 18. 2018/10/16第一章 MATLAB 7 简介182. MATLAB 7的工具栏 MATLAB 7的工具栏包括新建文件、打开文件、剪切、复制和粘贴等常用图标 同时,MATLAB 7的工具栏适时显示MATLAB 7的当前路径,用户还可以通过工具栏来改变当前路径
  • 19. 2018/10/16第一章 MATLAB 7 简介193. MATLAB 7的窗口 打开MATLAB 7,默认打开的窗口包括: (1)命令窗口(Command Window); (2)命令历史窗口(Command History); (3)工作间管理窗口(Workspace); (4)当前路径窗口(Current Directory) 此外,还有编译窗口、图形窗口和帮助窗口等其他种类的窗口 。
  • 20. 2018/10/16第一章 MATLAB 7 简介20(1) 命令窗口在默认设置下,命令窗口自动显示于MATLAB界面中,如果用户只想调出命令窗口,也可以选择Desktop | Desktop Layout | Command Window Only命令。MATLAB 7用户界面的右侧窗口就为命令窗口。
  • 21. 2018/10/16第一章 MATLAB 7 简介21(2) 命令历史窗口 命令历史窗口显示用户在命令窗口中所输入的每条命令的历史记录,并标明使用时间,这样可以方便用户的查询。 如果用户想再次执行某条已经执行过的命令,只需在命令历史窗口中双击该命令。
  • 22. 2018/10/16第一章 MATLAB 7 简介22(3) 工作间管理窗口 工作间管理窗口就是用来显示当前计算机内存中MATLAB变量的名称、数学结构、该变量的字节数及其类型。 在默认设置下,工作间管理窗口自动显示于MATLAB界面中。
  • 23. 2018/10/16第一章 MATLAB 7 简介23(4)当前路径窗口 在默认设置下,当前路径窗口自动显示于MATLAB界面中,用户也可以选择Desktop| Current Directory命令调出或隐藏该命令窗口。 当前路径窗口显示着当前用户工作所在的路径
  • 24. 2018/10/16第一章 MATLAB 7 简介24 MATLAB 7的路径搜索 MATLAB 7有一个专门用于寻找“.m”文件的路径搜索器。“.m”文件是以目录和文件夹的方式分布于文件系统中的,一部分“.m”文件的目录是MATLAB 7的子目录,由于MATLAB 7的一切操作都是在它的搜索路径(包括当前路径中进行的,所以如果调用的函数在搜索路径之外,MATLAB 7就会认为此函数并不存在。
  • 25. 2018/10/16第一章 MATLAB 7 简介25MATLAB 7的路径搜索(1)MATLAB 7的当前目录 在命令窗口中输入cd命令,并按Enter键确认,即显示有当前MATLAB 7工作所在目录。 >> cd C:\MATLAB71\work >>
  • 26. 2018/10/16第一章 MATLAB 7 简介26MATLAB 7的路径搜索(2)MATLAB 7的路径搜索 选择MATLAB的主窗口中File | Set Path命令 ,进入到设置路径搜索的对话框 ,用户可以设置新的路径
  • 27. 2018/10/16第一章 MATLAB 7 简介27使用帮助系统  MATLAB 7.0为用户提供了非常完善的帮助系统,例MATLAB 的在线帮助、帮助窗口、帮助提示、HTML格式的帮助、pdf格式的帮助文件及MATLAB 的示例和演示等。
  • 28. 2018/10/16第一章 MATLAB 7 简介28第三章 基本使用方法 教学目标 教学重点 教学过程
  • 29. 2018/10/16第一章 MATLAB 7 简介29教学目标 MATLAB 7的优点不仅在于强大的功能,还在于其简单易学。 本章主要是介绍MATLAB 7的基本使用方法。 用户在学习完本章的内容后,可以进行基本的数值运算,从而能够容易地解决许多在学习和科研中遇到的计算问题 。
  • 30. 2018/10/16第一章 MATLAB 7 简介30教学重点标点符号的使用 常用的操作命令和键盘技巧 MATLAB 7的数据类型 常量和变量的使用方法 浮点数和复数的使用方法
  • 31. 2018/10/16第一章 MATLAB 7 简介31教学过程简单的数学运算 常用的操作命令和键盘技巧 MATLAB 7的数据类型
  • 32. 2018/10/16第一章 MATLAB 7 简介321.简单的数学运算 最简单的计算器使用法 标点符号的使用 常用的操作命令和键盘技巧
  • 33. 2018/10/16第一章 MATLAB 7 简介33(1)最简单的计算器使用法 直接输入法 >> 3*30+3*35+4*30+4*32 ans = 443 >> 存储变量法 >> grade1=3*30 grade1 = 90 >> grade2=3*35 grade2 = 105 >> total=grade1+grade2total = 195 >>
  • 34. 2018/10/16第一章 MATLAB 7 简介34符 号功 能实 例+加法1+2-减法1-2*乘法1*2/、\除法1/2(除)2\1(被除)^乘方2^1数值运算符号
  • 35. 2018/10/16第一章 MATLAB 7 简介35(2)常用标点符号标 点 符 号定 义标 点 符 号定 义;区分行,取消运行显示等.小数点以及域访问等,区分列,函数参数分隔符等…连接语句:在数组中应用较多‘字符串的标识符号()指定运算优先级等=赋值符号[]矩阵定义的标志等!调用操作系统运算{}用于构成单元数组等%注释语句的标识
  • 36. 2018/10/16第一章 MATLAB 7 简介36应用举例例4-1 清华大学土木系一年级有3个班,每班30人,二年级有3个班,每班35人,三年级有4个班,每班30人,四年级有4个班,每班32人。求清华大学土木系本科一共有多少人。 >> grade1=3*30; >> grade2=3*35; >> grade3=4*30; >> grade4=4*32; >> total=grade1+grade2+ grade1+grade2 total = 443 >>
  • 37. 2018/10/16第一章 MATLAB 7 简介372.常用的操作命令和键盘技巧 在使用MATLAB 7语言编制程序时,掌握一些常用的操作命令和键盘操作技巧,可以起到事半功倍的效果 。
  • 38. 2018/10/16第一章 MATLAB 7 简介38(1)常用的操作命令 命 令该命令的功能命 令该命令的功能cd显示或改变工作目录hold图形保持命令clc清除工作窗load加载指定文件的变量clear清除内存变量pack整理内存碎片clf清除图形窗口path显示搜索目录diary日志文件命令quit退出MATLAB 7dir显示当前目录下文件save保存内存变量到指定文件disp显示变量或文字内容type显示文件内容echo工作窗信息显示开关  
  • 39. 2018/10/16第一章 MATLAB 7 简介39(2)常用的键盘操作和快捷键 键盘按钮和快捷键该操作的功能键盘按钮和快捷键该操作的功能↑(Ctrl+p)调用上一行Home(Ctrl+a)光标置于当前行开头↓(Ctrl+n)调用下一行End(Ctrl+e)光标置于当前行结尾←(Ctrl+b)光标左移一个字符Esc(Ctrl+u)清除当前输入行→(Ctrl+f)光标右移一个字符Del(Ctrl+d)删除光标处字符Ctrl+←光标左移一个单词Backspace(Ctrl+h)删除光标前字符Ctrl+→光标右移一个单词Alt+BackSpace恢复上一次删除
  • 40. 2018/10/16第一章 MATLAB 7 简介403.MATLAB 7的数据类型 常量和变量 常量 变量 浮点数和复数 浮点数 复数
  • 41. 2018/10/16第一章 MATLAB 7 简介41(1)常量在MATLAB中有一些特定的变量,它们已经被预定义了某个特定的值,因此这些变量被称为常量。MATLAB 7中的常量主要有pi、inf和eps等。常 量常量的功能常 量常量的功能ans用作结果的默认变量名nargin函数的输入参数个数beep使计算机发出“嘟嘟”声nargout函数的输出参数个数pi圆周率varagin可变的函数输入参数个数eps浮点数相对误差varagout可变的函数输出参数个数inf无穷大realmin最小的正浮点数NaN或nan不定数realmax最大的正浮点数i或j复数单位bitmax最大的正整数
  • 42. 2018/10/16第一章 MATLAB 7 简介42(2)变量变量是MATLAB 7的基本元素之一,MATLAB 7语言不要求对所使用的变量进行事先说明,而且它也不需要指定变量的类型,系统会根据该变量被赋予的值或对该变量所进行的操作来自动确定变量的类型。 变量名长度不超过31位,超过31位的字符系统将忽略不计 变量名区分大小写 变量名必须以字母开头,变量名中可以包含字母、数字或下划线,但不允许出现标点符号
  • 43. 2018/10/16第一章 MATLAB 7 简介43(3)浮点数几乎在所有的情况下,MATLAB 7的数据都是以双精度数值来表示的,这些双精度数在系统内部用二进制来表示。这是计算机通常的表示数据的方式,但也带来了一些问题,比如有很多实数不能被精确地表示,对能够表示的值也有一个限制,并且还存在一个浮点相对误差限。所谓相对误差限是指MATLAB 7语言能够区分两个不同大小的数时,这两个数之间的最小差值。
  • 44. 2018/10/16第一章 MATLAB 7 简介44浮点数举例下边3个式子的计算结果是相同的,但是由于这些数字都是使用二进制存储的,在使用双精度数来表达这些数时,往往就会出现一些误差 >> a=0.33-0.5+0.17 a = 2.7756e-017 >> b=0.33+0.17-0.5 b = 0 >> c=0.17-0.5+0.33 c = 5.5511e-017 >>
  • 45. 2018/10/16第一章 MATLAB 7 简介45(4)复数MATLAB 7语言对复数的处理也是十分简便的,在处理复数问题时,不需要进行其他任何的附加操作。 >> a2=pi+3.14j a2 = 3.1416 + 3.1400i >> >> b=4*(1+3/sqrt(-1)) b = 4.0000 -12.0000i >>
  • 46. 2018/10/16第一章 MATLAB 7 简介46复数的数学运算 举例>> a=1+2*i a = 1.0000 + 2.0000i >> b=3-4i b = 3.0000 - 4.0000i >> c=pi+sin(pi/2)*i c = 3.1416 + 1.0000i >> d=a+b d = 4.0000 - 2.0000i
  • 47. 2018/10/16第一章 MATLAB 7 简介47第四章 数值向量和数组 教学目标 教学重点 教学过程
  • 48. 2018/10/16第一章 MATLAB 7 简介48教学目标本章将介绍MATLAB 7的数值计算功能,包括MATLAB 7的向量和数组,并介绍它们之间的运算。 通过对本章的学习,读者可以编写简单且功能完善的MATLAB 7程序,从而解决各类基本问题,用户可以通过本章逐步掌握MATLAB 7的数值计算方法。
  • 49. 2018/10/16第一章 MATLAB 7 简介49教学重点向量的运算方法 关系和逻辑运算
  • 50. 2018/10/16第一章 MATLAB 7 简介50教学过程向量及其运算方法 数组及其运算方法 多项式的创建和运算方法 关系和逻辑运算
  • 51. 2018/10/16第一章 MATLAB 7 简介511.向量及其运算 在命令窗口中直接输入向量 等差元素向量的生成 向量与数的四则运算 向量与向量之间的加减运算 点积、叉积和混合积
  • 52. 2018/10/16第一章 MATLAB 7 简介52(1)在命令窗口中直接输入向量在MATLAB 7中,生成向量最简单的方法就是在命令窗口中按一定格式直接输入。输入的格式要求是,向量元素用“[ ]”括起来,元素之间用空格、逗号或者分号相隔。需要注意的是,用它们相隔生成的向量形式是不相同的:用空格或逗号生成行向量;用分号生成列向量。>> a1=[15;21;27;93;101]; >>a2=[15,21,27,93,101]; >> a1 a1 = 15 21 27 93 101 >> a2 a2 = 15 21 27 93 101 >>
  • 53. 2018/10/16第一章 MATLAB 7 简介53(2)等差元素向量的生成 当向量的元素过多,同时向量各元素有等差的规律,此时采用直接输入法将过于繁琐。针对该种情况 ,可以使用冒号(:) 和linspace函数来生成等差元素向量。>> vec1=10:5:60 vec1 = 10 15 20 25 30 35 40 45 50 55 60 >> vec2=linspace (10,60,11) vec2 = 10 15 20 25 30 35 40 45 50 55 60
  • 54. 2018/10/16第一章 MATLAB 7 简介54(3) 向量与数的四则运算 向量与数的加法(减法):向量中的每个元素与数的加法(减法)运算。 向量与数的乘法(除法):向量中的每个元素与数的乘法(除法)运算。 >> vec1=80:-9:10 vec1 = 80 71 62 53 44 35 26 17 >> vec1+101 ans = 181 172 163 154 145 136 127 118 >>
  • 55. 2018/10/16第一章 MATLAB 7 简介55(4)向量与向量之间的加减运算 向量与向量的加法(减法)运算:向量中的每个元素与另一个向量中相对应的元素的加法(减法)运算。 >> vec1=linspace(200,500,7) >> vec2=linspace(900,600,7) >> vec3=vec1+vec2 vec3 = Columns 1 through 5 1100 1100 1100 1100 1100 Columns 6 through 7 1100 1100 >>
  • 56. 2018/10/16第一章 MATLAB 7 简介56(5) 点积、叉积和混合积 两个向量的点积等于其中一个向量的模与另一个向量在这个向量的方向上的投影的乘积 叉积的几何意义是指过两个相交向量的交点,并与此两向量所在平面垂直的向量 向量的混合积的几何意义是它的绝对值表示以向量为棱的平行六面体的体积
  • 57. 2018/10/16第一章 MATLAB 7 简介57点积、叉积运算举例点积 运算 >> x1=[11 22 33 44] >> x2=[1,2,3,4] >> a=dot(x1,x2) a = 330 >> sum(x1.*x2) ans = 330 >>叉积运算 >> x1=[11 22 33] x1 = 11 22 33 >> x2=[1 2 3] x2 = 1 2 3 >> x3=cross(x1,x2) x3 = 0 0 0
  • 58. 2018/10/16第一章 MATLAB 7 简介582. 数组及其运算 数组寻址和排序 数组的基本数值运算 数组的关系运算 数组的逻辑运算
  • 59. 2018/10/16第一章 MATLAB 7 简介59(1) 数组寻址和排序 通过对数组下表的访问来实现数组寻址 >> A=rand(1,5) A = 0.9501 0.2311 0.6068 0.4860 0.8913 >> >> A(4) ans = 0.4860 >> >> A(2:3) %A(2:1:3) ans = 0.2311 0.6068使用sort函数对数组进行排序 >> X = [3 7 5 0 4 2] >> sort(X,1) %对列排序 % 1改为2则对行排序 ans = 0 4 2 3 7 5 >> sort(2) ans = 2
  • 60. 2018/10/16第一章 MATLAB 7 简介60(2)数组的基本数值运算 数组的加法(减法) 数组的乘法(除法) 数组的乘方
  • 61. 2018/10/16第一章 MATLAB 7 简介61数值运算举例加减法 >> X=[1 4 7]; >> Y=[2 5 8]; >> Z=X-Y Z = -1 -1 -1 >> V=X+Y V = 3 9 15 >>乘方 >> X=[1 4 7] X = 1 4 7 >> Y=[2 5 8] Y = 2 5 8 >> Z=X.^Y Z = 1 1024 5764801
  • 62. 2018/10/16第一章 MATLAB 7 简介62(3)数组的关系运算 两个数通常可以用6种关系来进行描述:小于(<)、小于等于(< =)、大于(>)、大于等于(> =)、等于(= =)和不等于(~ =) 比较两个元素的大小时,如果结果为1,则表明关系式为真;如果结果为0,则表明关系式为假。例如关系式4+3<=6(数学语言表示4与3的和小于等于6),通过上面的叙述可知,此关系式的结果为0,标明关系式为假。
  • 63. 2018/10/16第一章 MATLAB 7 简介63(4)数组的逻辑运算 在各种逻辑运算中,有3种逻辑运算:与(&)、或(|)和非(~)。“&”和“|”操作符号可以比较两个标量或者两个通解数组(或矩阵);对于逻辑非“~”是一个一元操作符。但是对于数组(矩阵),逻辑运算是针对于数组(矩阵)中的每一个元素。同样,当逻辑为真时,返回值为1;当逻辑为假时,返回值为0。 在MATLAB 7中,逻辑运算通常可以用来生成只含有元素0和1的矩阵。
  • 64. 2018/10/16第一章 MATLAB 7 简介643. 多项式 多项式的创建 多项式的运算 关系和逻辑运算
  • 65. 2018/10/16第一章 MATLAB 7 简介65(1)多项式的创建直接输入系数向量创建多项式 特征多项式输入法 由多项式的根逆推多项式
  • 66. 2018/10/16第一章 MATLAB 7 简介66直接输入系数向量创建多项式由于在MATLAB 7中多项式是以向量的形式存储的,直接输入向量,MATLAB 7将按降幂自动把向量的元素分配给多项式各项的系数。而该向量可以是行向量,也可以是列向量 。>> P=[3 5 0 1 0 12] P = 3 5 0 1 0 12 >> y=poly2sym(P) y = 3*x^5+5*x^4+x^2+12 >> disp(y) 3*x^5+5*x^4+x^2+12 >>
  • 67. 2018/10/16第一章 MATLAB 7 简介67特征多项式输入法MATLAB 7提供了poly函数,使用它可以由矩阵的特征多项式创建多项式。使用该方法生成多项式时,其首项的系数必为1 。>> A=[ 3 1 4 1; 5 9 2 6;5 3 5 8; 9 7 9 3] A = 3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 >> p=poly(A); >> disp(poly2sym(p)) x^4-20*x^3-16*x^2+480*x+1724034232352773/17592186044416
  • 68. 2018/10/16第一章 MATLAB 7 简介68由多项式的根逆推多项式 如果已知某个多项式的根,那么,使用poly函数,可以很轻松地产生其对应的多项式。 >> roots=[-4 -2+2i -2-2i 5] roots = -4.0000 -2.0000 + 2.0000i -2.0000 - 2.0000i 5.0000 >> p=poly(roots) p = 1 3 -16 -88 -160 >> disp(poly2sym(p)) x^4+3*x^3-16*x^2-88*x-160 >>
  • 69. 2018/10/16第一章 MATLAB 7 简介69(2)多项式的运算 多项式的求值 求多项式的根 多项式的四则运算
  • 70. 2018/10/16第一章 MATLAB 7 简介70多项式的求值MATLAB 7提供了两个函数来对多项式进行求值,即polyval和polyvalm。前者以数组为计算单位,后者以矩阵为计算单位。 >> p=[1.0000 -20.0000 -16.0000 480.0000 98.0000] p = 1 -20 -16 480 98 >> x=4 x = 4 >> polyval(p,x) ans = 738
  • 71. 2018/10/16第一章 MATLAB 7 简介71求多项式的根在MATLAB 7语言里,多项式由一个行向量表示,设为p,它的系数按降序排列,使用roots函数可以求出该多项式的根。其使用格式为roots(p)。 >> p=[1 0 3 12 -7] p = 1 0 3 12 -7 >> roots(p) ans = 0.7876 + 2.4351i 0.7876 - 2.4351i -2.0872 0.5121 >>
  • 72. 2018/10/16第一章 MATLAB 7 简介72多项式的四则运算 加法和减法 如果两个多项式的向量阶数相同,标准的数组加法有效。当两个多项式的向量阶数不同时,需要在低阶多项式的前边补0,使得它与相加的高阶多项式有相同的阶数。 >> a=[8 2 2 8],b=[6 1 6 1] a = 8 2 2 8 b = 6 1 6 1 >> c=a+b c = 14 3 8 9 >> Y3=poly2sym(c) Y3 = 14*x^3+3*x^2+8*x+9
  • 73. 2018/10/16第一章 MATLAB 7 简介73多项式的四则运算乘法 使用conv函数对多项式进行乘法运算。 格式为c=conv(a,b),其中a和b为两个多项式的系数向量,c为相乘所生成的多项式的系数向量。>> a=[1 2 3 4],b=[5 6 7 8]; >> Y1=poly2sym(a) Y1 = x^3+2*x^2+3*x+4 >> Y2=poly2sym(b) Y2 = 5*x^3+6*x^2+7*x+8 >> c=conv(a,b); >> Y=poly2sym(c) Y = 5*x^6+16*x^5+34*x^4+60*x^3+61*x^2+52*x+32
  • 74. 2018/10/16第一章 MATLAB 7 简介74多项式的四则运算除法 在数值计算中,经常需要用一个多项式去除另一个多项式。在MATLAB 7语言中,使用decon函数来完成该项功能。>> a=[1 2 3 4],b=[5 6 7 8]; >> c=conv(a,b); >> d=deconv(c,a); >> e=deconv(c,b) >> x=poly2sym(d),y=poly2sym(e) x = 5*x^3+6*x^2+7*x+8 y = x^3+2*x^2+3*x+4 >>
  • 75. 2018/10/16第一章 MATLAB 7 简介75多项式的四则运算求导和积分 在MATLAB 7语言中,分别使用polyder函数和polyint函数来求多项式的导数与积分。 >> p=[3 1 8 8] p = 3 1 8 8 >> q=polyder(p) q = 9 2 8 >> p1=polyint(q) p1 = 3 1 8 0 >>
  • 76. 2018/10/16第一章 MATLAB 7 简介764.关系和逻辑运算 关系操作符 逻辑操作符 关系与逻辑函数 NaNs和空矩阵 各种运算符的优先级
  • 77. 2018/10/16第一章 MATLAB 7 简介77(1) 关系操作符 关系运算符该运算符的功能关系运算符该运算符的功能< 小于>=大于等于> 大于==等于<=小于等于~=不等于关系操作符及其功能
  • 78. 2018/10/16第一章 MATLAB 7 简介78(2) 逻辑操作符逻辑操作符功 能&与|或~非逻辑操作符及其功能
  • 79. 2018/10/16第一章 MATLAB 7 简介79(3) 关系与逻辑函数 关系与逻辑函数及其功能 关系和逻辑函数使 用 功 能xor(s,t)异或运算,s或t非零(真)返回1,s和t都是零(假)或都是非零(真)返回0any(x)如果在一个向量x中,任何元素是非零,返回1;矩阵x中的每一列有非零元素,返回1all(x)如果在一个向量x中,所有元素非零,返回1;矩阵x中的每一列所有元素非零,返回1
  • 80. 2018/10/16第一章 MATLAB 7 简介80(4) NaNs和空矩阵NaNs和空矩阵([ ]) 在MATLAB 7中作特殊处理: 根据IEEE数学标准。对NaNs的几乎所有运算结果都得出NaNs。 空矩阵由MATLAB 7的生成器确定,并有它自己的特性。空矩阵是简单的,它们是MATLAB 7大小为零的变量 。>> a=size([]) size:尺寸 a = 0 0 0行0列 >> b=ones(4,0) b = Empty matrix: 4-by-0 >> size(b) ans = 4 0 >> length(b) ans = 0 >>
  • 81. 2018/10/16第一章 MATLAB 7 简介81各种运算符的优先级 优 先 级运 算 符最高()(小括号)↓.’(转置) ‘ (共轭转置) .^ (数组和数值乘方) ^ (矩阵乘方)↓+(一元加法) - (一元减法) ~(取反)↓.*(乘法) *(矩阵乘法) ./(右除) /(矩阵右除) .\(左除) \(矩阵左除)↓+(加法) -(减法)↓: (冒号)↓< (小于) <=(小于或等于) >(大于) >=()大于或等于 ==(等于) ~=()不等于↓& (逻辑与)最低| (逻辑或)
  • 82. 2018/10/16第一章 MATLAB 7 简介82第五章 字符串、单元数组和结构 教学目标 教学重点 教学过程
  • 83. 2018/10/16第一章 MATLAB 7 简介83教学目标 本章将介绍三种特殊的数据类型,即字符串、单元数组和结构。 使用这三种数据类型,相关的数据可以通过一个单元数组或是结构进行组织和访问,数据的管理就变得要容易一些。
  • 84. 2018/10/16第一章 MATLAB 7 简介84教学重点字符串的设定和操作 单元数组的操作 结构型变量的操作
  • 85. 2018/10/16第一章 MATLAB 7 简介85教学过程字符串的设定 字符串的各种操作 单元数组的生成方法 单元数组的操作 结构型变量的生成方法 结构型变量的操作
  • 86. 2018/10/16第一章 MATLAB 7 简介861. 字符串的设定在MATLAB 7中的字符串一般是ASCII值的数值数组,它作为字符串表达式进行显示。MATLAB 7对字符串的设定非常简单,只需用单引号(’)将需设定的字符串引注即可。>> str='I have many good friends!' str = I have many good friends! >> whos Name Size Bytes Class EXPLODE 1x5 40 double array F1 1x12 24 char array F2 1x12 24 char array
  • 87. 2018/10/16第一章 MATLAB 7 简介872. 字符串的操作 字符串元素的读取 字符串的基本变换 字符串的运算
  • 88. 2018/10/16第一章 MATLAB 7 简介88(1)字符串元素的读取字符串元素的读取 利用数组操作工具进行读取 使用disp函数显示字符串 >> str='今天,是2005年10月25日, 我们班一起去上海旅游。' str = 今天,是2005年10月25日, 我们班一起去上海旅游。 >> str(6) ans = 0
  • 89. 2018/10/16第一章 MATLAB 7 简介89(2)字符串的基本变换基本变换的种类 字符串的ASCII码操作 使用char函数进行逆变换 字符串的执行 >> for n = 2:3 eval(['M' num2str(n) ' = magic(n)']) end M2 = 1 3 4 2 M3 = 8 1 6 3 5 7 4 9 2
  • 90. 2018/10/16第一章 MATLAB 7 简介90常见字符串的操作 函 数 名函 数 用 途函 数 名函 数 用 途strcat链接字符串strvcat垂直链接字符串strcmp比较字符串大小strncmp比较字符串的前n个字符findstr在其他的字符串中寻找该字符串strjust证明字符数组strmatch查找可能匹配的字符串strrep用其他字符串代替改串strtok查找字符串中的记号blanks生成空的字符串deblank删除字符串内的空格ischar字符串检验iscellstr字符串的单元检验isletter字母检验isspace空格检验stringsstrings函数的帮助
  • 91. 2018/10/16第一章 MATLAB 7 简介91(3)字符串的运算字符串的运算主要是指判断字符串是否相等,通过字符的运算来比较字符,字符串中字符的分类、查找与替换、字符串与数值的转换和数组与字符串的转换等。
  • 92. 2018/10/16第一章 MATLAB 7 简介92判断字符串是否相等 有两个函数可以用来判断两个输入的字符串是否相等。 strcmp函数:比较两个字符串是否相等,当相等时,系统将返回值1,不相等时,返回值0; strncmp函数:比较两个输入字符串的前几个字符是否相等,当相等时,系统将返回值1,不相等时,返回值0。 >> words1=‘人民文学'; >> words2=‘人民的同志'; >> N=strcmp(words1,words2) N = 0 >> Y=strncmp(words1,words2,3) Y = 0 >> x=strncmp(words1,words2,1) x = 1 >>
  • 93. 2018/10/16第一章 MATLAB 7 简介93通过字符的运算比较字符 运算符号的意义符 号 形 式符 号 意 义英 文 简 写==等于eq~= 不等于ne< 小于lt> 大于gt<= 小于或等于le>=大于或等于ge
  • 94. 2018/10/16第一章 MATLAB 7 简介94字符串中字符的分类 字符串中的字符通常可以分为空白字符、字母字符和其他类型的字符。用户可以用isletter和isspace两个函数来对字符串中的字符进行分类 。realstring='www.zaobao.com ' realstring = www.zaobao.com >> A=isspace(realstring) A = Columns 1 through 11 0 0 0 0 0 0 0 0 0 0 0 Columns 12 through 16 0 0 0 1 1 >>
  • 95. 2018/10/16第一章 MATLAB 7 简介95. 查找与替换 查找与替换是字符串操作中的一项重要内容,MATLAB 7语言提供了findstr、strfind和strrep等函数来实现查找与替换操作。>> s1=‘我们班的班长是是赵洁!‘; >> s2=strrep(s1,'赵洁','黄远') s2 = 我们班的班长是是黄远! >> s3=strrep(s2,'黄远! ' ,‘谁?') s3 = 我们班的班长是是谁? >>
  • 96. 2018/10/16第一章 MATLAB 7 简介96字符串与数值的转换 常见的字符串转换函数函 数功 能函 数功 能hex2dec将16进制字符串转化为10进制整数dec2hex将10进制整数转化为16进制字符串bin2dec将2进制字符串转化为10进制整数dec2bin将10进制整数转化为2进制字符串base2dec转化B底字符串为10进制整数hex2num将16进制字符转化为双精度数upper改该字符串为大写lower改该字符串为小写fprintf把格式化的文本写到文件中或显示屏上sprintf用格式控制,数字转换成字符串sscanf用格式控制,字符串转换成数字charASCII码转换成字符串num2str数字转换成字符串int2str整数转换成字符串
  • 97. 2018/10/16第一章 MATLAB 7 简介97字符串与数值的转换举例使用str2num函数将字符型矩阵转换为数字矩阵 >> S = ['1 2' ;'3 4'] S = % S为字符型矩阵 1 2 3 4 >> X=str2num(S) X = %X为数字型矩阵 1 2 3 4
  • 98. 2018/10/16第一章 MATLAB 7 简介982. 单 元 数 组 直接生成单元数组 使用cell函数生成单元数组 单元数组的内容的显示或获取 单元数组的变维处理
  • 99. 2018/10/16第一章 MATLAB 7 简介99(1)直接生成单元数组用类似矩阵的记号将给复杂的数据结构纳入一个变量之下。和矩阵中的圆括号表示下标类似,单元数组由大括号表示下标。 >> A={‘反对霸权','Wind Gone',100+200*i,[90, 85, 55; 67, 70, 102; 57, 18, 100; -200, 89, 78]} A = Columns 1 through 3 ‘反对霸权' 'Wind Gone' [1.0000e+002 +2.0000e+002i] Column 4 [4x3 double]
  • 100. 2018/10/16第一章 MATLAB 7 简介100(2)使用cell函数生成单元数组应用举例: >> A=cell(2,2) A = [] [] [] [] >> A{1,1}=['富强' '民主' ;'文明' '廉洁'] A = [2x4 char] [] [] []
  • 101. 2018/10/16第一章 MATLAB 7 简介101(3)单元数组的内容的显示或获取>>celldisp(A,'Huang') Huang{1,1} = 1 2 2 2 Huang{2,1} = Tsinghua and Peking Huang{1,2} = MATLAB 7 Huang{2,2} = 1.0000 + 5.0000i 12.0000 - 4.0000i >>
  • 102. 2018/10/16第一章 MATLAB 7 简介102(4)单元数组的变维处理 前边所述的对矩阵的变维处理同样也适用于对单元数组的变维处理 。 此外还可以使用reshape函数进行操作。 >> A={[1 2 ;3 4],‘love’;‘呼唤和平',[90, 85, 55; 67, 70, 102; 57, 18, 100; -200, 89, 78]} A = [2x2 double] 'love' ‘呼唤和平' [4x3 double] >> a=reshape(A,1,4) a = [2x2 double] ‘呼唤和平' 'love' [4x3 double] >>
  • 103. 2018/10/16第一章 MATLAB 7 简介1033. 结构型变量直接输入法生成结构型变量 使用struct函数生成结构型变量 在结构体变量中添加成员变量 在结构体变量中删除成员变量 在结构体变量中调用成员变量 getefield和setfield函数的使用
  • 104. 2018/10/16第一章 MATLAB 7 简介104(1)直接输入法生成结构型变量>> student.test=[99 56 96 87 67 69 87 76 92]; >> student.name='Wu Qing'; >> student.weight=68; >> student.height=1.72; >> student.num=2003214091; >> student.add='School of civil engneering.Tsinghua university'; >> student.tel='1381042679*';
  • 105. 2018/10/16第一章 MATLAB 7 简介105(2)使用struct函数生成结构型变量>> truct_array=struct(‘d’,{{‘北京’,‘上海'}},'strengths',[40000 1000]) truct_array = d: {‘北京’ ‘上海'} strengths: [40000 1000] >>
  • 106. 2018/10/16第一章 MATLAB 7 简介106(3)在结构体变量中添加成员变量>> student(1).gender='Male'; %在student中添加gender和age这2项记录 >> student(1).age=25; >> student(2).gender='Female'; >> student(2).age=21; >> student %查询student的结构 student = 1x2 struct array with fields: test name weight height num add tel gender age >>
  • 107. 2018/10/16第一章 MATLAB 7 简介107(4)在结构体变量中删除成员变量 使用函数rmfifld从结构体变量中删除成员变量 。 >> student=rmfield(student,'age'); student = 1x2 struct array with fields: test name weight height num add tel gender
  • 108. 2018/10/16第一章 MATLAB 7 简介108(5) 在结构体变量中调用成员变量>> student(1).test %从结构体变量中取出相关信息 ans = 99 56 96 87 67 69 87 76 92 >> student(1).test(5) ans = 67 >> student(1).add ans = School of civil engneering.Tsinghua university
  • 109. 2018/10/16第一章 MATLAB 7 简介109(6) getefield和setfield函数的使用getefield函数取得当前存储在某个成员变量中的值 。 setfield函数给某个成员变量插入新的值 。>> GETF=getfield(student(1),'add') GETF = School of civil engneering.Tsinghua university >>
  • 110. 2018/10/16第一章 MATLAB 7 简介110第六章 数值计算功能 教学目标 教学重点 教学过程
  • 111. 2018/10/16第一章 MATLAB 7 简介111教学目标 本章将介绍MATLAB 7的数值计算功能,包括MATLAB 7的向量、矩阵以及它们之间的运算。 介绍了一些特殊的矩阵数据结构。 最后介绍一些MATLAB 7与线性代数和概率统计的结合。 通过对本章的学习,读者可以编写简单且功能完善的MATLAB 7程序,从而解决各类基本问题,用户可以通过本章逐步掌握MATLAB 7的数值计算方法。
  • 112. 2018/10/16第一章 MATLAB 7 简介112教学重点矩阵的生成和基本的数值运算 稀疏型矩阵的生成和基本操作 数值微分的求解方法
  • 113. 2018/10/16第一章 MATLAB 7 简介113教学过程矩阵的生成和基本的数值运算 特殊矩阵的生成 稀疏型矩阵的生成和基本操作 稀疏型矩阵和满矩阵的相互转换 微分和积分的定义 数值微分的求解方法 对函数进行数值积分的方法 使用MATLAB 7进行线性代数的运算 使用MATLAB 7进行概率统计方面的运算
  • 114. 2018/10/16第一章 MATLAB 7 简介1141. 矩阵的生成矩阵的生成有多种方式,通常使用的有4种方法: 在命令窗口中直接输入矩阵 通过语句和函数产生矩阵 在M文件中建立矩阵 从外部的数据文件中导入矩阵>> matrix=[1 ,1, 1, 1;2, 2, 2, 2;3, 3, 3, 3;4, 4, 4, 4] matrix = 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4
  • 115. 2018/10/16第一章 MATLAB 7 简介1152. 矩阵的基本数值运算矩阵与常数的四则运算 矩阵之间的四则运算 X=B/A:表示求矩阵方程XA=B的解。AX=B,则X=A\B >> A=[2 1 -1;2 1 0;1 -1 1] A = 2 1 -1 2 1 0 1 -1 1 >> B=[1 -1 3;4 3 2]; >> X=B/A X = -2.0000 2.0000 1.0000 -2.6667 5.0000 -0.6667
  • 116. 2018/10/16第一章 MATLAB 7 简介1163. 特殊矩阵的生成零矩阵和全1矩阵的生成 (zeros 、ones) 对角矩阵的生成 (diag) 随机矩阵的生成 (rand、randn ) 范德蒙德矩阵的生成 (vander) 魔术矩阵的生成 (magic) Hilbert矩阵和反Hilbert矩阵的生成 (hilb、invhilb )
  • 117. 2018/10/16第一章 MATLAB 7 简介117特殊矩阵的生成举例>> rand(5) ans = 0.9501 0.7621 0.6154 0.4057 0.0579 0.2311 0.4565 0.7919 0.9355 0.3529 0.6068 0.0185 0.9218 0.9169 0.8132 0.4860 0.8214 0.7382 0.4103 0.0099 0.8913 0.4447 0.1763 0.8936 0.1389 >>
  • 118. 2018/10/16第一章 MATLAB 7 简介1184. 稀疏型矩阵 稀疏矩阵的生成 稀疏矩阵与满矩阵的相互转换 稀疏矩阵的操作
  • 119. 2018/10/16第一章 MATLAB 7 简介119(1) 稀疏矩阵的生成在MATLAB 7中,生成稀疏矩阵用特殊的函数来进行,这些函数有speye、spones、spdiags、sparse、find、full、spalloc、sprand和sprandn 等。
  • 120. 2018/10/16第一章 MATLAB 7 简介120Speye函数应用举例>> A=eye(5) A = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 >> speye(size(A)) ans = (1,1) 1 (2,2) 1 (3,3) 1 (4,4) 1 (5,5) 1
  • 121. 2018/10/16第一章 MATLAB 7 简介121 (2)稀疏矩阵与满矩阵的相互转换 用来将稀疏矩阵和满矩阵相互转换的函数有sparse、full和find等3个函数 。 >> S(10,50)=82; >> S(32,14)=82; >> S(251,396)=25; >> I=find(S) %生成S中非零元素的位置 I = 3295 12309 99396
  • 122. 2018/10/16第一章 MATLAB 7 简介122 (3)稀疏矩阵的操作 对稀疏矩阵进行操作,主要由nnz、nonzeros、nzmax、sponse、spalloc、isspase、spyfun和spy等函数来实现 。 >> v=[6 2 7 8 ]; >> S=diag(v,1) >> R=sparse(S); >> N=issparse(S) N = 0 >> Y=issparse(R) Y = 1 >>
  • 123. 2018/10/16第一章 MATLAB 7 简介1235. 微分和积分 数值微分 使用diff函数求数值微分 使用gradient函数求近似梯度 jacobian函数求多元函数的导数 函数的数值积分 矩形求积 trapz函数(梯形求积) 自适应法(Simpson法) 高阶自适应法(Newton-Cotes法)
  • 124. 2018/10/16第一章 MATLAB 7 简介124(1)数值微分>> syms x y z >> jacobian([x*y*z; y; x+z],[x y z]) ans = [ y*z, x*z, x*y] [ 0, 1, 0] [ 1, 0, 1] >> syms u v >> jacobian(u*exp(v),[u;v]) ans = [ exp(v), u*exp(v)] >>
  • 125. 2018/10/16第一章 MATLAB 7 简介125(2)函数的数值积分>> x=0:0.1:10; >> y=sin(x); >> z=cumsum(y)*0.1; >> plot(x,y,'r-',x,z,'k*') >>
  • 126. 2018/10/16第一章 MATLAB 7 简介126
  • 127. 2018/10/16第一章 MATLAB 7 简介1276. MATLAB 7与线性代数矩阵的特征参数运算 矩阵的分解运算 矩阵的结构操作
  • 128. 2018/10/16第一章 MATLAB 7 简介128(1)矩阵的特征参数运算矩阵的乘方运算和开方运算 矩阵的指数和对数运算 矩阵的逆运算 矩阵的行列式运算 矩阵的特征值运算 矩阵(向量)的范数运算 矩阵的条件数运算 矩阵的秩 矩阵的迹
  • 129. 2018/10/16第一章 MATLAB 7 简介129特征参数运算举例1矩阵的逆运算 >> A=[1 0 0 0;1 2 0 0;2 1 3 0;1 2 1 4] A = 1 0 0 0 1 2 0 0 2 1 3 0 1 2 1 4 >> B=inv(A) B = 1.0000 0 0 0 -0.5000 0.5000 0 0 -0.5000 -0.1667 0.3333 0 0.1250 -0.2083 -0.0833 0.2500 >>
  • 130. 2018/10/16第一章 MATLAB 7 简介130特征参数运算举例2矩阵的秩 >> T1=[1 1 1;2 2 3] T1 = 1 1 1 2 2 3 >> r=rank(T1) r = 2 >>
  • 131. 2018/10/16第一章 MATLAB 7 简介131(2)矩阵的分解运算三角分解(lu) 正交分解(qr) 特征值分解(eig) Chollesky分解(chol) 奇异值分解(svd)
  • 132. 2018/10/16第一章 MATLAB 7 简介132分解运算举例1三角分解(lu) >> X=[6 2 -1;2 4 0;1 4 -1;-1 -1 3] >> [L,U]=lu(X) L = 1.0000 0 0 0.3333 0.9091 0.4068 0.1667 1.0000 0 -0.1667 -0.1818 1.0000 U = 6.0000 2.0000 -1.0000 0 3.6667 -0.8333 0 0 2.6818 >>
  • 133. 2018/10/16第一章 MATLAB 7 简介133分解运算举例2正交分解 >> A=[17 3 4;3 1 12;4 12 8] >> [Q,R]=qr(A) Q = -0.9594 0.2294 0.1643 -0.1693 -0.0023 -0.9856 -0.2257 -0.9733 0.0411 R = -17.7200 -5.7562 -7.6749 0 -10.9939 -6.8967 0 0 -10.8412
  • 134. 2018/10/16第一章 MATLAB 7 简介134(3)矩阵的结构操作矩阵的标识 矩阵的扩充 矩阵的部分删除 矩阵的修改 矩阵结构的改变 矩阵的旋转和翻转
  • 135. 2018/10/16第一章 MATLAB 7 简介135结构操作举例1矩阵的标识 >> A=magic(4) A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 >> A(2,4) ans = 8 >>
  • 136. 2018/10/16第一章 MATLAB 7 简介136结构操作举例2矩阵的翻转 >> A=randn(3) A = -0.4326 0.2877 1.1892 -1.6656 -1.1465 -0.0376 0.1253 1.1909 0.3273 >> B=fliplr(A) B = 1.1892 0.2877 -0.4326 -0.0376 -1.1465 -1.6656 0.
  • 137. 2018/10/16第一章 MATLAB 7 简介1377. MATLAB 7 与概 率 统 计 随机数的产生 统计量的数字特征 参数估计 假设检验 统计作图
  • 138. 2018/10/16第一章 MATLAB 7 简介138(1)随机数的产生 均匀分布的随机数据的产生 (unifrnd) 指数分布的随机数据的产生 (exprnd) 二项分布的随机数据的产生 (binornd) 正态分布的随机数据的产生 (normrnd)
  • 139. 2018/10/16第一章 MATLAB 7 简介139随机数的产生举例均匀分布的随机数据的产生 >> unifrnd(1,4) ans = 1.6971 >> unifrnd(1,10,4,4) ans = 8.2438 1.4478 8.5948 4.9581 9.1756 1.7055 2.5651 4.0604 3.0870 6.7673 2.5371 3.8280 3.1538 2.7180 9.9487 4.2857 >>
  • 140. 2018/10/16第一章 MATLAB 7 简介140(2)统计量的数字特征平均值和中位数 (mean 、geomean ) 数据比较 (sort 、sortrows 、range ) 期望和方差 (mean、var ) 常见分布的期望和方差 (unifstat 、binostat ) 协方差与相关系数 (cov、corrcoee )
  • 141. 2018/10/16第一章 MATLAB 7 简介141统计量的数字特征举例1算术平均值 >> A=magic(4) A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 >> mean(A) ans = 8.5000 8.5000 8.5000 8.5000
  • 142. 2018/10/16第一章 MATLAB 7 简介142统计量的数字特征举例2样本的方差 >> B=rand(4) B = 0.4966 0.8180 0.3412 0.8385 0.8998 0.6602 0.5341 0.5681 0.8216 0.3420 0.7271 0.3704 0.6449 0.2897 0.3093 0.7027 >> var(B) ans = 0.0327 0.0643 0.0375 0.0399
  • 143. 2018/10/16第一章 MATLAB 7 简介143(3)参数估计 常见分布的参数估计 β分布的极大似然估计值和置信区间 正态分布的参数估计 非线性模型置信区间预测 高斯—牛顿法的非线性最小二乘数据拟合 非线性模型的参数估计的置信区间
  • 144. 2018/10/16第一章 MATLAB 7 简介144参数估计举例β分布的极大似然估计值和置信区间 >> X = betarnd (7,5,150,1); >> [PHAT,PCI] = betafit(X,0.03) PHAT = 7.7517 5.5560 PCI = 5.4440 4.0534 10.0594 7.0585 >>
  • 145. 2018/10/16第一章 MATLAB 7 简介145(4)假设检验 已知单个正态分布的均值μ的假设检验(U检验法) σ2未知时,单个正态总体的均值μ的假设检验( t检验法) 两个正态分布均值差的检验(t检验) 两个分布一致性的检验——秩和检验
  • 146. 2018/10/16第一章 MATLAB 7 简介146假设检验举例某种电子元件的寿命X(以小时计)服从正态分布,μ、σ2均未知。现测得16只元件的寿命如下 159 280 101 212 224 379 179 264 222 362 168 250 149 260 485 170 问是否有理由认为元件的平均寿命大于225(小时)?解:未知σ2,在水平α=0.05下检验假设:H0:μ<μ0=225,H1:μ>225 >> X=[159 280 101 212 224 379 179 264 222 362 168 250 149 260 485 170]; >> [h,sig,ci]=ttest(X,225,0.05,1) 结果显示为: h = 0 sig = 0.2570 ci = 198.2321 Inf %均值225在该置信区间内
  • 147. 2018/10/16第一章 MATLAB 7 简介147 (5) 统计作图 正整数的频率表 经验累积分布函数图形 最小二乘拟合直线 绘制正态分布概率图形 样本的概率图形 附加有正态密度曲线的直方图 在指定的界线之间绘制正态密度曲线 绘制威布尔(Weibull)概率图形 样本数据的盒图
  • 148. 2018/10/16第一章 MATLAB 7 简介148第七章 符 号 运 算 教学目标 教学重点 教学过程
  • 149. 2018/10/16第一章 MATLAB 7 简介149教学目标 本章将介绍MATLAB 7的符号运算功能。 通过对本章的学习,读者应该掌握符号表达式和符号矩阵的操作、符号微积分、符号线性方程和符号微分方程等的运算。
  • 150. 2018/10/16第一章 MATLAB 7 简介150教学重点符号表达式和符号矩阵的操作 符号微积分 符号线性方程 符号微分方程
  • 151. 2018/10/16第一章 MATLAB 7 简介151教学过程符号变量、符号表达式和符号方程的生成 符号变量的基本操作 符号表达式的操作 符号矩阵及符号数组的生成和运算 符号极限基本知识 符号微分、求导和积分 符号积分变换的内容 符号代数方程的求解 图示化符号函数计算器的使用方法
  • 152. 2018/10/16第一章 MATLAB 7 简介1521. 符号变量、符号表达式和符号方程的生成 使用sym函数定义符号变量和符号表达式 使用syms函数定义符号变量和符号表达式 符号方程的生成
  • 153. 2018/10/16第一章 MATLAB 7 简介153(1) 使用sym函数定义符号变量和符号表达式>> sqrt(2) ans = 1.4142 >> a=sqrt(sym(2)) a = 2^(1/2) >> sym(2)/sym(5) ans = 2/5 >> 2/5+1/3 ans = 0.7333
  • 154. 2018/10/16第一章 MATLAB 7 简介154(2) 使用syms函数定义符号变量和符号表达式>> syms a b c x >> f = sym('a*x^2 + b*x + c') f = a*x^2 + b*x + c >> g=f^2+4*f-2 g = (a*x^2+b*x+c)^2+4*a*x^2+4*b*x+4*c-2 >>
  • 155. 2018/10/16第一章 MATLAB 7 简介155(3) 符号方程的生成>> %符号方程的生成 >> %使用sym函数生成符号方程 >> equation1=sym('sin(x)+cos(x)=1') equation1 = sin(x)+cos(x)=1 >>
  • 156. 2018/10/16第一章 MATLAB 7 简介1562.符号变量的基本操作findsym函数用于寻找符号变量 任意精确度的符号表达式 数值型变量与符号型变量的转换形式
  • 157. 2018/10/16第一章 MATLAB 7 简介157(1) findsym函数用于寻找符号变量 >> syms a alpha b x1 y >> findsym(alpha+a+b) ans = a, alpha, b >> findsym(cos(alpha)*b*x1 + 14*y,2) ans = x1,y >> findsym(y*(4+3*i) + 6*j) ans = y >>
  • 158. 2018/10/16第一章 MATLAB 7 简介158(2) 任意精确度的符号表达式>> r=vpa(pi) r = 3.1415926535897932384626433832795 >> >> q=vpa(hilb(2)) q = [ 1., .50000000000000000000000000000000] [ .50000000000000000000000000000000, .33333333333333333333333333333333] >>
  • 159. 2018/10/16第一章 MATLAB 7 简介159(3)数值型变量与符号型变量的转换形式 >> t=0.1 t = 0.1000 >> sym(t) %有理数形式 ans = 1/10 >> sym(t,'r') %有理数形式 ans = 1/10 >> sym(t,'f') %浮点数形式 ans = '1.999999999999a'*2^(-4)
  • 160. 2018/10/16第一章 MATLAB 7 简介1603. 符号表达式(符号函数)的操作 符号表达式的四则运算 合并符号表达式的同类项 符号多项式的因式分解 符号表达式的简化 subs函数用于替换求值 反函数的运算 复合函数的运算
  • 161. 2018/10/16第一章 MATLAB 7 简介161(1) 符号表达式的四则运算 >> syms x y a b >> fun1=sin(x)+cos(y) fun1 = sin(x)+cos(y) >> fun2=a+b fun2 = a+b >> fun1+fun2 ans = sin(x)+cos(y)+a+b >>fun1*fun2 ans = (sin(x)+cos(y))*(a+b)
  • 162. 2018/10/16第一章 MATLAB 7 简介162(2) 合并符号表达式的同类项 >> syms x y >> collect(x^2*y + y*x - x^2 - 2*x) ans = (y-1)*x^2+(y-2)*x >> f = -1/4*x*exp(-2*x)+3/16*exp(-2*x); >> collect(f) ans = -1/4*x*exp(-2*x)+3/16*exp(-2*x) >>
  • 163. 2018/10/16第一章 MATLAB 7 简介163(3) 符号多项式的因式分解(horner )>> syms x >> fun1=2*x^3+2*x^2-32*x+40 fun1 = 2*x^3+2*x^2-32*x+40 >> horner(fun1) ans = 40+(-32+(2+2*x)*x)*x >> fun2=x^3-6*x^2+11*x-6 fun2 = x^3-6*x^2+11*x-6 >> horner(fun2) ans = -6+(11+(-6+x)*x)*x >>
  • 164. 2018/10/16第一章 MATLAB 7 简介164(4) 符号表达式的简化(simplify) >> syms x >> fun1=(1/x+7/x^2+12/x+8)^(1/3) fun1 = (13/x+7/x^2+8)^(1/3) >> sfy1=simplify(fun1) sfy1 = ((13*x+7+8*x^2)/x^2)^(1/3) >> sfy2=simplify(sfy1) sfy2 = ((13*x+7+8*x^2)/x^2)^(1/3)
  • 165. 2018/10/16第一章 MATLAB 7 简介165(5) subs函数用于替换求值 >> syms x y f = x^2*y + 5*x*sqrt(y) f = x^2*y+5*x*y^(1/2) >> subs(f, x, 3) ans = 9*y+15*y^(1/2) >> subs(f, y, 3) ans = 3*x^2+5*x*3^(1/2) >>
  • 166. 2018/10/16第一章 MATLAB 7 简介166(6) 反函数的运算 (finverse )>> syms x y >> f = x^2+y] >> f = x^2+y f = x^2+y >> finverse(f,y) ans = -x^2+y
  • 167. 2018/10/16第一章 MATLAB 7 简介167(7) 复合函数的运算 (compose) >> syms x y z t u >> f = 1/(1 + x^2) >> g = sin(y) >> h = x^t >> p = exp(-y/u) >> compose(f,g) ans = 1/(1+sin(y)^2) >> compose(f,g,t) ans = 1/(1+sin(t)^2)
  • 168. 2018/10/16第一章 MATLAB 7 简介1684. 符号矩阵的生成和运算 符号矩阵的生成 使用sym函数直接生成符号矩阵 用生成子矩阵的方法生成符号矩阵 由数值矩阵转换为符号矩阵 符号矩阵及符号数组的运算 符号矩阵和数组的四则运算 矩阵和数组的逆运算 矩阵和数组的幂运算 符号矩阵的秩 符号矩阵的逆和行列式运算
  • 169. 2018/10/16第一章 MATLAB 7 简介169(1)sym函数直接生成符号矩阵 >> a1=sym('[1/3 2/3 5/7;9/11 11/13 13/17;17/19 19/23 23/29]') a1 = [ 1/3, 2/3, 5/7] [ 9/11, 11/13, 13/17] [ 17/19, 19/23, 23/29] >>
  • 170. 2018/10/16第一章 MATLAB 7 简介170(2) 用生成子矩阵的方法生成符号矩阵 >> a=['[100,cos(x)]';'[1/s,x ]'] a = [100,cos(x)] [1/s,x ] >>
  • 171. 2018/10/16第一章 MATLAB 7 简介171(3)由数值矩阵转换为符号矩阵 >> M=[30 1 1 1;6 1 5 9;9 8 25 4;32 45 62 0] M = 30 1 1 1 6 1 5 9 9 8 25 4 32 45 62 0 >> S=sym(M) S = [ 30, 1, 1, 1] [ 6, 1, 5, 9] [ 9, 8, 25, 4] [ 32, 45, 62, 0] >> 此时,虽然矩阵形式没有发生改变,但是在MATLAB 7的工作区间内,系统已经生成了一个新的矩阵,其数据类型为符号型。
  • 172. 2018/10/16第一章 MATLAB 7 简介172(4)符号矩阵的四则运算 >> m=sym('[x,x^2,x*2,1/x]') m = [ x, x^2, x*2, 1/x] >> n=sym('[2*x,y,x,x^2]') n = [ 2*x, y, x, x^2] >> m+n ans = [ 3*x, x^2+y, 3*x, 1/x+x^2] >> m-n ans = [ -x, x^2-y, x, 1/x-x^2] >>
  • 173. 2018/10/16第一章 MATLAB 7 简介173(5) 矩阵和数组的逆运算 (‘)q = [ 3, 4, 9, 6] [ x, y, z, w] [ a, b, c, d] >> q' ans = [ 3, conj(x), conj(a)] [ 4, conj(y), conj(b)] [ 9, conj(z), conj(c)] [ 6, conj(w), conj(d)] >>
  • 174. 2018/10/16第一章 MATLAB 7 简介174(6) 符号矩阵的秩 (rank)>> a=sym('[1,1/x,x^2;xin(x),cos(x),tan(x);log(x),2,9]') a = [ 1, 1/x, x^2] [ xin(x), cos(x), tan(x)] [ log(x), 2, 9] >> rank(a) ans = 3 >>
  • 175. 2018/10/16第一章 MATLAB 7 简介1755. 符号微积分 符号极限 (limit) 符号微分和求导 diff函数的使用 jacobian函数的使用 符号积分( int)
  • 176. 2018/10/16第一章 MATLAB 7 简介176(1) 符号极限 (limit) >> syms x a t h; >> limit(sin(x)/x) ans = 1 >> limit((x-2)/(x^2-4),2) ans = 1/4 >> limit((1+2*t/x)^(3*x),x,inf) ans = exp(6*t)
  • 177. 2018/10/16第一章 MATLAB 7 简介177(2) jacobian函数的使用 >> syms x y z >> a=[x^2+x*y;sin(x)*cos(y)] a = [ x^2+x*y] [ sin(x)*cos(y)] >> jacobian(a,[x,y]) ans = [ 2*x+y, x] [ cos(x)*cos(y), -sin(x)*sin(y)] >>
  • 178. 2018/10/16第一章 MATLAB 7 简介1786.符号积分变换 Fourier变换及其逆变换 Fourier变换 (fourier ) Fourier变换的逆变换 (ifourier ) Laplace变换及其逆变换 Laplace变换 (laplace ) Laplace逆变换(ilaplace ) Z变换及其反变换 Z变换(ztrans ) Z的逆变换(iztrans )
  • 179. 2018/10/16第一章 MATLAB 7 简介179(1) Fourier变换的实现 >> syms t v w x >> fourier(1/t) ans = i*pi*(Heaviside(-w)-Heaviside(w)) >> fourier(exp(-x^2),x,t) ans = pi^(1/2)*exp(-1/4*t^2) >> fourier(exp(-t)*sym('Heaviside(t)'),v) ans = 1/(1+i*v)
  • 180. 2018/10/16第一章 MATLAB 7 简介180(2) Z变换的实现>> syms k n w z >> ztrans(2^n) ans = 1/2*z/(1/2*z-1) >> ztrans(sin(k*n),w) ans = w*sin(k)/(w^2-2*w*cos(k)+1) >> ztrans(cos(n*k),k,z) ans = (z-cos(n))*z/(z^2-2*z*cos(n)+1)
  • 181. 2018/10/16第一章 MATLAB 7 简介1817. 符号代数方程的求解 符号线性方程组的求解 符号非线性方程组的求解 一般符号代数方程组的求解
  • 182. 2018/10/16第一章 MATLAB 7 简介182符号方程组的求解举例使用solve函数求解一般的符号代数方程组 >> [x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3 = 0') x = [ 1] [ 3] y = [ 1] [ -3/2] >>
  • 183. 2018/10/16第一章 MATLAB 7 简介1838.图示化符号函数计算器 单变量符号函数计算器 输入框的功能 控制按钮的功能 泰勒级数逼近计算器
  • 184. 2018/10/16第一章 MATLAB 7 简介184(1)单变量符号函数计算器 使用funtool函数来调用图示化单变量符号函数计算器
  • 185. 2018/10/16第一章 MATLAB 7 简介185(2)泰勒级数逼近计算器 使用taylortool函数来调用图示化泰勒级数逼近计算器
  • 186. 2018/10/16第一章 MATLAB 7 简介186第八章 图 形 处 理 教学目标 教学重点 教学过程
  • 187. 2018/10/16第一章 MATLAB 7 简介187教学目标MATLAB 7语言除了有强大的矩阵处理功能之外,它的绘图功能也是相当强大的。 学习完本章之后,读者将学会使用MATLAB 7的图形处理功能,包括基本的绘图命令、图形的简单控制、图形窗口的编辑以及图形的高级控制等。
  • 188. 2018/10/16第一章 MATLAB 7 简介188教学重点基本的绘图命令 各种图形注释方法 三维图形的绘制方法
  • 189. 2018/10/16第一章 MATLAB 7 简介189教学过程基本的绘图命令 各种图形注释方法 三维图形的绘制方法 特殊一些特殊图形的绘制 图形的高级控制技巧
  • 190. 2018/10/16第一章 MATLAB 7 简介1901. 基本的绘图命令 基本的绘图命令 绘图的一般步骤 绘制二维曲线图 极坐标图形的绘制 多个图形的绘制方法 曲线的色彩、线型和数据点型
  • 191. 2018/10/16第一章 MATLAB 7 简介191(1)基本的绘图命令 绘制基本线性图的函数表 函 数 名功 能 描 述plot在x轴和y轴都按线性比例绘制二维图形plot3在x轴、y轴和z轴都按线性比例绘制三维图形loglog在x轴和y轴按对数比例绘制二维图形semilogx在x轴按对数比例,y轴按线性比例绘制二维图形semilogy在y轴按对数比例,x轴按线性比例绘制二维图形plotyy绘制双y轴图形
  • 192. 2018/10/16第一章 MATLAB 7 简介192(2)绘图的一般步骤 基本的绘图步骤 步 骤典 型 代 码1. 准备绘图数据x = 0:0.2:12;y1 = bessel(1,x);2. 选择一个窗口并在窗口中给图形定位figure(1) ,subplot(2,2,1) 3. 调用基本的绘图函数h = plot(x,y1,x,y2,x,y3);4. 选择线型和标记特性set(h,'LineWidth',2,{'LineStyle'},{'--';':';'-.'})5. 设置坐标轴的极限值、标记符号和网格线axis([0 12 -0.5 1])6. 使用坐标轴标签、图例和文本对图形进行注释xlabel('Time')ylabel('Amplitude')7. 输出图形print -depsc -tiff -r200 myplot
  • 193. 2018/10/16第一章 MATLAB 7 简介193(3)绘制二维曲线图二维曲线图在MATLAB 7中的绘制是最为简便的。如果将X轴和Y轴的数据分别保存在两个向量中,同时向量的长度完全相等,那么可以直接调用函数进行二维图形的绘制。在MATLAB 7中,使用plot函数进行二维曲线图的绘制。
  • 194. 2018/10/16第一章 MATLAB 7 简介194绘制二维曲线图>> x= 0:0.01:10; >> y=tan(x); >> plot(x,y) >>
  • 195. 2018/10/16第一章 MATLAB 7 简介195(4)极坐标图形的绘制 MATLAB提供了polar函数来在极坐标下绘制图形 : >> x= 0:0.01:10; >> y1=sin(x); >> y2 = cos(x-2.5); >> polar(y1,y2,'-r+') >>
  • 196. 2018/10/16第一章 MATLAB 7 简介196(5)多个图形的绘制方法 subplot函数 可以实现多个图形的绘制: >> x = 0:.1:20; >> subplot(2,2,1) >> plot(x,sin(x)); >>
  • 197. 2018/10/16第一章 MATLAB 7 简介197多个图形的绘制方法>> x = 0:.1:20; >> subplot(2,2,2) >> plot(x,cos(x)); >>
  • 198. 2018/10/16第一章 MATLAB 7 简介198多个图形的绘制方法>> subplot(2,2,3) >> x = 0:.1:2; >> y1=tan(x); >> plot(x,y1,'--b*'); >>
  • 199. 2018/10/16第一章 MATLAB 7 简介199(6)曲线的色彩、线型和数据点型 曲线的色彩、线型和数据点型参数定义 颜 色 符 号含 义数 据 点 型含 义线 型含 义b蓝色.点-实线g 绿色xX符号:点线r 红色++号-.点划线c 篮绿色h六角星形--虚线m 紫红色*星号(空白)不画线y 黄色s方形  k 黑色d菱形  
  • 200. 2018/10/16第一章 MATLAB 7 简介2002. 图形注释 图题的标注 坐标轴的标签 文本标注和交互式文本标注 图例的添加 坐标网格的添加 使用矩形或是椭圆在图形中圈出重要部分
  • 201. 2018/10/16第一章 MATLAB 7 简介201(1) 图题的标注在MATLAB中,通常可以使用3种方式给图形添加图题: 使用Insert 菜单中的Title命令; 使用属性编辑器(Property Editor); 使用title函数。
  • 202. 2018/10/16第一章 MATLAB 7 简介202图题的标注>> x = 0:.1:2; >>y1=sin(x); >>y2 = sin(x-0.25); >>y3 = sin(x-0.5); >> plot(x,y1,'-.b', x,y2,'--r*', x,y3,'-.gh') >> title('There three lines') >>
  • 203. 2018/10/16第一章 MATLAB 7 简介203(2) 坐标轴的标签 在MATLAB 7中,可以使用如下3种方式给图形的坐标轴添加标签: 使用Insert菜单下的Label选项; 使用属性编辑器(Property Editor); 使用MATLAB 7的添加标签命令;
  • 204. 2018/10/16第一章 MATLAB 7 简介204坐标轴的标签添加举例 使用属性编辑器(Property Editor)添加坐标轴标签 打开Tools菜单,选择Edit Plot命令,激活图形编辑状态。 在图形框内双击空白区域,调出属性编辑器;也可以采取在图形框内右击,从弹出的菜单中选择Properties 项的方式调出属性编辑器;或者是在View菜单中选择Property Editor项。
  • 205. 2018/10/16第一章 MATLAB 7 简介205(3)文本标注和交互式文本标注用户可以在MATLAB 7图形窗口的任意地方添加文本注释,从而更好地解释图形窗口的数据。MATLAB 7提供了text函数和gtext函数来进行文本标注。其中gtext函数的使用形式更为灵活,可以实现交互式文本标注。
  • 206. 2018/10/16第一章 MATLAB 7 简介206文本标注举例>> x=linspace(-3,5,100); >> y=cos(x); >> z=sin(x); >> plot(x,y,x,z) >> title('一条正弦曲线和一条余弦曲线') >> xlabel('x的取值范围') >> ylabel('Y和Z的值') >>
  • 207. 2018/10/16第一章 MATLAB 7 简介207(4)图例的添加为了更好地区分所绘制的多条曲线,可以使用图例加以说明,对它们表示的数据进行更准确的区分。可以使用如下3种方法生成图例: 打开Insert 菜单中并选择Legend命令; 单击工具栏中的legend图标; 使用legend函数。
  • 208. 2018/10/16第一章 MATLAB 7 简介208图例的添加 举例
  • 209. 2018/10/16第一章 MATLAB 7 简介209(5)坐标网格的添加 在图形绘制过程中,为了精确地知道图形上某点的坐标,需要绘制坐标网格来定位,MATLAB 7语言中提供了grid函数来实现这一功能: grid off命令关闭坐标网格; grid on命令打开坐标网格 grid mirror命令使用更细化的网格; grid(AX,…)命令使用AX坐标系代替当前坐标系。
  • 210. 2018/10/16第一章 MATLAB 7 简介210坐标网格的添加举例>> x=linspace(-5,5,100); >> y=x.^4+22*x.^2-6*x+10; >> plot(x,y) >> grid on >>
  • 211. 2018/10/16第一章 MATLAB 7 简介211(6) 使用矩形或是椭圆在图形中圈出重要部分 用户可以使用矩形或是椭圆在图形中圈出特别的区域,从而使得该区域能引起特别的注意。当其中的一个矩形或是椭圆被选中时,用户可以移动并改变它的大小,或是右击它,在弹出的快捷菜单中用户可以选择改变它的属性和外观。
  • 212. 2018/10/16第一章 MATLAB 7 简介212应用举例当右击矩形或是椭圆时,将弹出一个菜单
  • 213. 2018/10/16第一章 MATLAB 7 简介2133. 三维图形的绘制 MATLAB语言提供了三维图形的处理功能。与二维图形相似,绘制三维图形时可以使用MATLAB语言提供的相关函数: 三维线图指令plot3 三维网线图和曲面图 三维网线图 三维曲面图
  • 214. 2018/10/16第一章 MATLAB 7 简介214(1)三维线图指令plot3 >> % 该程序用于绘制三维的螺旋曲线图 >> t = 0:pi/50:20*pi; >> plot3(sin(t),cos(2*t),sin(t)+cos(t))
  • 215. 2018/10/16第一章 MATLAB 7 简介215(2) 三维网线图使用mesh函数来绘制三维网格图形: >> z=peaks(50); >> mesh(z); >>
  • 216. 2018/10/16第一章 MATLAB 7 简介216(3)三维曲面图 可是使用surf函数来绘制三维表面图形 : >> [X,Y]=meshgrid([-4:0.2:4]); >> Z=exp(-0.5*(X.^2-Y.^2)); >> surf(X,Y,Z) >>
  • 217. 2018/10/16第一章 MATLAB 7 简介2174. 特殊图形的绘制 条形图和面积图(Bar and Area Graphs) 饼形图(Pie Charts) 离散型数据图 方向和速度矢量图形 等高线的绘制(Contour Plots)
  • 218. 2018/10/16第一章 MATLAB 7 简介218(1)条形图和面积图条形图和面积图用于绘制向量和矩阵数据,这两种图形可以用来比较不同组数据的在总体数据中所占的比例,其中条形图适于表现离散型数据,而面积图适于表现连续型数据。函 数功 能 描 述bar绘制矩阵Y(m×n)各列的垂直条形图,各条以垂直方向显示barh绘制矩阵Y(m×n)各列的垂直条形图,各条以水平方式显示bar3绘制矩阵Y(m×n)各列的三维垂直条形图,条以垂直方向显示bar3h绘制矩阵Y(m×n)各列的三维垂直条形图,各条以水平方式显示area绘制向量的堆栈面积图
  • 219. 2018/10/16第一章 MATLAB 7 简介219条形图举例集合式条形图的绘制 >> y=[1 2 3 4 5 6 7 8 9 10] >>bar(y)
  • 220. 2018/10/16第一章 MATLAB 7 简介220(2)饼形图在统计学中,人们经常要用到饼形图来表示各个统计量占总量的份额,饼形图可以显示向量或矩阵中的元素占所有元素总和的百分比,MATLAB提供了pie函数和pie3函数,分别用于绘制二维饼形图和三维饼形图。
  • 221. 2018/10/16第一章 MATLAB 7 简介221(3)离散型数据图 MATLAB 7提供了一系列适于表现离散型数据的函数。 其中常用的主要有stem 函数、stem3函数和stairs函数。
  • 222. 2018/10/16第一章 MATLAB 7 简介222离散型数据图举例使用 stem(y)函数来绘制句柄状图形 。 >> y=rand(20,1); >> stem(y) >>
  • 223. 2018/10/16第一章 MATLAB 7 简介223(4)方向和速度矢量图形 MATLAB 7提供了一些函数用于绘制方向矢量和速度矢量图形,这些函数有compass、feather、quiver和quiver3。 函 数功 能 描 述compass显示极坐标图形中的极点发散出来的矢量图feather显示从一条水平线上均匀间隔的点所发散出来的矢量图quiver显示由(u,v)矢量特定的二维矢量图 quiver3显示由(u,v,w)矢量特定的三维矢量图
  • 224. 2018/10/16第一章 MATLAB 7 简介224方向和速度矢量图形举例 用compass函数绘制矢量图形 : >> w=0:0.1:6; >> z=sin(w).*exp(j*w); >> compase(z) >>
  • 225. 2018/10/16第一章 MATLAB 7 简介225(5)等高线的绘制 等高线函数为创建、显示并标注由一个或多个矩阵确定的等值线。函 数 名功 能 描 述clabel使用等值矩阵生成标注,并将标注显示在当前图形contour显示矩阵Z的二维等高线图contour3显示矩阵Z的三维等高线图contourf显示矩阵Z的二维等高线图,并在各等高线之间用实体颜色填充contourc用于计算由其他等高线函数调用的等值矩阵meshc创建一个与二维等高线图匹配的网线图surfc创建一个与二维等高线图匹配的曲面图
  • 226. 2018/10/16第一章 MATLAB 7 简介226等高线的绘制举例使用contour函数绘制等高线图形: >> [x,y,z]=peaks; >> contour(x,y,z) >>
  • 227. 2018/10/16第一章 MATLAB 7 简介2275. 图形的高级控制 视点控制和图形的旋转 颜色的使用 颜色映像理解 颜色映像使用 颜色映像显示 颜色映像的建立和修改 光照控制
  • 228. 2018/10/16第一章 MATLAB 7 简介228(1)视点控制和图形的旋转 为了使图形的效果更逼真,有时需要从不同的角度观看图形,MATLAB 7语言提供了view、viewmtx和rotate3d等3个命令进行操作。用户可以在命令窗口中调用这3个函数。其中,view函数主要是从不同的角度观察图形;viewmtx给出指定视角的正交转换矩阵;而rotate3d函数可以让用户方便地用鼠标来适时旋转视图。
  • 229. 2018/10/16第一章 MATLAB 7 简介229视点控制举例view函数的使用 : >> [X,Y]=meshgrid([-5:0.2:5]); >> Z=exp(0.5*(X.^2-Y.^2)); >> surf(X,Y,Z) >> view(30,60) >>
  • 230. 2018/10/16第一章 MATLAB 7 简介230(2)颜色的使用 颜色映像理解 MATLAB 7有一个叫颜色映像的数据结构来代表颜色值。颜色映像定义为一个有3列和若干行的矩阵。利用0到1之间的数,矩阵的每一行都代表了一种色彩。任一行的数字都指定了一个RGB值,即红、黄、蓝3种颜色的强度,形成一种特定的颜色。
  • 231. 2018/10/16第一章 MATLAB 7 简介231颜色映像理解1Red(红)Green(绿)Blue(蓝)颜 色000黑111白100红010绿001蓝110黄101洋红011青蓝2/301天蓝11/20橘黄0.500深红0.50.50.5灰色
  • 232. 2018/10/16第一章 MATLAB 7 简介232颜色映像理解2函 数功 能 描 述hsv色彩饱和值(以红色开始和结束)hot从黑到红到黄到白cool青蓝和洋红的色度pink粉红的彩色度gray线性灰度bone带一点蓝色的灰度jethsv的一种变形(以蓝色开始和结束)copper线性铜色度prim三棱镜,交替为红色、橘黄色、黄色、绿色和天蓝色flag交替为红色、白色、蓝色和黑色
  • 233. 2018/10/16第一章 MATLAB 7 简介233颜色映像使用 句colormap(M)将矩阵M作为当前图形窗口所用的颜色映像。例如,colormap(cool)装入了一个有64个输入项的cool颜色映像。colormap default装入了默认的颜色映像(hsv)。 函数plot、plot3、contour和contour3不使用颜色映像,它们使用列在plot颜色和线形表中的颜色。而大多数其他绘图函数,比如mesh、surf、fill、pcolor和它们的各种变形函数,使用当前的颜色映像。
  • 234. 2018/10/16第一章 MATLAB 7 简介234颜色映像显示 可以用多种途径来显示一个颜色映像。其中一个方法是观察颜色映像矩阵的元素: >> hot(8) ans = 0.3333 0 0 0.6667 0 0 1.0000 0 0 1.0000 0.3333 0 1.0000 0.6667 0 1.0000 1.0000 0 1.0000 1.0000 0.5000 1.0000 1.0000 1.0000 >>
  • 235. 2018/10/16第一章 MATLAB 7 简介235颜色映像的建立和修改 颜色映像就是矩阵,意味着你可以象其他数组那样对它们进行操作。函数brighten就利用这一点通过调整一个给定的颜色映像来增加或减少暗色的强度。 用户可以通过生成m×3的矩阵mamap来建立自己的颜色映像,并用colormap(mymap)来安装它。颜色映像矩阵的每一个值都必须在0和1之间。如果企图用大于或小于3列的矩阵或者包含着比0小比1大的任意值,函数colormap会提示一个错误然后退出。
  • 236. 2018/10/16第一章 MATLAB 7 简介236(3)光照控制 MATLAB 7语言提供了许多函数在图形中进行对光源的定位并改变光照对象的特征。 函 数 名功 能 描 述camlight设置并移动关于摄像头的光源lightangle在球坐标下设置或定位一个光源light设置光源lighting选择光源模式material设置图形表面对光照的反映模式
  • 237. 2018/10/16第一章 MATLAB 7 简介237光照控制举例本例首先绘制一个膜面图,然后使用位置向量 [0 -2 1] 设置光源的方向。 >> z=peaks(50); >> surf(z) >> light('Position',[0.5 -3 2]) >>
  • 238. 2018/10/16第一章 MATLAB 7 简介238第九章 GUI图形设计 教学目标 教学重点 教学过程
  • 239. 2018/10/16第一章 MATLAB 7 简介239教学目标 本章所描述的图形用户界面的功能,它让用户定制用户与MATLAB 7的交互方式。从而提供一种命令窗口之外的与MATLAB 7的交互方式。 用户将学习句柄图形的使用。并掌握图形用户界面特性(包括菜单、上下文菜单、按钮、滚动条、单选按钮、弹出式菜单和列表框等),并掌握如何编制GUI程序。
  • 240. 2018/10/16第一章 MATLAB 7 简介240教学重点句柄图形对象 图形框架窗口对象 GUI对象的创建 GUI的编程方法 GUI控件的使用
  • 241. 2018/10/16第一章 MATLAB 7 简介241教学过程句柄图形对象的基本知识 图形框架窗口对象的基本内容 图形对象属性的获取和设置 图形对象的操作 GUI的基本知识 GUI对象的创建方法 GUI的编程方法 GUI的M文件 GUI控件的使用
  • 242. 2018/10/16第一章 MATLAB 7 简介2421. 句柄图形对象图形框架窗口对象(Figure) 图形对象属性的获取和设置 图形对象的操作
  • 243. 2018/10/16第一章 MATLAB 7 简介243(1) 图形框架窗口对象(Figure) 绘制图形的图形框架窗口对象 核心(Core)对象 绘图(Plot )对象 注释对象
  • 244. 2018/10/16第一章 MATLAB 7 简介244窗口对象图形框架窗口对象是MATLAB 7显示图形的窗口,包括菜单、工具栏、 交互式对象、弹出式菜单、坐标、坐标轴子对象以及其他的图形对象。 MATLAB 7对一次打开的图形数目没有限制(用户的计算机系统可能会做出限制)。 在MATLAB 7中,图形框架窗口对象有两条特殊的作用。 包含数据图形; 包含图形用户界面操作GUI。
  • 245. 2018/10/16第一章 MATLAB 7 简介245绘制图形的图形框架窗口对象MATLAB 7语言中实现句柄访问的函数 函 数 名功 能 描 述gca获得当前坐标轴对象的句柄gcbf获得当前正在执行调用的图形对象的句柄gcbo获得当前正在执行调用的对象的句柄gcf获得当前图形对象的句柄gco获得当前对象的句柄
  • 246. 2018/10/16第一章 MATLAB 7 简介246核心(Core)对象核心对象包括直线、文本和特殊对象(如光、图像和面图)等基本的绘图命令;而坐标系对象包括线、面图和等高线图等描述数据的对象。
  • 247. 2018/10/16第一章 MATLAB 7 简介247核心(Core)对象 MATLAB 7语言中创建核心对象的函数 函 数 名功 能 描 述axes坐标轴imageMATLAB 7语言中的图像light光源line二维图形中最基本的图形对象patch按指定方式填充的多边形rectangle具有可设置边界和表面颜色的二维图形对象surface图形表面text图形中的文本
  • 248. 2018/10/16第一章 MATLAB 7 简介248核心(Core)对象举例>> [x,y] = meshgrid([-2:.4:2]); >>Z = x.*exp(-x.^2-y.^2); >>fh = figure('Position',[350 275 600 450],'Color','w'); >>ah = axes('Color',[.8 .8 .8],'XTick',[-2 -1 0 1 2],... 'YTick',[-2 -1 0 1 2]); >>sh = surface('XData',x,'YData',y,'ZData',Z,... 'FaceColor',get(ah,'Color')+.1,... 'EdgeColor','k','Marker','o',... 'MarkerFaceColor',[.5 1 .85]); >>view(3)
  • 249. 2018/10/16第一章 MATLAB 7 简介249绘图(Plot )对象 MATLAB 7提供了一系列的高级绘图函数来创建绘图对象,这些绘图对象的属性具有重要的意义,使用它们可以很方便地访问绘图对象所包含的核心对象的重要属性。
  • 250. 2018/10/16第一章 MATLAB 7 简介250绘图(Plot )对象 MATLAB 7语言中的绘图对象及其绘图命令 函 数 名功 能 描 述areaseries用于创建area图barseries用于创建bar图contourgroup用于创建contour图errorbarseries用于创建errorbar图lineseries提供给绘制线型图的plot和plot3等函数使用quivergroup用于创建quiver和quiver3 图形scattergroup用于创建scatter和scatter3 图形stairseries用户创建阶梯图形(stairs))stemseries用于创建stem和stem3 图形surfaceplot提供给surf 和mesh 群函数使用
  • 251. 2018/10/16第一章 MATLAB 7 简介251绘图(Plot )对象举例>> [x,y,z] = peaks; >> [c,h] = contour(x,y,z); >>set(h,'LineWidth',3,'LineStyle',':') >>
  • 252. 2018/10/16第一章 MATLAB 7 简介252注释对象 用户一般习惯于使用图形编辑工具栏或是Insert菜单来创建注释对象,同时,用户也可以使用注释函数来创建注释对象。 注释对象在一个隐藏的坐标轴下创建,该坐标轴延伸到图形整个长度和宽度,这样,用户可以使法向坐标系(以图形的左下点为(0,0),右上点为(1,1))在图形的任意部位定义图例注释。
  • 253. 2018/10/16第一章 MATLAB 7 简介253(2) 图形对象属性的获取和设置get函数 set函数 默认属性
  • 254. 2018/10/16第一章 MATLAB 7 简介254get函数 在MATLAB 7中,使用get函数可以得到对象的属性及其属性值,其通常的调用格式为 : get(handle, ‘ PropertyName’ )。 关于它的详细使用方法,用户可以参见get函数的帮助信息。
  • 255. 2018/10/16第一章 MATLAB 7 简介255set函数在MATLAB 7中,使用set函数可以设置对象的属性值,其通常的调用格式如下。 set(H,'PropertyName',PropertyValue)命令设置PropertyName的属性为PropertyValue。 set(H,a)命令中,a为结构型变量,字段名为图形对象的属性名,字段值为映像的属性值。 set(H,'PropertyName1',PropertyValue1,'PropertyName2',PropertyValue2,...)命令同时设置多个属性的值。
  • 256. 2018/10/16第一章 MATLAB 7 简介256默认属性MATLAB 7在建立对象时把默认属性赋给各对象。如果想不采用这些默认值,就必须使用句柄图形工具对它们进行设置。当每次都要改变同一属性时,MATLAB 7允许设置用户自己的默认属性。MATLAB 7让用户改变对象层次结构中任意一点上的单个对象或对象类型的默认属性。
  • 257. 2018/10/16第一章 MATLAB 7 简介257默认属性举例>> whitebg('w') %create a figure with a white color scheme set(0,'DefaultAxesColorOrder',[0 0 0],... 'DefaultAxesLineStyleOrder','-|--|:|-.') >> Z = peaks; plot(1:49,Z(4:7,:)) >>
  • 258. 2018/10/16第一章 MATLAB 7 简介258(3) 图形对象的操作 查找对象 堆积次序
  • 259. 2018/10/16第一章 MATLAB 7 简介259查找对象句柄图形提供了对图形对象的访问途径,并且允许用函数get和set定制图形。 如果用户忘记保存句柄或图形对象的句柄,或者当变量被覆盖时,如果要改变对象的属性,就必须进行对象句柄的查找。MATLAB 7提供了查找对象的函数gcf、gca、gco和findobj等 。
  • 260. 2018/10/16第一章 MATLAB 7 简介260堆积次序 堆积次序决定哪一对象叠加在其他对象上。开始时,堆积次序在对象被创建时就被决定,最后创建的对象在堆栈的顶部。 当前的堆积次序是由一个给定的对象Children句柄出现的次序给出的。
  • 261. 2018/10/16第一章 MATLAB 7 简介2612. GUI的基本知识 启动GUI 布局(Layout)编辑器 GUIDE模板介绍 运行GUI
  • 262. 2018/10/16第一章 MATLAB 7 简介262(1)启动GUI 用户欲启动GUI操作,可以在命令窗口中输入guide命令。
  • 263. 2018/10/16第一章 MATLAB 7 简介263(2)布局(Layout)编辑器 当用户在GUIDE 中打开一个GUI时,该GUI将显示在 Layout编辑器中,Layout编辑器是所有GUIDE工具的控制面板。
  • 264. 2018/10/16第一章 MATLAB 7 简介264布局(Layout)编辑器 用户可以使用鼠标拖动模板左边的控件(按钮、坐标轴、单选按钮等)到中间的布局区域 。
  • 265. 2018/10/16第一章 MATLAB 7 简介265(3)GUIDE模板介绍GUIDE Quick Start对话框提供了几种常用的GUI模板 。
  • 266. 2018/10/16第一章 MATLAB 7 简介266(4)运行GUI 单击工具栏最右边的绿色按钮,即运行当前的GUI窗口。
  • 267. 2018/10/16第一章 MATLAB 7 简介2673. 创建GUI对象 GUI窗口的布局 改变GUI窗口的大小 控件的添加和对齐 GUI控件的属性控制 属性查看器的显示 一些常用的属性 菜单的添加 主菜单的创建 弹出式菜单的的创建
  • 268. 2018/10/16第一章 MATLAB 7 简介268(1)GUI窗口的布局改变GUI窗口的大小 。 在布局编辑器中可以很方便地改变GUI 中网格区域的大小,只需单击网格区域的右下角,当鼠标变为箭头形式时,拖动鼠标,即可适时改变窗口的大小 。
  • 269. 2018/10/16第一章 MATLAB 7 简介269(2)GUI控件的属性控制 属性查看器的显示 用户可以使用如下3种方式打开: 在布局窗口中双击某个控件。 在View 菜单中选择Property Inspector选项。 右击某个控件并从弹出的快捷菜单中选择Inspect Properties选项。
  • 270. 2018/10/16第一章 MATLAB 7 简介270(3)主菜单的创建1菜单属性的设置 单击右图中的菜单标题Untitled 1,将在菜单编辑器的右边显示该菜单的属性提供给用户进行编辑,如Label、Tag、Accelerator、Separator和Checked等属性。
  • 271. 2018/10/16第一章 MATLAB 7 简介271(3)主菜单的创建2给菜单增添菜单项 用户可以使用工具栏上的New Menu Item图标给当前菜单增添菜单项 。
  • 272. 2018/10/16第一章 MATLAB 7 简介2724. GUI 编 程 GUI的M文件 与句柄结构共享数据 M文件中的函数和响应 控件的使用 使用句柄结构进行GUI数据操作
  • 273. 2018/10/16第一章 MATLAB 7 简介273(1)与句柄结构共享数据 当运行GUI时,M文件创建一个包含所有GUI对象(如控件、菜单和坐标轴)的句柄结构,句柄结构作为一个每个响应的输入来处理。用户使用句柄结构可以实现如下操作。 在各响应之间实现数据共享; 访问GUI数据。
  • 274. 2018/10/16第一章 MATLAB 7 简介274在各响应之间实现数据共享 用户欲取得变量X的数据,可以先将句柄结构的一个域设为X,然后在使用guidata函数保存该句柄结构,如下所示: handles.current_data = X; guidata(hObject,handles) 用户可以在其他任何响应中重新得到该变量的值,使用的操作如下。 X = handles.current_data;
  • 275. 2018/10/16第一章 MATLAB 7 简介275访问GUI数据 用户可以利用句柄结构获取GUI控件的任意数据 用户要想使用GUI中的另一个控件(比如一个按钮)来在当前所选的菜单项实现某个操作,那么用户可以在该按钮的响应插入如下命令。 all_choices = get(handles.my_menu, 'String') current_choice = all_choices{get(handles.my_menu, 'Value')}
  • 276. 2018/10/16第一章 MATLAB 7 简介276(2) M文件中的函数和响应 用户可以给GUI的M文件的如下部分增加程序代码: 打开函数(Opening function),该函数在GUI可见之前实施操作。 输出函数(Output function),在必要的时候向命令行输出数据。 响应(Callbacks),在用户激活GUI中的相应控件时实施操作。
  • 277. 2018/10/16第一章 MATLAB 7 简介277打开函数 打开函数包含有在GUI可见之前进行操作的代码,用户可以在打开函数中访问GUI的所有控件,因为所有DUI中的对象都在调用打开函数之前就已经创建。 如果用户需要在访问GUI之前实现某些操作(如创建数据或图形),那么可以通过在打开函数中增添代码来加以实现。 对于一个文件名为my_gui的GUI来说,它的打开函数的定义语句如下。 function my_gui_OpeningFcn(hObject, eventdata, handles, varargin)
  • 278. 2018/10/16第一章 MATLAB 7 简介278输出函数 输出函数将输出结果返回给命令行。这一点在用户需要将某个变量传递给另一个GUI时尤其实用。 UIDE在输出函数中生成如下代码。 % --- Outputs from this function are returned to the command line. function varargout = my_gui_OutputFcn(hObject, eventdata, handles) % Get default command line output from handles structure varargout{1} = handles.output;
  • 279. 2018/10/16第一章 MATLAB 7 简介279 (3)控件的使用 “开关”按钮(Toggle Button)的响应 按钮(Radio Buttons)的响应 “复选框”控件(Check Boxes)的响应 “文本框”控件(Edit Text)的响应 “滚动条”控件(Sliders)的响应 “列表框”控件(List Boxes)的响应 “弹出菜单”控件(Pop-Up Menus)的响应 控件板(Panels)的响应
  • 280. 2018/10/16第一章 MATLAB 7 简介280控件的使用举例1按钮(Radio Buttons)的响应 在图形界面中添加该控件之后,该控件将在指定位置添加按钮,按钮的标识字符由属性String控制,而返回值由Value值控制。 在GUI的M文件中使用如下形式的代码来编制Radio按钮的响应程序: if (get(hObject,'Value') == get(hObject,'Max')) % then rsdio button is selected-take approriate action else % radio button is not selected-take approriate action end
  • 281. 2018/10/16第一章 MATLAB 7 简介281控件的使用举例2“复选框”控件(Check Boxes)的响应 在图形界面中添加该控件之后,该控件将提供复选功能,将显示文本字符串及选择框 。 在GUI的M文件中使用如下形式的代码来编制“复选框”控件的响应程序 : function checkbox1_Callback(hObject, eventdata, handles) if (get(hObject,'Value') == get(hObject,'Max')) % then checkbox is checked-take approriate action else % checkbox is not checked-take approriate action end
  • 282. 2018/10/16第一章 MATLAB 7 简介282控件的使用举例3“文本框”控件(Edit Text)的响应 在图形界面中添加该控件之后,该控件的属性相当于其他语言设计中的文本框属性,允许用户动态地编辑或是输入文本字符串。 如果需要获取用户在文本框中输入的字符串,可以在响应程序中输入如下代码: function edittext1_Callback(hObject, eventdata, handles) user_string = get(hObject,'string'); % proceed with callback..
  • 283. 2018/10/16第一章 MATLAB 7 简介283(4)使用句柄结构进行GUI数据操作 GUIDE提供了一种机制来存储和检索共享的数据,这些操作都通过包含有GUI控件句柄的相同结构来实现,这种机制就称为句柄结构。句柄结构包含有GUI的所有控件的句柄,它在M文件中被传递给每一个响应。因此,该响应对保存任意共享数据十分有用。
  • 284. 2018/10/16第一章 MATLAB 7 简介284第十章 MATLAB 7程序设计 教学目标 教学重点 教学过程
  • 285. 2018/10/16第一章 MATLAB 7 简介285教学目标用交互式的方式来编写程序适用于命令行比较简单,输入比较方便,同时处理的问题步骤较少的情况。 当需要处理重复、复杂且容易出错的问题时,可以进行控制流的程序设计,这就是M文件的编程工作方式。
  • 286. 2018/10/16第一章 MATLAB 7 简介286教学重点MATLAB 7的控制流语言 变量和函数的种类 了解程序的调试和优化
  • 287. 2018/10/16第一章 MATLAB 7 简介287教学过程M文本编辑器的基本知识 MATLAB 7的控制流语言 变量和函数的种类 程序设计的辅助函数 程序的调试和优化
  • 288. 2018/10/16第一章 MATLAB 7 简介2881. M文本编辑器的基本知识 M文本编辑器 M文件的基本属性 M文件的组成部分 脚本式M文件 函数式M文件
  • 289. 2018/10/16第一章 MATLAB 7 简介289(1)M文本编辑器M文件的语法类似于一般高级语言,是一种程序化的编程语言,但是,与传统的高级语言相比,M文件又有自己的特点。它只是一个简单的ASCⅡ型码文本文件,因此,它的语法比一般的高级语言要简单,程序也容易调试,并且有很好的交互性。
  • 290. 2018/10/16第一章 MATLAB 7 简介290M文件的基本属性M文件有两种,一种为脚本式(Script),一种为函数式(Function) 。 函数M文件必须满足一些标准,另外,它们还应该满足一些MATLAB 7的属性。主要有以下几点: 函数式M文件名和出现在文件的第一行的函数名必须相同。实际上,MATLAB 7忽略了第一行的函数名,并且根据存储在硬盘上的文件名来执行函数。 ……
  • 291. 2018/10/16第一章 MATLAB 7 简介291M文件的组成部分函数式M文件的组成部分。 调出Medit窗口,在里边输入如下内容: function f = fact(n) %函数的定义行 % Compute a factorial value. %H1行 % FACT(N) returns the factorial of N, %帮助文本 % usually denoted by N! % Put simply, FACT(N) is PROD(1:N). %注释 f = prod(1:n); % 函数体
  • 292. 2018/10/16第一章 MATLAB 7 简介292M文件的组成部分及其功能 M文件的组成部分及其功能 组 成 部 分描 述函数定义行(仅限于函数式M文件)定义函数名,以及输入和输出变量的数目和顺序H1 行H1行对程序进行概括性的描述,使用help和lookfor命令都可以调出此行帮助文本这是比H1 行更详细的帮助信息,使用help命令时与H1行一起显示函数体函数体是M文件的主要部分,程序的计算和设计都在此实现注释解释程序行的意义
  • 293. 2018/10/16第一章 MATLAB 7 简介293(2)脚本式M文件 用户可以将需要重复输入的所有命令按顺序放到一个扩展名为m的文本文件下,每次运行时只要输入该M文件的文件名即可。 用户自己创建的M文件的文件名要避免与MATLAB 7的内置函数和工具箱中的函数重名,以免发生内置函数被替换的情况。
  • 294. 2018/10/16第一章 MATLAB 7 简介294脚本式M文件举例本脚本式M文件绘制一个正弦曲线: %此文件用于绘制【-2×pi,2×pi】区间的正弦曲线图 x=-2*pi:0.05:2*pi; y=sin(x); plot(x,y,'c+') legend('正弦曲线图')
  • 295. 2018/10/16第一章 MATLAB 7 简介295(3)函数式M文件函数式M文件一般都要自带参数,并且有返回结果 。 函数式M文件的第一行都是以function开始,说明此文件是一个函数。函数式M文件中的变量都不是全局变量,仅在函数运行期间有效,函数运行完毕之后,它所定义的变量将从工作区间中清除。
  • 296. 2018/10/16第一章 MATLAB 7 简介296函数式M文件举例例11-4 判断某一年是否为闰年。 解:调出Medit窗口,在里边输入如下内容。 %该函数用于判断某一年是否为闰年 %使用格式为isleapea(y),其中y是用户所要计算的年份 function isleapyear(year) sign=0; if rem(year,4)==0 sign=sign+1; endif rem(year,100)==0 sign=sign-1; end if rem(year,400)==0 sign=sign+1; end if sign==1 fprintf('%4d year is a leap year.\n',year) else fprintf('%4d year is not a leap year.\n',year) end
  • 297. 2018/10/16第一章 MATLAB 7 简介2972. 控制流最简单的程序控制就是顺序结构,用户依次输入命令语句即可。 MATLAB 7语言还提供了4种高级的控制结构。它们是:if-else-end结构、switch-case-otherwise-end结构、for循环和while循环。
  • 298. 2018/10/16第一章 MATLAB 7 简介298(1)顺序结构 顺序结构是最简单的程序结构,用户在编写好程序之后,系统将按照程序的物理位置顺次执行。 a=1; b=2; c=3; s1=a+b s2=s1+c s3=s2/s2
  • 299. 2018/10/16第一章 MATLAB 7 简介299(2)if……end语句只有一种选择时的情况 if 表达式 执行语句 end
  • 300. 2018/10/16第一章 MATLAB 7 简介300if……end语句有两种选择时的情况 if 表达式 执行语句1 else 执行语句2 end
  • 301. 2018/10/16第一章 MATLAB 7 简介301if……end语句 有3种或3种以上选择时的情况 if 表达式1 表达式1为真时的执行语句1 elseif表达式2 表达式2为真时的执行语句2 elseif表达式3 表达式3为真时的执行语句3 elseif…… …… else 所有的表达式都为假时的执行语句 end
  • 302. 2018/10/16第一章 MATLAB 7 简介302(3) switch……case……end语句 switch开关语句 case条件语句, 执行语句,……,执行语句 case {条件语句1,条件语句2, 条件语句3,……} 执行语句,……,执行语句 …… otherwise, 执行语句,……,执行语句 end
  • 303. 2018/10/16第一章 MATLAB 7 简介303 (4) try……catch……end try-catch模块给用户提供了一种错误捕获机制。换句话说,利用try-catch模块,MATLAB 7编译系统发现的错误将被其捕获,用户可以控制MATLAB 7怎样对发生的错误进行处理。 try 执行语句1 catch 执行语句 2 end
  • 304. 2018/10/16第一章 MATLAB 7 简介304 (5) for循环语句 For语句是一种循环语句,可以让用户很方地实现循环操作,从而可以从容地应付大规模的循环语句。 for i =表达式, 执行语句,……,执行语句 end
  • 305. 2018/10/16第一章 MATLAB 7 简介305(6)while循环语句 与for循环不同,while循环的判断控制可以是逻辑判断语句,因此,它的循环次数可以是一个不定数。这样就赋予了它比for循环更广泛的用途。 while表达式 执行语句 end
  • 306. 2018/10/16第一章 MATLAB 7 简介306(7) 人机交互命令终止命令break和return 继续命令continue 等待用户反应命令pause echo命令 用户输入提示命令input 请求键盘输入命令keyboard
  • 307. 2018/10/16第一章 MATLAB 7 简介3073. 变量和函数种类 与其他语言一样,MATLAB 7的变量有输入变量、输出变量和函数内使用的变量之分,而函数也有主函数、局部函数和子函数之分,本节将介绍这些不同种类变量和函数的特点。
  • 308. 2018/10/16第一章 MATLAB 7 简介308(1). 函数变量及其作用域在MATLAB 7语言中,变量可以分为输入变量、输出变量和函数内使用的变量。 输入变量相当于函数的入口数据,也是一个函数操作的主要对象,从某种意义上来说,函数的功能在于对输入变量进行一定的操作从而实现一定的功能。函数的输入变量为局部变量,函数对输入变量的一切操作和修改如果不依靠输出变量的话,将不会影响工作区间中该变量的值。
  • 309. 2018/10/16第一章 MATLAB 7 简介309函数变量及其作用域变量的输入和输出规则 局部变量 全局变量 永久变量
  • 310. 2018/10/16第一章 MATLAB 7 简介310变量的输入和输出规则 MATLAB 7可以有任意数量的输入和输出变量。这些参数的特性和规则如下所示: (1) 函数式M文件可以没有输入和输出变量。 (2) 函数可以用比M文件中的函数定义行所规定的输入输出变量更少的变量进行调用。但是不能用比规定的输入输出变量更多的变量进行调用。 (3) 在一次调用中所用到的输入和输出变量的个数可以通过分别调用函数nargin和nargout来确定。因为nargin和nargout是函数而不是变量,所以用户不能用诸如nargin=nargin+pi之类的语句对它们进行重新赋值。 ……
  • 311. 2018/10/16第一章 MATLAB 7 简介311局部变量 局部变量是在函数内部使用的变量,其影响范围只能在本函数内,每个函数在运行时,都占有独立的函数工作空间,此工作空间和MATLAB的工作空间时相互独立的,局部变量仅存在于函数的工作空间内。当函数执行完毕之后,该变量即自行消失。
  • 312. 2018/10/16第一章 MATLAB 7 简介312全局变量 在MATLAB 7语言中,函数内部定义的变量都是局部变量,它们不被加载到工作区间中。有时,用户需要使用全局变量,这时要使用global函数来进行定义,而且在任何使用该全局变量的函数中都应加以定义,即使是在命令窗口也不例外。
  • 313. 2018/10/16第一章 MATLAB 7 简介313永久变量 除了通过全局变量共享数据外,函数式M文件还可以通过声明一个变量persistent来对函数中重复使用和递归调用的变量的访问进行限制,使用格式形如persistent (X Y Z)。永久变量与全局变量类似,但是它的范围被限制在声明这些变量的函数内部,不允许在其他的函数中对它们进行改变。只要M文件还在MATLAB 7的内存中,永久变量就存在。
  • 314. 2018/10/16第一章 MATLAB 7 简介314(2)函数的分类 主函数 匿名函数 嵌套式函数 子函数 局部函数
  • 315. 2018/10/16第一章 MATLAB 7 简介315主函数 M文件中的第一个函数就叫做主函数,前边章节中所引用的函数事实上都是主函数,主函数之后可以是任意数量的子函数, 它们可以作为主程序的子程序。一般来说,在命令窗口或是其他的M文件只能调用主函数,调用的时候就是直接调用其函数名。 比如,函数average的M文件average.m如下: function y = average(x) % AVERAGE Mean of vector elements. y = sum(x)/length(x); % Actual computation
  • 316. 2018/10/16第一章 MATLAB 7 简介316匿名函数 匿名函数提供了一种创建简单程序的方法,使用它用户可以不必每次都编写M文件。用户可以在MATLAB 7的命令窗口或是其他任意M文件和脚本文件中使用匿名函数。 匿名函数的格式如下所示。 fhandle = @(arglist) expr
  • 317. 2018/10/16第一章 MATLAB 7 简介317嵌套式函数 在MATLAB 7中,可以在一个函数的内部定义一个或多个其他的函数,这些在内部定义的函数被称作嵌套式函数,应当注意的是,在嵌套式函数的内部也可以定义嵌套式函数。 定义嵌套式函数时,只需在另一个M文件的内部定义该函数即可,同其他M文件一样, 嵌套式函数包含有M文件的所有基本部分。
  • 318. 2018/10/16第一章 MATLAB 7 简介318子函数 与其他的高级语言一样,在MATLAB 7语言中也可以很方便地定义子函数,用来扩充函数的功能。在函数文件中题头定义的函数为主函数,而在函数体内定义的其他函数都被视为子函数。子函数只能为主函数或同一主函数下的其他子函数所使用。
  • 319. 2018/10/16第一章 MATLAB 7 简介319局部函数 MATLAB 7语言中把放置在目录private下的函数称为局部函数,这些函数只有private目录的父目录中的函数才可以调用,其他目录下的函数不能调用。 局部函数与子函数所不同的是,局部函数可以被其父目录下的所有函数所调用,而子函数则只能被其所在的M文件的主函数所调用。所以,局部函数在可用的范围上大于子函数;在函数编辑的结构上,局部函数与一般的函数文件的编辑相同,而子函数只能在主函数文件中编辑。
  • 320. 2018/10/16第一章 MATLAB 7 简介320(3)函数句柄 函数句柄提供了一种间接访问函数的手段,用户可以很方便地调用其他函数;提供函数调用过程中的可靠性;减少程序设计中的冗余; 同时可以在使用函数的过程中保存函数相关的信息,尤其是关于函数执行的信息。
  • 321. 2018/10/16第一章 MATLAB 7 简介321函数句柄函数句柄的创建 函数句柄的调用 函数句柄的操作
  • 322. 2018/10/16第一章 MATLAB 7 简介322函数句柄的创建函数句柄的创建比较简单,使用格式形如: fhandle=@functionname 其中fhandle为所创建的函数句柄,functionname为所创建的函数 。
  • 323. 2018/10/16第一章 MATLAB 7 简介323函数句柄的创建>> trigFun = {@sin, @cos, @tan}; >> plot(trigFun{2}(-pi:0.01:pi)) >>
  • 324. 2018/10/16第一章 MATLAB 7 简介324函数句柄的调用function x = plotFHandle(fhandle, data) plot(data, fhandle(data)) 在命令窗口中调用程序如下。 plotFHandle(@sin, -pi:0.01:pi)
  • 325. 2018/10/16第一章 MATLAB 7 简介325函数句柄的操作 函 数 名功 能 描 述functions返回函数句柄的相关信息func2str根据函数句柄创建一个函数名的字符串str2func由一个函数名的字符串创建一个函数句柄save从当前工作区间向M文件保存函数句柄load从一个M文件中向当前工作区间调用函数句柄isa判断一个变量是否包含由一个函数句柄isequal判断2个函数句柄是否为某一相同函数的句柄
  • 326. 2018/10/16第一章 MATLAB 7 简介3264. 程序设计的辅助函数 执行函数 容错函数 时间运算函数
  • 327. 2018/10/16第一章 MATLAB 7 简介327(1)执行函数 执行函数及其功能 函 数 名功 能 描 述assignin在MATLAB 7工作区间中分配变量builtin外部加载调用内置函数eval字符串调用函数evalc执行MATLAB 7的表达式evalin计算工作区间中的表达式feval字符串调用M文件run运行脚本文件
  • 328. 2018/10/16第一章 MATLAB 7 简介328(2)容错函数 程序设计的好坏在很大程度上取决于其容错能力的大小。MATLAB 7语言提供了相应的报错及警告函数error、warning、lasterr、lastwarn以及errortrap on/off等,可以很方便地实现这方面的功能。
  • 329. 2018/10/16第一章 MATLAB 7 简介329(3)时间运算函数 常用的时间控制函数及其功能 函 数 名功 能 描 述clock以向量的形式显示当前的时间和日期date以字符型显示当前的日期now以数值型显示当前的时间和日期calendar显示当月的日历表weekday显示当前日期对应的星期表达eomday给出指定年月的当月最后一天datetick指定坐标轴的日期表达形式datevec转换为向量形式显示日期
  • 330. 2018/10/16第一章 MATLAB 7 简介3305. 程序的调试和优化 程序的调试 程序的错误种类 错误的识别和程序调试 程序的优化 程序优劣的分析 程序优化的技巧 有效地使用内存
  • 331. 2018/10/16第一章 MATLAB 7 简介331(1)程序的错误种类 在MATLAB 7的表达式中可能存在两种类型的错误,即语法错误和运行错误 : 语法错误 语法错误发生在M文件程序代码的生成过程中,一般是由函数参数输入类型有误或是矩阵运算阶数不符等引起。 运行错误 运行错误一般指在程序运行过程中,出现溢出或是死循环等异常现象。
  • 332. 2018/10/16第一章 MATLAB 7 简介332(2)错误的识别和程序调试对于简单的问题,使用下面的一种或几种方法可以方便地求解: 将函数中输出关键值的行的分号(;)去掉,这样,这些运算的中间结果将在命令窗口中予以显示,用户可以据此来检查中间结果的正确性。 在函数中添加一些语句,用来显示用户认为很重要的变量的值。 使用keyboard命令中断程序,该命令实现函数工作区间和命令窗口工作区间的交互,从而获得用户所需要的信息,使用该命令后,程序将处于调试状态,此时命令窗口的提示符由“>>”变为“K>>”,用户可以进行相应的操作。 在函数头前加“%”,这样就将函数式M文件变为脚本式M文件,而脚本式M文件运行时,其工作区间就是MATLAB 7的工作区间,这样在出现错误的时候就可以查询这个工作区间。
  • 333. 2018/10/16第一章 MATLAB 7 简介333错误的识别和程序调试错误识别函数及其功能 函 数 名 功 能 描 述echo在函数运行时显示代码disp显示特定的值或信息Sprintf&fprintf显示不同格式和类型的数据whos列出工作区间的所有变量size显示矩阵的维数keyboard中断程序运行,允许用户从键盘进行交互操作return回复keyboard命令后函数的运行warning显示特定的警告信息error显示特定的错误信息
  • 334. 2018/10/16第一章 MATLAB 7 简介334错误的识别和程序调试程序断点的设置 函 数描 述dbstop用于在M文件中设置断点dbstatus显示断点信息dbtype显示M文件文本dbstep该函数用于从断点处继续执行M文件dbstack显示M文件执行时调用的堆栈dbup/dbdowm实现工作区间的切换dbquit结束调试状态
  • 335. 2018/10/16第一章 MATLAB 7 简介335(3)程序优劣的分析在MATLAB 7语言中,使用profile函数以及计时函数tic和toc来分析程序中各个部分的耗时情况,从而帮助用户找出程序中需要改进的地方。其中profile在计算相对耗时以及查找文件执行过程中瓶颈问题时更为有效,而tic和toc函数在计算绝对耗时时更为有效。