MATLAB实用教程.ppt_第1页
MATLAB实用教程.ppt_第2页
MATLAB实用教程.ppt_第3页
MATLAB实用教程.ppt_第4页
MATLAB实用教程.ppt_第5页
已阅读5页,还剩286页未读 继续免费阅读

下载本文档

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

文档简介

1、MATLAB实用教程电子教案 1.0,下载更新:,1,本书的主要内容和结构,2,第1章 MATLAB简介,MATLAB的主要特点 MATLAB的桌面环境 MATLAB的帮助系统,3,MATLAB的主要特点,简单易学 代码短小高效 计算功能强大 绘图功能强大 可扩展性能,4,MATLAB的桌面环境,启动按钮 命令窗口 命令历史窗口 工作空间窗口 当前目录浏览器,5,主界面,当前目录浏览工具,命令窗口,启动按钮,命令历史窗口,工作空间窗口,6,MATLAB的帮助系统,帮助浏览工具 help函数和doc函数,7,第2章 数据类型,常数和变量 数组和矩阵 字符串 多维数组 结构 单元数组 函数句柄,8

2、,常数,下表列出了MATLAB提供的一些内部函数。,9,变量,变量名 MATLAB变量名的第1个字符必须是字母,后面可以跟字母、数字和下划线的任何组合。 注意:MATLAB中变量名有大小写区分,所以A和a是不同的变量。 创建变量 在MATLAB中创建变量很简单,不必声明变量的数据类型。例如在命令窗口键入下面的命令行就可以创建一个A变量。 A=9 A = 9,10,变量的数据类型,数 组,逻辑型,字符型,数值型,单元数组,结构数组,函数句柄,Java类,定制类,int8, uint8 int16, uint16 int32, uint32,Single,Double,11,数组和矩阵,MATLA

3、B中,所有数据都用数组或矩阵形式进行保存。 数组 矩阵,12,数组,构造数组的方法: 直接构造法 增量法 linspace函数法,13,直接构造数组,在MATLAB中构造数组,只需要用空格或逗号间隔数组元素,然后用方括号括起来就行了。如 x=0 2 3 6 7 8 或 x=0,2,3,6,7,8 就构造了一个有6个元素的数组x。,14,用增量法构造数组,利用MATLAB提供的冒号运算符(first:step:last)可以生成数组。数组中的元素按顺序从first一直到last,增量为step。(2:3:14) 如果不指定增量step,则按升序生成数组,后面的数比它前面第一个数大1。(2:13)

4、 如果要求生成降序排列的数组,指定一个负的增量。 增量可以是整数,也可以是小数。,15,用linspace函数构造数组,用linspace函数构造数组,需要指定首尾值和元素总个数。基本形式是: x=linspace(first,last,num) 其中,first,last和num分别为x数组的首尾元素和元素个数。如 x=linspace(0,10,5) x = 0 2.5000 5.0000 7.5000 10.0000,16,矩阵,构造矩阵的方法: 简单的创建方法 构造特殊矩阵 聚合矩阵 组合不同类型的数据,17,用简单方法构造矩阵,MATLAB中创建矩阵最简单的方法是使用符号。在方括号内

5、输入多个元素可以创建矩阵的一个行。用逗号或空格把每个元素间隔开。如果想开始一个新行,用分号终止当前行: A = row1; row2; .; rown 下面创建一个3行5列的数值矩阵。 A = 12 62 93 -8 22; 16 2 87 43 91; -4 17 -72 95 6 A = 12 62 93 -8 22 16 2 87 43 91 -4 17 -72 95 6,18,构造特殊矩阵,MATLAB提供了多个创建不同矩阵的函数,如下表所示。,19,聚合矩阵,矩阵聚合是通过连接一个或多个矩阵来形成新的矩阵。符号 不仅是矩阵构造符,它还是MATLAB聚合运算符。表达式C=A B在水平方

6、向上聚合矩阵A和B,表达式C=A;B在垂向上聚合它们。 本例通过在垂向上聚合矩阵A和B来构造新矩阵C: A = ones(2, 5) * 6; % 25的矩阵,元素为6 B = rand(3, 5); % 35的矩阵,元素为随机数 C = A; B % 垂向聚合A和B 注意:在每一条程序后面,有分号“;”,则该语句求出的内容不显 示在屏幕上;若没有分号,则所求内容会显示出来,20,组合不同类型的数据,构造矩阵时,如果矩阵的数据类型不同,则MATLAB会自动对某些元素进行类型转换,然后生成的矩阵具有相同的类型。 用一个高精度的矩阵和一个低精度的矩阵构造新矩阵时,新矩阵是低精度型的。例如,聚合do

7、uble型和single型的矩阵时,总是生成single型的矩阵。MATLAB会先将double型元素转换为single型。,21,聚合矩阵的特殊函数,下表列出了聚合矩阵的一些特殊函数。,22,获取矩阵的元素,使用编号索引 使用线性索引 使用冒号 使用end关键字,23,使用编号索引获取矩阵的元素,利用编号和索引,可以获取MATLAB矩阵的元素。 要引用矩阵中的特殊元素,用下面的语法指定它的行号和列号,其中A是矩阵变量。按先行后列的顺序指定。 A(row, column),24,使用线性索引获取矩阵的元素,MATLAB保存矩阵中的数据时是作为一个元素列保存。这个元素列又是由矩阵中的所有列组成的

8、,后一列元素按先后顺序添加到前一列元素的最后。所以,矩阵A A = 2 6 9; 4 2 8; 3 0 1 A = 2 6 9 4 2 8 3 5 1 在内存中是按下面的序列保存的: 2, 4, 3, 6, 2, 5, 9, 8, 1 矩阵A第3行第2列的元素可以看作实际保存序列中的第6个元素。要获取这个元素,可以使用标准语法A(3,2)或使用A(6)。,25,使用冒号获取矩阵的元素,利用冒号本身可以引用矩阵某行或列的所有元素。使用下面的语法,可以计算44的魔方矩阵A中所有元素的和。 sum(A(:, 2) ans = 34 将冒号进行索引,可以引用整个矩阵中的所有元素。本例显示矩阵A中的所有

9、元素,按列序返回它们: A(:),26,使用end关键字获取矩阵的元素,利用end关键字可以指定矩阵某维的最后一个元素。它适用于不知道矩阵有多少行或多少列的情况。例如,可以用下面的语句进行值的替换: B(1:3:end) = -10,27,字符串,字符串的创建 类型转换 字符串的比较 字符串的聚合 字符串的搜索和替换,28,创建字符串,通过把字符放到单引号中来指定字符数据。如,下面创建一个15的字符串country。 country = China; 创建一个二维字符串时,确定每行具有相同的长度,例如,下面两个字符串都有5个字符,用它们组合起来的二维字符串是合法的。 name = Li Yi

10、; Hu Xu name = Li Yi Hu Xu 根据不同长度的字符串创建字符串时,将短的那些字符串后面用空格补齐,使所有字符串的长度相同。,29,类型转换,用char函数把单元数组转换为标准字符串数组。 str2double函数把一个字符串单元数组转换为字符串表示的双精度值。 int2str函数将整型数据转换为字符串型数据。 num2str函数对输出字符串的格式提供了更多控制,该函数的第2个变量是可选的,它设置输出字符串的位数,或指定一个实际的格式。 mat2str函数将数组转换为字符串。 mat2str函数将返回一个包含文本的字符串,该文本在命令行中输入,用于创建矩阵。,30,字符串的

11、比较,用strcmp函数比较字符串,字符串不相等时,返回false。 可以使用MATLAB的关系运算符,如,可以用()确定两个字符串中的相同字符。所有关系运算符(, =, , =, =, !=)比较对应字符的值。,31,字符串的聚合,字符串通常可以由更小的元素聚合而成。两个通用的聚合方法是使用MATLAB聚合运算符()或sprintf函数。 用strcat函数也可以把两个或更多字符串组合在一起。,32,字符串的搜索和替换,strrep函数进行标准的搜索和替代操作。 findstr函数把子字符串的起始位置返回到一个更长的字符串中。 strtok函数在输入字符串中第一次发现间隔符时返回间隔符前面的

12、字符,可用该函数把句子分离成单词。 strmatch函数在字符串或字符串单元数组的整个行中进行查找,看有没有以给定字符序列打头的字符串,它返回以该字符串打头的行的行号。,33,多维数组,用索引生成多维数组 用特殊函数生成多维数组 用cat函数生成多维数组,34,用索引生成多维数组,创建多维数组的方法之一是先创建一个二维数组,然后扩展它。如: A = 5 7 8; 0 1 9; 4 3 6; A是一个33的数值,即它的行维和列维都是3。给A添加第三维。 A(:,:,2) = 1 0 4; 3 5 6; 9 8 7,35,用特殊函数生成多维数组,可以使用与生成二维数组相同的方式,用randn,on

13、es和zeros函数等生成多维数组。提供的每个变量表示生成的数组中对应维的大小。如:要创建一个正态分布随机数的432的数组,可以输入: B = randn(4,3,2) 要生成一个元素均为同一常数的数组,使用repmat函数。如: B = repmat(5,3 4 2),36,用cat函数生成多维数组,cat函数是创建多维数组的一种简单方式,它按指定的维数将多个数组聚合到一起,其调用格式为: B = cat(dim,A1,A2.) 其中A1,A2等是进行聚合的数组,dim是维数。,37,结构,创建结构数组 获取结构数组中的数据 数组的大小 操作字段 结构的嵌套,38,创建结构数组,使用赋值语句

14、 可以通过将数据赋给单独的字段来生成一个简单的11结构数组。 使用struct函数 可以用struct函数预分配一个结构数组。其基本形式为: str_array = struct(field1,val1,field2,val2, .) 其中,变量为字段名和它们的对应值。,39,单元数组,创建单元数组 获取单元数组的数据 删除单元和重塑单元数组,40,创建单元数组,用赋值语句创建单元数组 可以使用单元索引和内容索引两种方式创建单元数组。 用cell函数创建单元数组 使用cell函数,可以预分配指定大小的空单元数组,如,下面的语句创建一个空的单元数组: B = cell(2,3); 然后可以用赋值

15、语句填充B单元。,41,函数句柄,函数句柄是一种MATLAB数据类型,它包含用于引用函数的信息。创建函数句柄时,MATLAB在句柄中保存所有与要运行的函数有关的信息。 第3章将对函数句柄进行比较详细的介绍。,42,第3章 M文件设计,变量 表达式 流程控制 函数 M文件 程序调试与错误处理 编程技巧,43,变量,变量的作用范围 局部变量:局部变量的作用范围仅限于本函数。 全局变量:全局变量用global关键字进行声明,其作用范围为整个M文件。 变量的存活期 变量的存活期代表变量保持其值的能力。 用persistent关键字声明固定变量,可以保持变量的值 。,44,表达式,数值表示 运算符 处理

16、字符串表达式,45,数值表示,MATLAB使用传统的数值表示方法。对于比较长的数,使用科学计数法,用字母e指定以10为底的幂次。虚数用i或j作为后缀。下面是一些合法的数值表示: 3 -99 0.0001 9.6397238 1.60210e-20 6.02252e23 1i -3.14159j 3e5i,46,运算符,算术运算符 比较运算符 逻辑运算符 运算符的优先级,47,运算符的优先级,按照优先级别,各种运算符有下面的先后次序。 小括号() 转置(.)、幂(.)、复数共轭转置()、矩阵的幂() 一元的加(+)、一元的减(-)、逻辑否() 乘(.*)、右除(./)、左除(.)、矩阵乘(*)、

17、矩阵右除(/)、矩阵左除() 加(+)、减(-) 冒号操作符(:) 小于()、大于或等于(=)、等于(=)、不等于(=) 逐元素AND( % 开始编写函数代码,64,函数的参数,检查输入参数的个数 传递参数 解包varargin中的内容 打包varargout 参数列表中的varargin和varargout 返回输出参数,65,检查输入参数的个数,利用nargin和nargout函数可以确定函数输入参数和输出参数的个数。然后可以根据参数个数用条件语句完成不同的任务,例如 function c = testarg1(a, b) if (nargin = 1) c = a . 2; elseif

18、 (nargin = 2) c = a + b; end 给定一个输入参数时,函数计算输入值的平方;给定两个输入参数时,求它们的和。,66,传递参数,使用varargin和varargout函数可以传递任意个数的输入参数或者返回任意个数的输出参数给函数。 MATLAB把所有指定的输入参数指定到一个单元数组中。每个单元可以包含任意大小或类型的数据。对于输出参数,函数代码必须把它们打包到一个单元数组中,这样,MATLAB就可以把参数返回给调用函数。,67,解包varargin中的内容,因为varargin将所有输入参数包含在一个单元数组中,所以有必要使用单元数组索引来提取数据。例如 y(n) =

19、vararginn(2); 其中,索引表达式n获取varargin的第n个单元。表达式(2)表示单元内容的第二个元素。,68,打包varargout,当允许有任意多个输出参数时,必须将所有输出打包到varargout单元数组中。使用nargout确定输出参数的个数。,69,参数列表中的varargin和varargout,varargin或varargout必须出现在参数列表的最后,即函数调用必须首先指定必要的参数。,70,返回输出参数,放在函数定义行中等号左侧的任何参数都是调用函数的返回值。如果传递任何函数可以修改的输入参数,需要把相同的参数作为输出参数,这样,调用函数可以获得更新后的值。,

20、71,函数句柄,在MATLAB中,在函数名前用符号创建一个函数句柄。下面的例子为humps函数创建一个函数句柄并将它指定给变量fhandle。 fhandle = humps; 可以像传递其它变量一样将句柄传递给另一个函数。 用MATLAB的feval命令运行函数句柄的目标函数。用函数句柄使用本命令的语法为: feval(fhandle, arg1, arg2, ., argn),72,程序调试和错误处理,用try-catch语句检查错误 错误和警告信息 用Debug菜单进行调试,73,编程技巧,矢量化 预分配内存空间 程序运行情况监测-Profiler,74,第4章 图形绘制,创建二维图形

21、创建三维图形,75,创建二维图形,线形图、条形图和面积图 饼图 误差条图 散点图 直方图 对数坐标图和半对数坐标图 多轴图,极坐标图 帕累托图 火柴杆图 阶梯图 玫瑰花图 函数的图形 动画,76,函数的图形,可以用fplot函数在指定范围内绘函数的图形。函数必须是y = f(x)形式的,其中,x是矢量,为自变量;y为矢量,为因变量。 创建一个M文件myfun,它返回一个两列矩阵。 function Y = myfun(x) Y(:,1) = 200*sin(x(:)./x(:); Y(:,2) = x(:).2; 创建一个指向myfun的函数句柄。 fh = myfun; 用下面的语句绘图。

22、fplot(fh,-20 20) 生成右图。,77,创建动画,在MATLAB中,可以用两种方法创建动画序列: 保存很多不同的图片,然后以电影的形式进行显示; 在屏幕上连续擦除和重画对象。每次重画都作递增式的改变。,78,绘制三维图形,用给定数据绘三维线形图 用给定数据绘三维表面图 表面图绘制的数据格式问题 函数的曲线和曲面 二次曲面 样条曲线和曲面 多边形对象模型 消隐控制 三维图形的场景效果设置,79,用给定数据绘三维线形图,利用plot3函数可以绘制三维线形图。用plot3函数绘图时,需要指定线条穿过的点的坐标。假设X, Y和Z是3个矢量,分别表示一系列点的x坐标、y坐标和z坐标,则下面的

23、命令创建一条经过这些点的三维曲线。 plot3(X,Y,Z),80,用给定数据绘三维表面图,当绘图数据已知时,可以用mesh, surf和surfl等函数直接绘制网格图、刻面图和曲面图。 网格图和刻面图又分三角形和四边形两种。,81,表面图绘制的数据格式问题,MATLAB绘制表面图时数据格式是矩阵格式的,而我们通常得到的采样数据或数值计算数据是点坐标格式的。所以,用MATLAB函数绘表面图以前,需要先转换数据格式。,x y z x(1,1) y(1,1) z(1,1) x(1,2) y(1,2) z(1,2) x(1,n) y(1,n) z(1,n) x(2,1) y(2,1) z(2,1)

24、x(m,n) y(m,n) z(m,n),X矩阵 x(1,1) x(1,2) x(1,n) x(2,1) x(2,2) x(2,n) x(m,1) x(m,2) x(m,n) 同上构造Y矩阵和Z矩阵,82,函数的曲线和曲面,使用ezplot函数和ezplot3函数,可以很方便地绘制二维和三维参数曲线;使用ezpolar函数,可以在极坐标中绘制参数曲线。 用ezmesh函数绘制函数表示的网格。函数形式可以是一般形式,也可以是参数形式。用ezsurf函数绘制函数表示的曲面。,83,二次曲面,用cylinder函数生成柱面。 用sphere函数生成球面。,84,样条曲线和曲面,利用MATLAB的样条

25、工具箱,可以绘制多种样条曲线和曲面。 利用MATLAB样条工具箱,可以绘制样条曲面,包括三次样条曲面、B样条曲面和有理样条曲面等。,85,多边形对象模型,由一个或多个相连或不相连的多边形组成的对象称为面片图形对象,也常称为多边形对象模型。 创建多边形对象,需要定义面片。只需要指定顶点坐标和某种形式的颜色数据就可以定义面片了。面片支持多种着色方式,这一点对于用几何形体进行数据可视化很有用。 定义面片主要有两种方式: 指定每个多边形的顶点坐标,MATLAB按顺序连接这些顶点,形成面片。 指定每个顶点的坐标值和一个指定如何把这些点连成面的矩阵。,86,消隐处理,默认时,MATLAB绘制三维图形时会进

26、行消隐处理。利用下面的命令,可以取消消隐: hidden off,87,三维图形的场景效果设置,绘制三维图以后,可以对它进行着色,添加光照,设置材质、纹理、透明性并进行交互操作。,88,第5章 图形编程,句柄图形对象 基本图形元素的绘制 图形的着色 图形变换 定制图形 交互绘图,89,句柄图形对象,句柄图形对象简介 Figure对象 Root对象 对象的属性,90,句柄图形对象的组织结构,句柄图形对象的层次体系如下图所示。,Root,Figure,UI对象,Axes,隐藏的Annotation Axes对象,核心对象,绘图对象,组对象,Annotation对象,91,Figure对象,Figu

27、re对象是MATLAB显示图形的窗口。图形窗口包括菜单、工具条、用户界面对象、上下文菜单、坐标系和坐标系的子对象等。,92,Root对象,Root对象是Figure对象的父对象。不能实例化Root对象,因为它的作用只是保存信息,它保存MATLAB状态、计算机系统和MATLAB默认设置等信息。,93,对象的属性,图形对象的属性控制它外观和行为的很多方面。属性包括了诸如对象类型、父对象、子对象、可见性之类的一般信息,也包括该对象类型的独有信息。 例如,在任何给定的Figure对象上,可以知道最后按下的是哪个键、鼠标光标的位置或者最近选择的菜单的句柄等。,94,基本图形元素的绘制,绘制直线段、多义线

28、和曲线line函数 绘制矩形、圆角矩形、椭圆、圆及对应的区域图形rectangle函数 绘制多边形patch函数 绘制文本text函数,95,绘制直线段和多义线,MATLAB中的直线段和多义线用Line对象表示。用line函数创建直线段对象。按照直线逼近的思路,还可以用该函数创建曲线。 下面利用line函数生成多义线: X2=1 9 20 28; Y2=1 25 10 32; line(X2,Y2,LineWidth,2 ,Marker,+),96,绘制曲线,按照直线逼近的思路,可以用line函数创建曲线。下面用多条直线段逼近余弦曲线, 左图用10条直线段逼近,右图用20条直线段逼近。,97,

29、绘制矩形、圆角矩形、椭圆、圆及对应的区域图形,MATLAB中,矩形、圆角矩形、椭圆、圆及对应的区域图形都用Rectangle对象表示。用rectangle函数可以创建Rectangle对象。 在同一个坐标系中创建矩形、圆角矩形、椭圆和圆各一个,使用了不同的线型和线宽。 rectangle(Position,1,1,20,10, LineWidth,3); rectangle(Position,5,3,10,15, Curvature,1 1); rectangle(Position,5,3,10,10, Curvature,1 1, LineWidth,3); rectangle(Positi

30、on,4,5,12,8, Curvature,.4,LineStyle, -); axis equal,98,绘制多边形,任意多边形及多边形区域是用Patch对象表示的,该对象由patch函数创建。 使用patch函数生成面片,有两种方法,一种是顶点/颜色法,通过指定每个小面的顶点坐标和颜色来创建;另一种是顶点/小面法,通过指定所有顶点的坐标和各小面的顶点和颜色来创建。,99,绘制文本,文本用Text对象表示,该对象由text函数创建,text函数是创建文本图形对象的低级函数。使用它将文本字符串放在指定的位置上。 下面创建多种形式的文本: text(10,30, 添加文本1); text(10

31、,25, 添加文本2, FontSize,20, FontAngle, Italic); text(10,20, 添加文本3, FontName, 黑体, FontWeight, bold); text(10,10, 添加文本4, Rotation,45); axis(5 20 8 35),100,图形的着色,多边形的单色填充 多边形的插值着色 对同一个多边形,左图为单色填充效果,右图为插值着色效果。,101,图形变换,在MATLAB中实现图形变换,需要用到hgtransform对象,使用该对象的Matrix属性可以给hgtransform对象的所有子对象应用一个变换。典型的变换包括旋转、平移

32、和缩放。 用hgtransform函数创建hgtransform图形对象。 使用makehgtform函数创建44的变换矩阵。,102,定制图形,前面介绍了在MATLAB中创建基本图形元素的方法。有了基本图形元素,就可以灵活运用它们,形成更复杂的图形。,103,第6章 高等数学计算,函数和极限 导数 极限和导数的应用 不定积分和定积分 空间解析几何与向量代数 多元函数的极限和求导 级数 微分方程,104,函数,复合函数运算 符号表达式的复合函数运算主要是通过函数compose来实现的。 反函数 符号表达式的反函数运算主要是通过函数finverse来实现的。 函数的图形,105,极限,符号极限由

33、函数limit来实现。 例:求数列 的极限。 解:在命令窗口键入下面的命令行: syms n; limit(n+(-1)(n-1)/n,n,inf) 得 ans = 1,106,导数,求函数的导数 求隐函数的导数 求参数方程确定的函数的导数,107,求函数的导数,用diff函数进行函数求导。 例:求函数 的导数。 解:在命令窗口键入下面的命令行: syms x; f=sym(x-1)3/(x+1); B=diff(f) 得 B = 3*(x-1)2/(x+1)-(x-1)3/(x+1)2,108,求隐函数的导数,对于隐函数F(x,y)=0,导数,109,求参数方程确定的函数的导数,对于参数方程

34、 导数,110,极限和导数的应用,渐近线 极值 拐点,111,不定积分和定积分,不定积分 求定积分 定积分的近似计算 定积分的应用 多重积分,112,不定积分,MATLAB中,用符号工具箱中的int函数求函数的不定积分和定积分。用int函数的前两种调用格式求不定积分。 例:求不定积分 。 解:在命令窗口键入 syms x n int(xn) 或 syms x n int(xn,x) 得 ans= x(n+1)/(n+1),113,求定积分,用int函数的后两种调用格式求定积分。 例:求定积分 。 解:在命令窗口键入 syms x int(x7,0,1) 得 ans= 1/8,114,定积分的近

35、似计算,用MATLAB提供的trapz函数可以用梯形法近似求取定积分的值。 例:积分 的精确值为2,下面用trapz函数在均匀间隔的网格上求该积分的数值近似。 X=0:pi/100:pi; Y=sin(X); Z=trapz(X,Y) Z= 1.9998,115,定积分的应用,使用定积分,可以解决几何和物理中的很多实际问题,比如求平面图形的面积、求曲面围成的体积、求曲线的弧长、求功等。,116,多重积分,可以用int函数求函数的多重积分。 例:求二重积分 。 解:在命令窗口键入 syms x y; int(int(x*y,y,2),y,1,2) 得 ans = 9/8,117,空间解析几何与向

36、量代数,空间向量运算 曲面及其方程,118,空间向量运算,已知向量a=2,1,-1,b=1,-1,2,计算a+b, a-b, 2a, ab, ab。,解:在命令窗口键入下面的命令行: a=2 1 -1; b=1 -1 2; c=a+b d=a-b e=2*a f=dot(a,b) g=cross(a,b),得 c = 3 0 1 d = 1 2 -3 e = 4 2 -2 f = -1 g = 1 -5 -3,上面分别用dot和cross函数计算向量的点积和叉积,119,曲面及其方程,利用MATLAB提供的绘图函数,可以绘制给定函数的曲面和二次曲面。相关内容,请参见6.2.4和6.2.5小节的

37、介绍。,120,多元函数的极限和求导,求多元函数的极限 求多元函数的导数 求二元隐函数的导数,121,求多元函数的极限,例:求极限 。 解:在命令行键入 syms x y; limit(sin(x+y)-sin(x)/y,y,0) ans = cos(x),122,求多元函数的导数,用diff函数计算多元函数的偏导数,需要指定相对于哪个变量求偏导数。 例:求函数f=sin(st)的偏导数 。 解:在命令窗口键入下面的命令行 syms s t f=sin(s*t) diff(f,t) ans= cos(s*t)*s,123,求二元隐函数的导数,对于隐函数F(x,y,z)=0,导数,124,级数,

38、级数求和 泰勒级数展开 傅立叶级数展开,125,级数求和,可以用symsum函数求级数的和。 例:求级数 和 。 解:在命令窗口键入 syms x k s1=symsum(1/k2,1,inf) s2=symsum(xk,k,0,inf) s1= 1/6*pi2 s2= -1/(x-1),126,泰勒级数展开,用taylor函数进行泰勒级数展开。 例:求函数 的泰勒级数展开,取前7项。 解:在命令窗口键入下面的代码 syms x f=1/(5+4*cos(x) T=taylor(f,8) 返回 T= 1/9+2/81*x2+5/1458*x4+49/131220*x6,127,傅立叶级数展开,

39、通过编写程序,可以实现函数的傅立叶级数展开。,128,微分方程,微分方程可以通过函数dsolve求解。 例:求微分方程 的通解,y为应变量,t为默认的自变量。 解:输入下面的命令行 dsolve(Dy=1+y2) 返回 ans = tan(t+C1) 即为所求的通解。下面指定初始条件y|x=0=1。 y = dsolve(Dy=1+y2,y(0)=1) 生成 y = tan(t+1/4*pi),129,第7章 线性代数,矩阵分析 矩阵的分解 线性方程组的求解 矩阵的特征值和特征向量 符号矩阵 稀疏矩阵,130,矩阵分析,矩阵的行列式 矩阵的四则运算 矩阵的幂和平方根 矩阵的指数和对数 矩阵的翻

40、转 矩阵的逆运算 矩阵的迹,矩阵的范数 矩阵的条件数 矩阵的重塑 矩阵的逻辑运算 矩阵的初等变换 矩阵的秩,131,矩阵的行列式,可用函数det求矩阵的行列式大小。 例: a=1 2 0;2 5 -1;4 10 -1; b=det(a) b = 1,132,矩阵的四则运算,数组和矩阵的加减运算使用加号和减号,即“+”和“-”。 矩阵相乘使用“*”运算符。 如果只是将两个矩阵中相同位置的元素相乘,使用“.*”运算符。 矩阵除法有左除和右除的区别,分别使用“”和“/”运算符。 与“”和“/”运算符相对应,也有“.”和“./”运算符,分别用于将两个矩阵中的对应元素相除。 矩阵与常数的代数运算,可以直

41、接使用上面的各种运算符。,133,矩阵的幂和平方根,矩阵的幂运算使用运算符“”,幂运算具有类似Xp的形式。如果p是整数,则幂通过重复求平方来计算;如果该整数为负值,则首先计算X的逆;如果p取其他值,则计算需要用到特征值和特征矢量,即如果V,D=eig(X),则Xp=V*D.p/V。 用sqrtm函数求矩阵的平方根。,134,矩阵的指数和对数,矩阵的指数运算用expm函数实现。 矩阵的对数运算用logm函数实现。,135,矩阵的翻转,用fliplr函数左右翻转矩阵; 用flipud函数上下翻转矩阵; 用flipdim函数沿指定方向翻转矩阵; 用transpose函数沿主对角线翻转矩阵。,136,

42、矩阵的逆运算,用函数inv实现矩阵的逆运算。 由函数pinv实现矩阵的伪逆运算。,137,矩阵的迹,矩阵的迹是指矩阵所有对角线元素的和。在MATLAB中,矩阵的迹可由函数trace计算得到。,138,矩阵的范数,矩阵的范数运算可由函数norm来实现,具有norm(A), norm(A,1), norm(A,2), norm(A,inf), norm(A,fro)等形式,分别代表矩阵的范数运算、1-范数运算、7-范数运算、无穷大范数运算和F-范数运算。,139,矩阵的条件数,条件数的值代表矩阵“病态”程度的大小。在MATLAB中,矩阵的条件数可分别由函数cond(A), condest(A)或r

43、cond(A)计算得到,它们分别计算矩阵的条件数值、1-范数矩阵条件数值和矩阵的逆条件数值。,140,矩阵的重塑,用reshape函数进行矩阵重塑。下面将一个34的矩阵重塑为26的。 例: A = 1 4 7 10; 2 5 8 11; 3 6 9 12 A = 1 4 7 10 2 5 8 11 3 6 9 12 B = reshape(A, 2, 6) B = 1 3 5 7 9 11 2 4 6 8 10 12,141,矩阵的逻辑运算,使用逻辑运算符,可以直接对数组或矩阵进行逻辑运算,包括逻辑非、逻辑或、逻辑与和逻辑异或运算。,142,矩阵的初等变换,用rref函数进行矩阵的初等行变换

44、。 例: A=1 2 1 8;1 2 3 10;2 3 1 13;1 2 2 9 A = 1 2 1 8 1 2 3 10 2 3 1 13 1 2 2 9 B=rref(A) B = 1 0 0 3 0 1 0 2 0 0 1 1 0 0 0 0,143,矩阵的秩,用函数rank求矩阵的秩。 例: a=1 2 0;2 5 -1;4 10 -1; b=rank(a) b = 3,144,矩阵的分解,矩阵的LU分解 矩阵的QR分解 矩阵的QZ分解 矩阵的乔累斯基分解 矩阵的奇异值分解 矩阵的特征值分解 矩阵的Schur分解,145,矩阵的LU分解,矩阵的LU分解是线性方程组求解方法中高斯消去法的

45、基础,在MATLAB中由函数lu来实现。,146,矩阵的QR分解,在MATLAB中,QR分解可由函数qr实现。常用的调用格式如下: B,C=qr(A) 返回的矩阵C为上三角矩阵,矩阵B为满秩矩阵。 Q,R,E = qr(A) 返回的矩阵E是置换矩阵,矩阵R是上三角矩阵,矩阵Q是满秩矩阵。上述矩阵满足关系A*E = Q*R。,147,矩阵的QZ分解,在MATLAB中,QZ分解可由函数qz来实现。qz函数常用的调用格式如下: AA,BB,Q,Z,V = qz(A,B) 要求矩阵A,B是方阵。产生的矩阵AA,BB是上三角矩阵,Q,Z是正交矩阵,矩阵V是特征矢量矩阵。其中,满足Q*A*Z = AA与Q

46、*B*Z = BB。 AA,BB,Q,Z,V = qz(A,B,flag) 对于方阵A,B的QZ分解取决于参数flag。参数flag可取complex与real。,148,矩阵的乔累斯基分解,设矩阵A为n阶对称正定矩阵,则A矩阵可分解为LL,即A= LL。其中,矩阵L是上三角矩阵。此时,这种分解就称为乔累斯基分解。在MATLAB中,乔累斯基分解由函数chol实现。,149,矩阵的奇异值分解,在MATLAB中,矩阵的奇异值分解由函数svd来实现,其调用格式为 b,c,d=svd(A),150,矩阵的特征值分解,在线性代数中,很多情况下需要求矩阵的特征值。MATLAB中求矩阵特征值的函数是eig和

47、eigs。其中函数eigs主要应用于稀疏矩阵。,151,矩阵的Schur分解,在MATLAB中,矩阵的Schur分解由Schur函数来实现,其调用格式为 b,c=schur(A) 其中c矩阵为Schur矩阵。,152,线性方程组的求解,方形系统 超定系统 不定系统,153,矩阵的特征值和特征向量,在MATLAB中,矩阵的特征值运算用函数eig或eigs实现。其中,eigs函数主要针对矩阵为稀疏矩阵的情况。,154,符号矩阵,符号矩阵的四则运算 符号矩阵的转置运算 符号矩阵的行列式运算 符号矩阵的求逆运算 符号矩阵的求秩运算 符号矩阵的常用函数运算 符号矩阵常用线性方程(组)的求解,155,稀疏

48、矩阵,MATLAB中,创建稀疏矩阵一般用函数sparse或spdiags来实现。 稀疏矩阵由于存储空间变小,而且MATLAB专门开发了针对它的算法,因此对稀疏矩阵的运算速度也非常快。,156,第8章 概率论与数理统计的MATLAB实现,随机变量及其分布 多维随机变量及其分布 随机变量的数字特征 样本描述 参数估计 假设检验 方差分析 一元线性回归,157,随机变量及其分布,离散型随机变量及其分布律 连续型随机变量及其概率密度 分布函数 逆累加分布函数,158,离散型随机变量及其分布,二项分布 泊松分布 离散均匀分布 几何分布 超几何分布,159,连续型随机变量及其概率密度,连续型均匀分布 指数

49、分布 正态分布,160,分布函数,对于离散型随机变量X,设x为任意实数,X的分布函数为 对于连续型随机变量X,假设其概率密度为f(x),则其分布函数为,161,逆累加分布函数,逆累加分布函数是累加分布函数的逆函数。利用逆累加分布函数,可以求得满足给定概率时随机变量对应的置信区间的最小值和最大值。,162,多维随机变量及其分布,用mvnpdf和mvncdf函数可以计算二维正态分布随机变量在指定位置处的概率和累积分布函数值。 下面左图和右图分别为二维正态分布随机变量的概率密度图和累积分布图。,163,随机变量的数字特征,期望 方差 常见分布的数学期望和方差 协方差和相关系数 矩和协方差矩阵,164

50、,样本描述,集中趋势 包括算术平均值、几何均值、调和均值、中值和截尾均值等。 离中趋势 包括均值绝对差、极差、方差和标准差等。 抽样分布 包括卡方分布、t分布和F分布等。,165,参数估计,点估计 可以用矩法和最大似然法进行参数估计。 区间估计 可以用mle函数,利用最大似然估计法进行参数的区间估计。 常见分布的参数估计 MATLAB统计工具箱提供了多种函数的参数估计函数,详见课本。,166,假设检验,方差已知时的均值检验 方差未知时单个正态总体均值的检验 方差未知时两个正态总体均值差的检验 基于成对数据的检验 分布拟合检验,167,方差已知时的均值检验,用ztest函数在给定方差的条件下检验

51、单样本数据是否服从给定均值的正态分布。,168,方差未知时单个正态总体均值的假设检验,t检验是用小样本检验总体参数,特点是在均方差不知道的情况下,可以检验样本平均数的显著性。 用ttest函数进行样本均值的t检验。,169,方差未知时两个正态总体均值差的检验,ttest2函数对两个样本的均值差异进行t检验。,170,基于成对数据的检验,实际工作中为了比较两种方法或两种产品的差异,常常需要进行对比试验。这样得到的数据具有成对的特点。 分析这种数据,还是需要t检验。前面用到的ttest函数可以进行检验。,171,分布拟合检验,q-q图 峰度-偏度检验 秩和检验,172,q-q图,q-q图用变量数据

52、分布的分位数与所指定分布的分位数之间的关系曲线来检验数据的分布。如果两个样本来自同一分布,则图中数据点呈现直线关系,否则为曲线关系。,173,峰度-偏度检验,峰度-偏度检验又称为Jarque-Bera检验,评价给定数据服从未知均值和方差的正态分布的假设是否成立。该检验基于数据样本的偏度和峰度。对于正态分布数据,样本偏度接近于0,样本峰度接近于3。,174,秩和检验,秩和检验可检验两个总体是否相等。用ranksum函数检验两个样本是否取自中值相同的总体。,175,方差分析,单因子方差分析 用anova1函数进行单因子方差分析。 双因子方差分析 用anova2函数进行双因子方差分析。,176,一元

53、线性回归,进行一元线性回归 MATLAB中可以使用polyfit函数实现一元线性回归。对于给定的数据,该函数返回一元线性回归方程的系数。 可化为一元线性回归的曲线回归问题 在实际应用过程中,人们遇到的更多是非线性问题,通过变换,有的非线性问题可以转换为线性问题,从而可以用线性回归的方法来处理。,177,第9章 最优化方法的MATLAB实现,一维搜索问题 线性规划 无约束非线性最优化问题 有约束非线性最优化问题,178,一维搜索问题,求解单变量最优化问题的方法有很多种。如果函数的导数容易求得,一般来说首先考虑使用三次插值法,因为它具有较高的效率。对于只需要计算函数值的方法,二次插值法是一个很好的

54、方法,它的收敛速度较快,在极小点所在区间较小时尤其如此。黄金分割法则是一种十分稳定的方法,并且计算简单。由于以上原因,MATLAB优化工具箱中用得较多的方法是二次插值法、三次插值法、二次三次混合插值法和黄金分割法。,179,利用fminbnd函数找到固定区间内单变量函数的最小值。 例: 对边长为3m的正方形铁板,在4个角处剪去相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大? 解:假设剪去的正方形的边长为x,则水槽的容积为 现在要求在区间(0,1.5)上确定一个x,使最大化。因为优化工具箱中要求目标函数最小化,所以需要对目标函数进行转换,即要求最小化。 首先编写M文件fminbndt

55、est.m: function f = myfun(x) f = - (3-2*x).2 * x; 然后调用fminbnd函数: x = fminbnd(fminbndtest,0,1.5) 得到问题的解: x = 0.5000 即剪掉的正方形的边长为0.5m时水槽的容积最大。,180,线性规划,线性规划问题的矩阵形式为 线性规划的标准形式要求使目标函数最小化,约束条件取等式,变量b非负。不符合这几个条件的线性模型要首先转化成标准形式。 在MATLAB工具箱中,可用linprog函数求解线性规划问题。,181,无约束非线性最优化问题,求解无约束最优化问题的方法主要有两类,即直接搜索法和梯度法。

56、 直接搜索法适用于目标函数高度非线性,没有导数或导数很难计算的情况。常用的直接搜索法为单纯形法,此外还有Hooke-Jeeves搜索法、Pavell共轭方向法等。 在函数的导数可求的情况下,梯度法是一种更优的方法。常见的梯度法有最速下降法、Newton法、Marquart法、共轭梯度法和拟牛顿法等。 MATLAB优化工具箱中用于求解无约束非线性规划问题的函数有fminunc和fminsearch。,182,有约束非线性最优化问题,有约束非线性最优化问题的数学模型为 其中,x, b, beq, lb,和ub为矢量,A和Aeq为矩阵,c(x)和ceq(x)为函数,返回标量。f (x), c(x),

57、 和 ceq(x)可以是非线性函数。 利用fmincon函数求多变量有约束非线性函数的最小值。,183,第10章 复变函数的MATLAB实现,构造复数(矩阵) 复数运算 复变函数的图形,184,构造复数(矩阵),用complex函数构造复数。语法格式为 c = complex(a,b) 其中,a和b分别表示复数的实部和虚部,必须是标量或大小相同的向量、矩阵或多维数组。输出结果c=a+bi,其大小与输入参数的相同。,185,复数的实部和虚部,用real函数返回复数的实部。 用imag函数返回复数的虚部。,186,共轭复数,用conj函数计算复数的共轭值。该函数的语法格式为 ZC = conj(Z

温馨提示

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

评论

0/150

提交评论