MATLAB实用教程经典课件.ppt
《MATLAB实用教程经典课件.ppt》由会员分享,可在线阅读,更多相关《MATLAB实用教程经典课件.ppt(290页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、MATLABMATLAB实用教实用教程程本书的主要内容和结构本书的主要内容和结构第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为复数时的计算结果都是NaNcomputer计算机类型versionMATLAB版本字符串下表列出了MATLAB提供的一些内部函数。变量的数据类型数组逻辑型字符型数值型单元数组结构数组函数句柄Java类定制类int8,uint8
3、int16,uint16int32,uint32SingleDouble数组和矩阵MATLAB中,所有数据都用数组或矩阵形式进行保存。数组矩阵数组构造数组的方法:直接构造法增量法linspace函数法直接构造数组在MATLAB中构造数组,只需要用空格或逗号间隔数组元素,然后用方括号括起来就行了。如 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,则按升序生
4、成数组,后面的数比它前面第一个数大1。(2:13)如果要求生成降序排列的数组,指定一个负的增量。增量可以是整数,也可以是小数。用linspace函数构造数组用linspace函数构造数组,需要指定首尾值和元素总个数。基本形式是:x=linspace(first,last,num)其中,first,last和num分别为x数组的首尾元素和元素个数。如 x=linspace(0,10,5)x=02.50005.00007.500010.0000矩阵构造矩阵的方法:简单的创建方法构造特殊矩阵聚合矩阵组合不同类型的数据用简单方法构造矩阵 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构造特殊矩阵MATLAB提供了多个创建不同矩阵的函数,如下表所示。函数功能ones创建一个所有元素都为1的矩阵zeros创建一个所有元素都为0的矩阵eye创建对角线元素为1,其他元素为0的矩阵accumarray 将输入矩阵的元素分配到输出矩阵中的指定位置di
6、ag根据矢量创建对角矩阵magic创建一个方形矩阵,其中行、列和对角线上元素的和相等rand创建一个矩阵或数组,其中的元素为服从均匀分布的随机数randn创建一个矩阵或数组,其中的元素为服从正态分布的随机数randperm创建一个矢量(1n的矩阵)聚合矩阵 矩阵聚合是通过连接一个或多个矩阵来形成新的矩阵。符号不仅是矩阵构造符,它还是MATLAB聚合运算符。表达式C=AB在水平方向上聚合矩阵A和B,表达式C=A;B在垂向上聚合它们。本例通过在垂向上聚合矩阵A和B来构造新矩阵C:A=ones(2,5)*6;%25的矩阵,元素为6 B=rand(3,5);%35的矩阵,元素为随机数 C=A;B%垂向
7、聚合A和B注意:在每一条程序后面,有分号“;”,则该语句求出的内容不显 示在屏幕上;若没有分号,则所求内容会显示出来组合不同类型的数据构造矩阵时,如果矩阵的数据类型不同,则MATLAB会自动对某些元素进行类型转换,然后生成的矩阵具有相同的类型。用一个高精度的矩阵和一个低精度的矩阵构造新矩阵时,新矩阵是低精度型的。例如,聚合double型和single型的矩阵时,总是生成single型的矩阵。MATLAB会先将double型元素转换为single型。聚合矩阵的特殊函数下表列出了聚合矩阵的一些特殊函数。函数描述cat沿指定的维聚合矩阵horzcat水平聚合矩阵vertcat垂向聚合矩阵repmat
8、通过复制和叠置矩阵来创建新矩阵blkdiag用已有矩阵创建块对角矩阵获取矩阵的元素使用编号索引使用线性索引使用冒号使用end关键字使用编号索引获取矩阵的元素利用编号和索引,可以获取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在内存中是按下面的序
9、列保存的:2,4,3,6,2,5,9,8,1矩阵A第3行第2列的元素可以看作实际保存序列中的第6个元素。要获取这个元素,可以使用标准语法A(3,2)或使用A(6)。使用冒号获取矩阵的元素利用冒号本身可以引用矩阵某行或列的所有元素。使用下面的语法,可以计算44的魔方矩阵A中所有元素的和。sum(A(:,2)ans=34 将冒号进行索引,可以引用整个矩阵中的所有元素。本例显示矩阵A中的所有元素,按列序返回它们:A(:)使用end关键字获取矩阵的元素利用end关键字可以指定矩阵某维的最后一个元素。它适用于不知道矩阵有多少行或多少列的情况。例如,可以用下面的语句进行值的替换:B(1:3:end)=-1
10、0字符串字符串的创建类型转换字符串的比较字符串的聚合字符串的搜索和替换创建字符串通过把字符放到单引号中来指定字符数据。如,下面创建一个15的字符串country。country=China;创建一个二维字符串时,确定每行具有相同的长度,例如,下面两个字符串都有5个字符,用它们组合起来的二维字符串是合法的。name=Li Yi;Hu Xu name=Li YiHuXu 根据不同长度的字符串创建字符串时,将短的那些字符串后面用空格补齐,使所有字符串的长度相同。类型转换用char函数把单元数组转换为标准字符串数组。str2double函数把一个字符串单元数组转换为字符串表示的双精度值。int2str
11、函数将整型数据转换为字符串型数据。num2str函数对输出字符串的格式提供了更多控制,该函数的第2个变量是可选的,它设置输出字符串的位数,或指定一个实际的格式。mat2str函数将数组转换为字符串。mat2str函数将返回一个包含文本的字符串,该文本在命令行中输入,用于创建矩阵。字符串的比较用strcmp函数比较字符串,字符串不相等时,返回false。可以使用MATLAB的关系运算符,如,可以用()确定两个字符串中的相同字符。所有关系运算符(,=,=,=,!=)比较对应字符的值。字符串的聚合字符串通常可以由更小的元素聚合而成。两个通用的聚合方法是使用MATLAB聚合运算符()或sprintf函
12、数。用strcat函数也可以把两个或更多字符串组合在一起。字符串的搜索和替换strrep函数进行标准的搜索和替代操作。findstr函数把子字符串的起始位置返回到一个更长的字符串中。strtok函数在输入字符串中第一次发现间隔符时返回间隔符前面的字符,可用该函数把句子分离成单词。strmatch函数在字符串或字符串单元数组的整个行中进行查找,看有没有以给定字符序列打头的字符串,它返回以该字符串打头的行的行号。多维数组用索引生成多维数组用特殊函数生成多维数组用cat函数生成多维数组用索引生成多维数组创建多维数组的方法之一是先创建一个二维数组,然后扩展它。如:A=5 7 8;0 1 9;4 3 6
13、;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函数是创建多维数组的一种简单方式,它按指定的维数将多个数组聚合到一起,其调用格式为:B=cat(dim,A1,A2.)其中A
14、1,A2等是进行聚合的数组,dim是维数。结构创建结构数组获取结构数组中的数据数组的大小操作字段结构的嵌套创建结构数组使用赋值语句 可以通过将数据赋给单独的字段来生成一个简单的11结构数组。使用struct函数可以用struct函数预分配一个结构数组。其基本形式为:str_array=struct(field1,val1,field2,val2,.)其中,变量为字段名和它们的对应值。单元数组创建单元数组获取单元数组的数据删除单元和重塑单元数组创建单元数组用赋值语句创建单元数组可以使用单元索引和内容索引两种方式创建单元数组。用cell函数创建单元数组使用cell函数,可以预分配指定大小的空单元数
15、组,如,下面的语句创建一个空的单元数组:B=cell(2,3);然后可以用赋值语句填充B单元。函数句柄 函数句柄是一种MATLAB数据类型,它包含用于引用函数的信息。创建函数句柄时,MATLAB在句柄中保存所有与要运行的函数有关的信息。第3章将对函数句柄进行比较详细的介绍。第3章M文件设计变量表达式流程控制函数M文件程序调试与错误处理编程技巧变量变量的作用范围局部变量:局部变量的作用范围仅限于本函数。全局变量:全局变量用global关键字进行声明,其作用范围为整个M文件。变量的存活期 变量的存活期代表变量保持其值的能力。用persistent关键字声明固定变量,可以保持变量的值。表达式数值表示
16、运算符处理字符串表达式数值表示MATLAB使用传统的数值表示方法。对于比较长的数,使用科学计数法,用字母e指定以10为底的幂次。虚数用i或j作为后缀。下面是一些合法的数值表示:3-990.00019.63972381.60210e-206.02252e231i-3.14159j3e5i运算符算术运算符比较运算符逻辑运算符运算符的优先级运算符的优先级按照优先级别,各种运算符有下面的先后次序。小括号()转置(.)、幂(.)、复数共轭转置()、矩阵的幂()一元的加(+)、一元的减(-)、逻辑否()乘(.*)、右除(./)、左除(.)、矩阵乘(*)、矩阵右除(/)、矩阵左除()加(+)、减(-)冒号操
17、作符(:)小于()、小于或等于()、大于或等于(=)、等于(=)、不等于(=)逐元素AND(&)逐元素OR(|)&|处理字符串表达式 处理字符串表达式需要使用eval函数和feval函数。eval函数可以处理包含MATLAB表达式、语句或函数调用的字符串。feval函数与eval函数的区别在于,该函数执行函数而不是MATLAB表达式。注意:注意:尽量少用eval函数,因为使用eval函数的代码通常不好读,不易调试。流程控制条件控制循环控制错误控制程序终止控制条件控制if/elseif语句switch/case语句比较上面两种语句,switch/case语句的可读性更强,并且可以比较不同长度的字
18、符串。循环控制for循环while循环continue命令break命令错误控制trycatch语句进行错误捕获,它把有可能引起异常的语句放在try控制块中,这样当try控制块中statement语句引起异常时,catch控制块就可以捕获它,并针对不同的错误类型,进行不同的处理。程序终止控制return命令能使当前正在运行的函数正常退出,并返回调用它的函数,继续运行。下表比较break,continue和return命令。命令用在何处描述breakfor或while循环它出现时,退出循环,在嵌套的循环中,进入相邻的外层循环continue for或while循环在本循环中跳过剩余的语句,进入本
19、循环的下一次迭代return任意位置它出现时,立即退出函数,进入函数的调用函数中函数主函数子函数匿名函数嵌套函数私有函数重载函数主函数任何M文件中的第1个函数称为主函数。注意:注意:一般使主函数的名称与M文件的相同。如果函数名与文件名不同,必须用文件名调用函数。子函数M文件中可以包含一个以上的函数。文件中除主函数以外的其他函数称为子函数,并且它们只对主函数或同一文件中的其他子函数可见。匿名函数使用匿名函数,可以在不必创建M文件的情况下快速创建简单函数。可以在MATLAB命令行或任何M文件函数或脚本中创建匿名函数。创建匿名函数的语法格式为:fhandle=(arglist)expr 其中,exp
20、r表示函数体,即函数要完成主要工作的代码;arglist为要传递给函数的逗号间隔的输入参数列表。嵌套函数可以在一个函数中嵌套定义一个或多个函数。嵌套函数具有类似下面的形式:functionx=A(p1,p2)functiony=B(p3)endend私有函数 私有函数是private子目录中的函数。它们只对父目录中的函数可见。重载函数有时候同一个函数可以用于多种情况,对应地有不同的输入参数,此时要用到重载函数。比如绘制二维线形图的plot函数就有多种重载形式,下面是其中两种。plot(Y)plot(X1,Y1,.)这两个函数具有相同的函数名,不同的参数。调用plot函数时MATLAB会根据函数
21、的参数自动选择使用。M文件脚本式M文件和函数式M文件M文件的基本结构函数的参数函数句柄脚本式M文件和函数式M文件脚本式M文件和函数式M文件的区别如下表所示。脚本式M文件函数式M文件不接受输入参数,没有返回值可以接受输入参数,可以有返回值基于工作空间中的数据进行操作默认时,文件中参数的作用范围只限于函数内部自动完成需要花费很多时间的多步操作时使用扩展MATLAB语言功能时使用M文件的基本结构 一个完整的函数式M文件应该包括函数定义行、H1行、帮助文本、函数体、注释和函数代码等方面的内容,其中函数定义行和函数代码是必需的。如functionx,y=myfun(a,b,c)函数定义行函数定义行%H1
22、行行用一行文字来综述函数的功能%帮助文本帮助文本用一行或多行文本解释如何使用函数,%在命令行中键入help时可以使用它%函数体函数体一般从第一个空白行后开始%注释注释描述函数的行为,输入输出的类型等,%在命令行中键入help时不会显示这些文本x=prod(a,b);%开始编写函数代码函数代码函数的参数检查输入参数的个数传递参数解包varargin中的内容打包varargout参数列表中的varargin和varargout返回输出参数检查输入参数的个数利用nargin和nargout函数可以确定函数输入参数和输出参数的个数。然后可以根据参数个数用条件语句完成不同的任务,例如functionc=
23、testarg1(a,b)if(nargin=1)c=a.2;elseif(nargin=2)c=a+b;end 给定一个输入参数时,函数计算输入值的平方;给定两个输入参数时,求它们的和。传递参数使用varargin和varargout函数可以传递任意个数的输入参数或者返回任意个数的输出参数给函数。MATLAB把所有指定的输入参数指定到一个单元数组中。每个单元可以包含任意大小或类型的数据。对于输出参数,函数代码必须把它们打包到一个单元数组中,这样,MATLAB就可以把参数返回给调用函数。解包varargin中的内容因为varargin将所有输入参数包含在一个单元数组中,所以有必要使用单元数组索
24、引来提取数据。例如y(n)=vararginn(2);其中,索引表达式n获取varargin的第n个单元。表达式(2)表示单元内容的第二个元素。打包varargout当允许有任意多个输出参数时,必须将所有输出打包到varargout单元数组中。使用nargout确定输出参数的个数。参数列表中的varargin和varargoutvarargin或varargout必须出现在参数列表的最后,即函数调用必须首先指定必要的参数。返回输出参数放在函数定义行中等号左侧的任何参数都是调用函数的返回值。如果传递任何函数可以修改的输入参数,需要把相同的参数作为输出参数,这样,调用函数可以获得更新后的值。函数句
25、柄在MATLAB中,在函数名前用符号创建一个函数句柄。下面的例子为humps函数创建一个函数句柄并将它指定给变量fhandle。fhandle=humps;可以像传递其它变量一样将句柄传递给另一个函数。用MATLAB的feval命令运行函数句柄的目标函数。用函数句柄使用本命令的语法为:feval(fhandle,arg1,arg2,.,argn)程序调试和错误处理用try-catch语句检查错误错误和警告信息用Debug菜单进行调试编程技巧矢量化预分配内存空间程序运行情况监测-Profiler第4章图形绘制创建二维图形创建三维图形创建二维图形线形图、条形图和面积图饼图误差条图散点图直方图对数坐
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 实用教程 经典 课件
限制150内