MATLAB实用教程.ppt

上传人:豆**** 文档编号:27083939 上传时间:2022-07-22 格式:PPT 页数:291 大小:2.15MB
返回 下载 相关 举报
MATLAB实用教程.ppt_第1页
第1页 / 共291页
MATLAB实用教程.ppt_第2页
第2页 / 共291页
点击查看更多>>
资源描述

《MATLAB实用教程.ppt》由会员分享,可在线阅读,更多相关《MATLAB实用教程.ppt(291页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、本书的主要内容和结构本书的主要内容和结构第1章 MATLAB简介 MATLAB的主要特点 MATLAB的桌面环境 MATLAB的帮助系统MATLAB的主要特点简单易学代码短小高效计算功能强大绘图功能强大可扩展性能MATLAB的桌面环境启动按钮命令窗口命令历史窗口工作空间窗口当前目录浏览器主界面当前目录浏览工具命令窗口启动按钮命令历史窗口工作空间窗口MATLAB的帮助系统帮助浏览工具help函数和doc函数第2章 数据类型 常数和变量 数组和矩阵 字符串 多维数组 结构 单元数组 函数句柄常数常数返回值ans默认变量名,保存最近的结果。如果不给表达式指定一个输出变量,MATLAB会自动将结果保存

2、到ans变量中 eps浮点相对精度。是MATLAB用于计算的容限 realmax计算机可以表示的最大浮点数 realmin计算机可以表示的最小浮点数 pi圆周率 i, j虚数单位 inf无限值。类似n/0的表达式生成的结果为inf,其中n为非0实数 NaN表示不合法的数值值,非数值。类似0/0和inf/inf的表达式生成的结果,与NaN有关的算术运算结果,以及n/0,n为复数时的计算结果都是NaN computer计算机类型 versionMATLAB版本字符串 下表列出了MATLAB提供的一些内部函数。变量变量名 MATLAB变量名的第1个字符必须是字母,后面可以跟字母、数字和下划线的任何组

3、合。 注意:注意:MATLAB中变量名有大小写区分,所以A和a是不同的变量。 创建变量 在MATLAB中创建变量很简单,不必声明变量的数据类型。例如在命令窗口键入下面的命令行就可以创建一个A变量。 A=9 A = 9 变量的数据类型数 组逻辑型字符型数值型单元数组结构数组函数句柄Java类定制类int8, uint8int16, uint16int32, uint32SingleDouble数组和矩阵 MATLAB中,所有数据都用数组或矩阵形式进行保存。 数组 矩阵数组构造数组的方法:直接构造法增量法linspace函数法直接构造数组 在MATLAB中构造数组,只需要用空格或逗号间隔数组元素,

4、然后用方括号括起来就行了。如 x=0 2 3 6 7 8 或 x=0,2,3,6,7,8就构造了一个有6个元素的数组x。 用增量法构造数组 利用MATLAB提供的冒号运算符(first:step:last)可以生成数组。数组中的元素按顺序从first一直到last,增量为step。(2:3:14)如果不指定增量step,则按升序生成数组,后面的数比它前面第一个数大1。(2:13) 如果要求生成降序排列的数组,指定一个负的增量。增量可以是整数,也可以是小数。用linspace函数构造数组 用linspace函数构造数组,需要指定首尾值和元素总个数。基本形式是: x=linspace(first,

5、last,num)其中,first,last和num分别为x数组的首尾元素和元素个数。如 x=linspace(0,10,5) x = 0 2.5000 5.0000 7.5000 10.0000 矩阵构造矩阵的方法:简单的创建方法构造特殊矩阵聚合矩阵组合不同类型的数据用简单方法构造矩阵 MATLAB中创建矩阵最简单的方法是使用符号。在方括号内输入多个元素可以创建矩阵的一个行。用逗号或空格把每个元素间隔开。如果想开始一个新行,用分号终止当前行: A = row1; row2; .; rown 下面创建一个3行5列的数值矩阵。 A = 12 62 93 -8 22; 16 2 87 43 91;

6、 -4 17 -72 95 6 A = 12 62 93 -8 22 16 2 87 43 91 -4 17 -72 95 6构造特殊矩阵 MATLAB提供了多个创建不同矩阵的函数,如下表所示。 函 数功 能ones创建一个所有元素都为1的矩阵 zeros创建一个所有元素都为0的矩阵 eye创建对角线元素为1,其他元素为0的矩阵 accumarray 将输入矩阵的元素分配到输出矩阵中的指定位置 diag根据矢量创建对角矩阵 magic创建一个方形矩阵,其中行、列和对角线上元素的和相等 rand创建一个矩阵或数组,其中的元素为服从均匀分布的随机数 randn创建一个矩阵或数组,其中的元素为服从正

7、态分布的随机数 randperm创建一个矢量(1n的矩阵) 聚合矩阵 矩阵聚合是通过连接一个或多个矩阵来形成新的矩阵。符号 不仅是矩阵构造符,它还是MATLAB聚合运算符。表达式C=A B在水平方向上聚合矩阵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注意:在每一条程序后面,有分号“;”,则该语句求出的内容不显 示在屏幕上;若没有分号,则所求内容会显示出来 组合不同类型的数据 构造矩阵

8、时,如果矩阵的数据类型不同,则MATLAB会自动对某些元素进行类型转换,然后生成的矩阵具有相同的类型。 用一个高精度的矩阵和一个低精度的矩阵构造新矩阵时,新矩阵是低精度型的。例如,聚合double型和single型的矩阵时,总是生成single型的矩阵。MATLAB会先将double型元素转换为single型。 聚合矩阵的特殊函数下表列出了聚合矩阵的一些特殊函数。函 数描 述cat沿指定的维聚合矩阵 horzcat 水平聚合矩阵 vertcat垂向聚合矩阵 repmat通过复制和叠置矩阵来创建新矩阵 blkdiag用已有矩阵创建块对角矩阵 获取矩阵的元素使用编号索引使用线性索引使用冒号使用en

9、d关键字使用编号索引获取矩阵的元素 利用编号和索引,可以获取MATLAB矩阵的元素。 要引用矩阵中的特殊元素,用下面的语法指定它的行号和列号,其中A是矩阵变量。按先行后列的顺序指定。 A(row, column) 使用线性索引获取矩阵的元素 MATLAB保存矩阵中的数据时是作为一个元素列保存。这个元素列又是由矩阵中的所有列组成的,后一列元素按先后顺序添加到前一列元素的最后。所以,矩阵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列的元素可以看作实

10、际保存序列中的第6个元素。要获取这个元素,可以使用标准语法A(3,2)或使用A(6)。使用冒号获取矩阵的元素 利用冒号本身可以引用矩阵某行或列的所有元素。使用下面的语法,可以计算44的魔方矩阵A中所有元素的和。 sum(A(:, 2) ans = 34 将冒号进行索引,可以引用整个矩阵中的所有元素。本例显示矩阵A中的所有元素,按列序返回它们: A(:) 使用end关键字获取矩阵的元素 利用end关键字可以指定矩阵某维的最后一个元素。它适用于不知道矩阵有多少行或多少列的情况。例如,可以用下面的语句进行值的替换: B(1:3:end) = -10 字符串字符串的创建类型转换字符串的比较字符串的聚合

11、字符串的搜索和替换创建字符串通过把字符放到单引号中来指定字符数据。如,下面创建一个15的字符串country。 country = China; 创建一个二维字符串时,确定每行具有相同的长度,例如,下面两个字符串都有5个字符,用它们组合起来的二维字符串是合法的。 name = Li Yi ; Hu Xu name = Li Yi Hu Xu 根据不同长度的字符串创建字符串时,将短的那些字符串后面用空格补齐,使所有字符串的长度相同。 类型转换用char函数把单元数组转换为标准字符串数组。 str2double函数把一个字符串单元数组转换为字符串表示的双精度值。 int2str函数将整型数据转换为

12、字符串型数据。 num2str函数对输出字符串的格式提供了更多控制,该函数的第2个变量是可选的,它设置输出字符串的位数,或指定一个实际的格式。 mat2str函数将数组转换为字符串。 mat2str函数将返回一个包含文本的字符串,该文本在命令行中输入,用于创建矩阵。 字符串的比较用strcmp函数比较字符串,字符串不相等时,返回false。可以使用MATLAB的关系运算符,如,可以用()确定两个字符串中的相同字符。所有关系运算符(, =, , =, =, !=)比较对应字符的值。 字符串的聚合字符串通常可以由更小的元素聚合而成。两个通用的聚合方法是使用MATLAB聚合运算符()或sprintf

13、函数。用strcat函数也可以把两个或更多字符串组合在一起。 字符串的搜索和替换strrep函数进行标准的搜索和替代操作。findstr函数把子字符串的起始位置返回到一个更长的字符串中。 strtok函数在输入字符串中第一次发现间隔符时返回间隔符前面的字符,可用该函数把句子分离成单词。 strmatch函数在字符串或字符串单元数组的整个行中进行查找,看有没有以给定字符序列打头的字符串,它返回以该字符串打头的行的行号。 多维数组用索引生成多维数组用特殊函数生成多维数组用cat函数生成多维数组用索引生成多维数组 创建多维数组的方法之一是先创建一个二维数组,然后扩展它。如: A = 5 7 8; 0

14、 1 9; 4 3 6; A是一个33的数值,即它的行维和列维都是3。给A添加第三维。 A(:,:,2) = 1 0 4; 3 5 6; 9 8 7 用特殊函数生成多维数组 可以使用与生成二维数组相同的方式,用randn,ones和zeros函数等生成多维数组。提供的每个变量表示生成的数组中对应维的大小。如:要创建一个正态分布随机数的432的数组,可以输入: B = randn(4,3,2) 要生成一个元素均为同一常数的数组,使用repmat函数。如: B = repmat(5,3 4 2) 用cat函数生成多维数组 cat函数是创建多维数组的一种简单方式,它按指定的维数将多个数组聚合到一起,

15、其调用格式为: B = cat(dim,A1,A2.) 其中A1,A2等是进行聚合的数组,dim是维数。 结构创建结构数组获取结构数组中的数据数组的大小操作字段结构的嵌套创建结构数组使用赋值语句 可以通过将数据赋给单独的字段来生成一个简单的11结构数组。 使用struct函数 可以用struct函数预分配一个结构数组。其基本形式为: str_array = struct(field1,val1,field2,val2, .) 其中,变量为字段名和它们的对应值。 单元数组创建单元数组获取单元数组的数据删除单元和重塑单元数组创建单元数组用赋值语句创建单元数组 可以使用单元索引和内容索引两种方式创建

16、单元数组。用cell函数创建单元数组 使用cell函数,可以预分配指定大小的空单元数组,如,下面的语句创建一个空的单元数组: B = cell(2,3); 然后可以用赋值语句填充B单元。 函数句柄 函数句柄是一种MATLAB数据类型,它包含用于引用函数的信息。创建函数句柄时,MATLAB在句柄中保存所有与要运行的函数有关的信息。 第3章将对函数句柄进行比较详细的介绍。第3章 M文件设计 变量 表达式 流程控制 函数 M文件 程序调试与错误处理 编程技巧变量变量的作用范围 局部变量:局部变量的作用范围仅限于本函数。 全局变量:全局变量用global关键字进行声明,其作用范围为整个M文件。 变量的

17、存活期 变量的存活期代表变量保持其值的能力。 用persistent关键字声明固定变量,可以保持变量的值 。表达式数值表示运算符处理字符串表达式数值表示 MATLAB使用传统的数值表示方法。对于比较长的数,使用科学计数法,用字母e指定以10为底的幂次。虚数用i或j作为后缀。下面是一些合法的数值表示: 3 -99 0.0001 9.6397238 1.60210e-20 6.02252e23 1i -3.14159j 3e5i 运算符算术运算符比较运算符逻辑运算符运算符的优先级运算符的优先级按照优先级别,各种运算符有下面的先后次序。小括号()转置(.)、幂(.)、复数共轭转置()、矩阵的幂()一

18、元的加(+)、一元的减(-)、逻辑否()乘(.*)、右除(./)、左除(.)、矩阵乘(*)、矩阵右除(/)、矩阵左除()加(+)、减(-)冒号操作符(:)小于()、小于或等于()、大于或等于(=)、等于(=)、不等于(=)逐元素AND(&)逐元素OR(|)&|处理字符串表达式 处理字符串表达式需要使用eval函数和feval函数。 eval函数可以处理包含MATLAB表达式、语句或函数调用的字符串。 feval函数与eval函数的区别在于,该函数执行函数而不是MATLAB表达式。 注意:注意:尽量少用eval函数,因为使用eval函数的代码通常不好读,不易调试。 流程控制条件控制循环控制错误控

19、制程序终止控制条件控制if/elseif语句switch/case语句比较上面两种语句,switch/case语句的可读性更强,并且可以比较不同长度的字符串。循环控制for循环while循环continue命令break命令错误控制trycatch语句进行错误捕获,它把有可能引起异常的语句放在try控制块中,这样当try控制块中statement语句引起异常时,catch控制块就可以捕获它,并针对不同的错误类型,进行不同的处理。 程序终止控制 return命令能使当前正在运行的函数正常退出,并返回调用它的函数,继续运行。 下表比较break,continue和return命令。命令用在何处描

20、述breakfor 或while循环 它出现时,退出循环,在嵌套的循环中,进入相邻的外层循环 continue for 或while循环 在本循环中跳过剩余的语句,进入本循环的下一次迭代 return任意位置 它出现时,立即退出函数,进入函数的调用函数中 函数主函数子函数匿名函数嵌套函数私有函数重载函数主函数任何M文件中的第1个函数称为主函数。 注意:注意:一般使主函数的名称与M文件的相同。如果函数名与文件名不同,必须用文件名调用函数。 子函数M文件中可以包含一个以上的函数。文件中除主函数以外的其他函数称为子函数,并且它们只对主函数或同一文件中的其他子函数可见。 匿名函数 使用匿名函数,可以在

21、不必创建M文件的情况下快速创建简单函数。可以在MATLAB命令行或任何M文件函数或脚本中创建匿名函数。 创建匿名函数的语法格式为: fhandle=(arglist) expr 其中,expr表示函数体,即函数要完成主要工作的代码;arglist为要传递给函数的逗号间隔的输入参数列表。 嵌套函数 可以在一个函数中嵌套定义一个或多个函数。嵌套函数具有类似下面的形式: function x=A(p1,p2) function y=B(p3) end end私有函数 私有函数是private子目录中的函数。它们只对父目录中的函数可见。 重载函数 有时候同一个函数可以用于多种情况,对应地有不同的输入参

22、数,此时要用到重载函数。比如绘制二维线形图的plot函数就有多种重载形式,下面是其中两种。 plot(Y) plot(X1,Y1,.) 这两个函数具有相同的函数名,不同的参数。调用plot函数时MATLAB会根据函数的参数自动选择使用。 M文件脚本式M文件和函数式M文件M文件的基本结构函数的参数函数句柄脚本式M文件和函数式M文件脚本式M文件和函数式M文件的区别如下表所示。脚本式M文件函数式M文件不接受输入参数,没有返回值可以接受输入参数,可以有返回值基于工作空间中的数据进行操作默认时,文件中参数的作用范围只限于函数内部 自动完成需要花费很多时间的多步操作时使用 扩展MATLAB语言功能时使用

23、M文件的基本结构 一个完整的函数式M文件应该包括函数定义行、H1行、帮助文本、函数体、注释和函数代码等方面的内容,其中函数定义行和函数代码是必需的。 如 function x, y = myfun(a, b, c) 函数定义行函数定义行 % H1行行 用一行文字来综述函数的功能 % 帮助文本帮助文本 用一行或多行文本解释如何使用函数, % 在命令行中键入help 时可以使用它 % 函数体函数体一般从第一个空白行后开始 % 注释注释 描述函数的行为,输入输出的类型等, % 在命令行中键入help 时不会显示这些文本 x = prod(a, b); % 开始编写函数代码函数代码函数的参数检查输入参

24、数的个数传递参数解包varargin中的内容打包varargout参数列表中的varargin和varargout返回输出参数检查输入参数的个数 利用nargin和nargout函数可以确定函数输入参数和输出参数的个数。然后可以根据参数个数用条件语句完成不同的任务,例如 function c = testarg1(a, b) if (nargin = 1) c = a . 2; elseif (nargin = 2) c = a + b; end 给定一个输入参数时,函数计算输入值的平方;给定两个输入参数时,求它们的和。 传递参数 使用varargin和varargout函数可以传递任意个数的

25、输入参数或者返回任意个数的输出参数给函数。 MATLAB把所有指定的输入参数指定到一个单元数组中。每个单元可以包含任意大小或类型的数据。对于输出参数,函数代码必须把它们打包到一个单元数组中,这样,MATLAB就可以把参数返回给调用函数。 解包varargin中的内容 因为varargin将所有输入参数包含在一个单元数组中,所以有必要使用单元数组索引来提取数据。例如 y(n) = vararginn(2); 其中,索引表达式n获取varargin的第n个单元。表达式(2)表示单元内容的第二个元素。 打包varargout当允许有任意多个输出参数时,必须将所有输出打包到varargout单元数组中

26、。使用nargout确定输出参数的个数。 参数列表中的varargin和varargoutvarargin或varargout必须出现在参数列表的最后,即函数调用必须首先指定必要的参数。 返回输出参数放在函数定义行中等号左侧的任何参数都是调用函数的返回值。如果传递任何函数可以修改的输入参数,需要把相同的参数作为输出参数,这样,调用函数可以获得更新后的值。 函数句柄在MATLAB中,在函数名前用符号创建一个函数句柄。下面的例子为humps函数创建一个函数句柄并将它指定给变量fhandle。 fhandle = humps; 可以像传递其它变量一样将句柄传递给另一个函数。 用MATLAB的feva

27、l命令运行函数句柄的目标函数。用函数句柄使用本命令的语法为: feval(fhandle, arg1, arg2, ., argn) 程序调试和错误处理用try-catch语句检查错误错误和警告信息用Debug菜单进行调试编程技巧矢量化预分配内存空间程序运行情况监测-Profiler第4章 图形绘制 创建二维图形 创建三维图形创建二维图形线形图、条形图和面积图饼图误差条图散点图直方图对数坐标图和半对数坐标图多轴图极坐标图帕累托图火柴杆图阶梯图玫瑰花图函数的图形动画函数的图形可以用fplot函数在指定范围内绘函数的图形。函数必须是y = f(x)形式的,其中,x是矢量,为自变量;y为矢量,为因变

28、量。 创建一个M文件myfun,它返回一个两列矩阵。 function Y = myfun(x) Y(:,1) = 200*sin(x(:)./x(:); Y(:,2) = x(:).2;创建一个指向myfun的函数句柄。 fh = myfun;用下面的语句绘图。 fplot(fh,-20 20) 生成右图。 创建动画在MATLAB中,可以用两种方法创建动画序列: 保存很多不同的图片,然后以电影的形式进行显示; 在屏幕上连续擦除和重画对象。每次重画都作递增式的改变。绘制三维图形用给定数据绘三维线形图用给定数据绘三维表面图表面图绘制的数据格式问题函数的曲线和曲面二次曲面样条曲线和曲面多边形对象模

29、型消隐控制三维图形的场景效果设置用给定数据绘三维线形图利用plot3函数可以绘制三维线形图。用plot3函数绘图时,需要指定线条穿过的点的坐标。假设X, Y和Z是3个矢量,分别表示一系列点的x坐标、y坐标和z坐标,则下面的命令创建一条经过这些点的三维曲线。 plot3(X,Y,Z)用给定数据绘三维表面图 当绘图数据已知时,可以用mesh, surf和surfl等函数直接绘制网格图、刻面图和曲面图。 网格图和刻面图又分三角形和四边形两种。表面图绘制的数据格式问题MATLAB绘制表面图时数据格式是矩阵格式的,而我们通常得到的采样数据或数值计算数据是点坐标格式的。所以,用MATLAB函数绘表面图以前

30、,需要先转换数据格式。x y zx(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)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矩阵函数的曲线和曲面使用ezplot函数和ezplot3函数,可以很方便地绘制二维和三维参数曲线;使用ezpolar函数,可以在极坐标中绘制参数曲线。 用ezmesh函数绘制函数表示的网格。函数形式可以是一般形式,也可以是参

31、数形式。用ezsurf函数绘制函数表示的曲面。 二次曲面用cylinder函数生成柱面。 用sphere函数生成球面。 样条曲线和曲面利用MATLAB的样条工具箱,可以绘制多种样条曲线和曲面。 利用MATLAB样条工具箱,可以绘制样条曲面,包括三次样条曲面、B样条曲面和有理样条曲面等。 多边形对象模型 由一个或多个相连或不相连的多边形组成的对象称为面片图形对象,也常称为多边形对象模型。 创建多边形对象,需要定义面片。只需要指定顶点坐标和某种形式的颜色数据就可以定义面片了。面片支持多种着色方式,这一点对于用几何形体进行数据可视化很有用。 定义面片主要有两种方式:指定每个多边形的顶点坐标,MATL

32、AB按顺序连接这些顶点,形成面片。指定每个顶点的坐标值和一个指定如何把这些点连成面的矩阵。 消隐处理 默认时,MATLAB绘制三维图形时会进行消隐处理。利用下面的命令,可以取消消隐: hidden off三维图形的场景效果设置 绘制三维图以后,可以对它进行着色,添加光照,设置材质、纹理、透明性并进行交互操作。 第5章 图形编程 句柄图形对象 基本图形元素的绘制 图形的着色 图形变换 定制图形 交互绘图句柄图形对象句柄图形对象简介Figure对象Root对象对象的属性句柄图形对象的组织结构句柄图形对象的层次体系如下图所示。RootFigureUI对象Axes隐藏的Annotation Axes对

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

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

35、0条直线段逼近。绘制矩形、圆角矩形、椭圆、圆及对应的区域图形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

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

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

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

39、: syms n; limit(n+(-1)(n-1)/n,n,inf) 得 ans = 1导数求函数的导数求隐函数的导数求参数方程确定的函数的导数求函数的导数用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 求隐函数的导数对于隐函数F(x,y)=0,导数 求参数方程确定的函数的导数对于参数方程 导数 极限和导数的应用渐近线极值拐点不定积分和定积分不定积分求定积分定积分的近似计算定积分的应用多重积分不定积分MATLAB中,用符号

40、工具箱中的int函数求函数的不定积分和定积分。用int函数的前两种调用格式求不定积分。 例:求不定积分 。解:在命令窗口键入syms x nint(xn)或syms x nint(xn,x)得ans= x(n+1)/(n+1) 求定积分用int函数的后两种调用格式求定积分。 例:求定积分 。解:在命令窗口键入syms xint(x7,0,1) 得ans= 1/8 定积分的近似计算用MATLAB提供的trapz函数可以用梯形法近似求取定积分的值。 例:积分 的精确值为2,下面用trapz函数在均匀间隔的网格上求该积分的数值近似。 X=0:pi/100:pi;Y=sin(X);Z=trapz(X,

41、Y)Z= 1.9998 定积分的应用使用定积分,可以解决几何和物理中的很多实际问题,比如求平面图形的面积、求曲面围成的体积、求曲线的弧长、求功等。 多重积分可以用int函数求函数的多重积分。 例:求二重积分 。解:在命令窗口键入syms x y;int(int(x*y,y,2),y,1,2)得 ans = 9/8 空间解析几何与向量代数空间向量运算曲面及其方程空间向量运算已知向量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

42、=cross(a,b)得 c = 3 0 1 d = 1 2 -3 e = 4 2 -2 f = -1 g = 1 -5 -3上面分别用dot和cross函数计算向量的点积和叉积曲面及其方程利用MATLAB提供的绘图函数,可以绘制给定函数的曲面和二次曲面。相关内容,请参见6.2.4和6.2.5小节的介绍。 多元函数的极限和求导求多元函数的极限求多元函数的导数求二元隐函数的导数求多元函数的极限例:求极限 。解:在命令行键入syms x y;limit(sin(x+y)-sin(x)/y,y,0) ans = cos(x) 求多元函数的导数用diff函数计算多元函数的偏导数,需要指定相对于哪个变量

43、求偏导数。 例:求函数f=sin(st)的偏导数 。解:在命令窗口键入下面的命令行 syms s t f=sin(s*t) diff(f,t) ans= cos(s*t)*s 求二元隐函数的导数对于隐函数F(x,y,z)=0,导数 级数级数求和泰勒级数展开傅立叶级数展开级数求和可以用symsum函数求级数的和。例:求级数 和 。解:在命令窗口键入 syms x k s1=symsum(1/k2,1,inf) s2=symsum(xk,k,0,inf) s1= 1/6*pi2 s2= -1/(x-1) 泰勒级数展开用taylor函数进行泰勒级数展开。 例:求函数 的泰勒级数展开,取前7项。解:在

44、命令窗口键入下面的代码 syms x f=1/(5+4*cos(x) T=taylor(f,8)返回 T= 1/9+2/81*x2+5/1458*x4+49/131220*x6 傅立叶级数展开通过编写程序,可以实现函数的傅立叶级数展开。微分方程微分方程可以通过函数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) 第7章 线性代数 矩阵分析 矩

45、阵的分解 线性方程组的求解 矩阵的特征值和特征向量 符号矩阵 稀疏矩阵矩阵分析 矩阵的行列式矩阵的四则运算矩阵的幂和平方根矩阵的指数和对数矩阵的翻转矩阵的逆运算矩阵的迹矩阵的范数矩阵的条件数矩阵的重塑矩阵的逻辑运算矩阵的初等变换矩阵的秩矩阵的行列式可用函数det求矩阵的行列式大小。 例:a=1 2 0;2 5 -1;4 10 -1;b=det(a)b = 1 矩阵的四则运算数组和矩阵的加减运算使用加号和减号,即“+”和“-”。 矩阵相乘使用“*”运算符。如果只是将两个矩阵中相同位置的元素相乘,使用“.*”运算符。 矩阵除法有左除和右除的区别,分别使用“”和“/”运算符。 与“”和“/”运算符相

46、对应,也有“.”和“./”运算符,分别用于将两个矩阵中的对应元素相除。 矩阵与常数的代数运算,可以直接使用上面的各种运算符。 矩阵的幂和平方根矩阵的幂运算使用运算符“”,幂运算具有类似Xp的形式。如果p是整数,则幂通过重复求平方来计算;如果该整数为负值,则首先计算X的逆;如果p取其他值,则计算需要用到特征值和特征矢量,即如果V,D=eig(X),则Xp=V*D.p/V。用sqrtm函数求矩阵的平方根。 矩阵的指数和对数矩阵的指数运算用expm函数实现。矩阵的对数运算用logm函数实现。 矩阵的翻转用fliplr函数左右翻转矩阵;用flipud函数上下翻转矩阵;用flipdim函数沿指定方向翻转

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

48、ndest(A)或rcond(A)计算得到,它们分别计算矩阵的条件数值、1-范数矩阵条件数值和矩阵的逆条件数值。 矩阵的重塑用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 矩阵的逻辑运算使用逻辑运算符,可以直接对数组或矩阵进行逻辑运算,包括逻辑非、逻辑或、逻辑与和逻辑异或运算。矩阵的初等变换用rref函数进行矩阵的初等行变换 。例:A=1

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

50、QR分解可由函数qr实现。常用的调用格式如下: B,C=qr(A) 返回的矩阵C为上三角矩阵,矩阵B为满秩矩阵。 Q,R,E = qr(A) 返回的矩阵E是置换矩阵,矩阵R是上三角矩阵,矩阵Q是满秩矩阵。上述矩阵满足关系A*E = Q*R。 矩阵的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*B*Z = BB。 AA,BB,Q,Z,V = qz(A,B,flag) 对于方阵A,B的Q

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

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com