




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章第一章 MATLAB语言基础语言基础MATLAB简介v 概述 MATLAB是矩阵实验室(MAtrix LABoratory)的简称,是美国MathWorks公司出品的商业数学软件,和Mathematica、Maple并称为三大数学软件。主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域,包括MATLAB和Simulink两大部分v 产生与发展 雏形基于特征计算的程序库EISPACK和线性代数程序库LINPACK 免费软件-MathWorks公司 演变成为一种具有广泛应用前景的全新的计算机高级编程语言v 优势 强大易用的科学计算语言 全面的图形功能
2、独立开放的平台 实用的程序接口 MATLAB窗口MATLAB窗口v 命令窗口(Command Window)命令窗口(Command Window)位于MATLAB默认 桌面的中间,显示命令提示符为“”,可在“”之后输入命令,按下Enter键后MATLAB会立即显示结果并将结果自动赋予变量ans,例如: 3.14*32 ans = 28.2600 当遇到较为复杂的问题时,可以采用给变量赋值的方法,例如:可以用变量r来表示圆的半径,用变量S来表示圆的面积,百分号“%”是MATLAB中的注释符 r=3%圆的半径圆的半径r=3 r = 3 S=3.14*r2%求圆的面积求圆的面积S S = 28.2
3、600在命令窗口输入r=3并按下Enter键后,MATLAB会在命令窗口直接显示这条命令的计算结果,若要禁止显示计算的中间结果,则可以通过分号“;”来实现,例如: r=3; %使用分号禁止显示计算的中间结果使用分号禁止显示计算的中间结果 S=3.14*r2 S = 28.2600MATLAB窗口v 工作空间管理窗口(Workspace) 工作空间是用于储存运算中的各种变量和结果的内存空间,而工作空间窗口则用于显示变量的名称、大小、字节数及数据类型等,我们可以通过工作空间窗口对变量进行观察、编辑、保存和删除等操作。需要注意的是,临时变量不会占用工作空间 变量编辑器三种方式打开变量编辑器用于编辑相
4、应变量 在工作空间管理窗口双击该变量名; 鼠标单击变量名后单击工作空间管理窗口工具栏上的打开图标; 用鼠标选中变量名,单击鼠标右键弹出菜单,然后选择菜单中的相关操作。 MATLAB窗口v 历史命令窗口(Command History) 用于记录用户在命令窗口执行过的命令行。包括已运行过的命令、函数、表达式、使用时间等信息。 在历史命令窗口的命令是逆序排列的,最早的排在最下面,最后的排在最上面 在历史命令窗口可进行命令历史的查找、检查等工作。用鼠标选中历史命令窗口中的命令行,单击右键弹出操作菜单,我们可以选择相应菜单项对这些历史命令进行复制、执行、删除等操作;双击这些命令可使它再次执行。v 当前
5、目录窗口(Current Directory) 用于显示及设置当前工作目录,同时显示当前工作目录下的文件名、文件类型及目录的修改时间等信息 用鼠标选中当前目录窗口下文件,单击右键可以进行打开(Open)、运行(Run File)、重命名(Rename)、删除(Delete)等操作 设置当前目录可以在当前目录窗口上方的输入栏中直接输入,或点击浏览器下拉按钮进行选择。还可以在命令窗口用cd命令进行设置,例如如下命令: cd (D:Work) 可将D盘上的Work目录设为当前工作目录 MATLAB的路径搜索v 什么是路径搜索MATLAB有一个专门用于查找“.m”文件的路径搜索器,MATLAB定义了一
6、系列文件路径的组合,缺省状态下包括当前路径和已安装的全部工具箱的路径。如果调用的函数或文件在搜索路径之外,MATLAB会认为此函数或文件不存在而返回错误信息。v 搜索顺序在工作空间中搜索是否有以该字符串为变量名的变量,有则返回该变量的值;搜索是否有同名的MATLAB内部函数,如果有,执行该内部函数;在当前目录中查找与该字符串同名的M文件,如果有,执行该文件;在搜索目录中查找与该字符串同名的M文件,如果有,执行该文件;如果在搜索目录中存在多个同名函数,则只执行搜索路径中的第一个函数v 编辑搜索路径的常用命令 path%显示所有搜索路径显示所有搜索路径 addpath%增加目录到增加目录到MATL
7、AB搜索路径。搜索路径。 rmpath %删除删除MATLAB搜索路径中的目录搜索路径中的目录 genpath%显示由所有搜索路径连接而成的一个长的字符串显示由所有搜索路径连接而成的一个长的字符串 editpath%进入搜索路径设置对话框进入搜索路径设置对话框 pathtool%同同editpathMATLAB帮助系统v 帮助窗口 该窗口是一个独立的交互式帮助浏览器,如图1-7所示。用户可以在命令窗口中输入helpdesk、helpwin或者doc命令来启动帮助窗口。通过帮助窗口中的帮助主题(Contents)、帮助索引(Index)和联机演示(Demos)可以浏览用户可能需要的内容,而在查询
8、结果(Search Results)中可以查看按用户要求得到的帮助信息列表v help命令 在命令窗口使用help组合命令。当用户知道函数名称想了解其具体用法时,可以在命令窗口使用help命令,调用方法是help 函数名,例如: help invv lookfor命令 在命令窗口使用lookfor组合命令。注意,help 命令要求函数名的精确匹配,而lookfor只要求与每个函数中的总结信息有匹配。所以当用户不知道函数的确切名称时可以使用lookfor命令 ,例如找矩阵求逆函数可以输入: lookfor inversev 模糊查询 用户在命令窗口只须输入命令的前几个字母,然后键入Tab键MAT
9、LAB就会列出所有以这个字母开始的命令。 (学研端注:如果没有输入完全但可以没有多义,按Tab自动补全)MATLAB中的数据类型v 数值型数据 MATLAB的数据通常都是以双精度数值来表示,不区分整数、实数、复数等,占8个字节(64位),其值域约为-1.7e308至1.7e308。同时考虑到一些特殊的应用,MATLAB还引入了无符号的8位整型数据unit8(),其值域为0255。此外还有int8()、int16()、unit16()、unit32()等,每一个类型后面的数字表示其位数。 在MATLAB中复数可以直接输入和计算,虚数单位用i或者j 表示,i=sqrt(-1)在工作空间显示为 0+
10、1.0000i。MATLAB 中复数可以用下面两种方式表达:z=a+b*i或z=r*exp(i*) 例如: a=1+sqrt(3)*i;%复数的两种表示方法复数的两种表示方法 b=2*exp(i*pi/3); m=1 3;5 7+i*2 4;6 8%复数作为矩阵元素的表示方法复数作为矩阵元素的表示方法 n=1+2i 3+4i; 5+6i 7+8i 需要注意的是,当复数的虚部为一个确定的数(而不是变量或者矩阵)时,可以省略系数和虚数单位之间的“*”,即3+i*6可以写成3+6i,但是x+i*y不能写成x+yi;当复数作为矩阵元素复数作为矩阵元素时,复数内不能留有空格,否则可能会被当作两个元素处理
11、而出错。例如k1为一向量,但是k2则是一个矩阵。 k1=3+4i; 5+6i k2=3 +4i;5 +6i MATLAB中的数据类型v 符号型数据 Mathworks公司利用Maple函数库开发了MATLAB的符号数学工具箱(Extended Sybolic Math),可进行解析数学运算,包括积分、微分、求和、多项式运算、求解方程等 符号型数据则是在MATLAB中定义的特殊变量,它以字符串的形式表示,但又不同于普通字符串。其变量、表达式均为符号对象。符号对象使用sym或者syms生成,语法格式为syms arg1 arg2 . arg_props。 通常,可以将函数包含在成对的单引号内,组成
12、符号表达式,也可以在定义了符号变量以后,用符号变量建立符号表达式,为了方便且易于理解,一般推荐第二种方式,例如: syms x y;%利用利用syms生成符号对象生成符号对象 z=sym(z);%利用利用sym生成符号对象生成符号对象 m=sym(m,real);%声明符号对象声明符号对象m为实的为实的 n=sym(n,positive);%声明符号对象声明符号对象n为正的为正的 m=sym(m,unreal);%去掉去掉m的附加属性的附加属性 A=1 x; y z%生成符号矩阵生成符号矩阵 f=sin(x)+cos(x);%建立符号表达式建立符号表达式 findsym(f);%查找符号表达式
13、查找符号表达式f中的所有自由变量中的所有自由变量MATLAB中的数据类型v 字符串型数据 MATLAB作为一种高级语言,字符串运算功能也是很丰富的,字符串(String of character)就是字符数组(Character array),一个字符串是存储在一个行向量中的文本,由单引号括起来(yesinput除外)。在字符串里的每个字符是数组里的一个元素,字符串中空格也是字符,由于字符串是以向量的形式来存储的,因而可以通过它的下标对字符串中的任何一个元素进行访问,例如: s1=MATLAB STRING;%生成字符串生成字符串s1 dim=size(s1)%显示显示s1的维数,为的维数,为
14、113阶矩阵阶矩阵 dim = 13 s2=MATLAB STRING;%生成字符数组生成字符数组s2,与,与s1等价等价 s1(2);%通过下标访问字符串,通过下标访问字符串,ans=AMATLAB中的数据类型v 多维数组 数组也可以嵌套,一个数组的元素可以是另外一个数组,这样就构成了多维数组,图示即为一个三维数组,数组的第一维称为“行”,第二维称为“列”,第三维称为“页”,我们可以通过按页输入的方法构造一个三维数组并进行运算 A=1 2; 1 3; B(:,:,1)=A;%输入矩阵输入矩阵B的第一页的第一页 B(:,:,2)=A2;%输入矩阵输入矩阵B的第二页的第二页 B(:,:,3)=A
15、2;%输入矩阵输入矩阵B的第三页的第三页 C=ones(2,2,3);%矩阵矩阵C为为为为223维全维全1矩阵矩阵 D=C./B%三维矩阵间的三维矩阵间的./运算运算 D(:,:,1) = 1.0000 0.5000 1.0000 0.3333 D(:,:,2) = 0.3333 0.1250 0.2500 0.0909 D(:,:,3) = 0.3333 0.1250 0.2500 0.0909MATLAB中的数据类型v 元胞数组元胞数组可以看做是多维数组的直接扩展,其存储形式类似于矩阵,但元胞数组的元素不一定是数值,可以是MATLAB支持的任意存储类型,并且各元素的类型也可以不尽相同。其元
16、素就被称为“元胞”(cell)。元胞数组也用下标标识,但元胞数组中有元胞元素和元胞元素的内容两个概念,用圆括号表示元胞元素,用大括号来包含元胞元素的内容,cell i,j即表示元胞数组cell的第i行,第j列的存储内容,亦即元胞元素cell (i,j)的内容。一个直接的例子就是在直接赋值的过程中,与在矩阵的定义中使用的中括号不同,元胞数组元素的内容要用大括号来包含,元素之间由逗号隔开 A=2 5;4 2;%矩阵的定义使用的是中括号矩阵的定义使用的是中括号 B=A, 6 9;test,1 6;7 4%元胞数组的定义使用的是大括号元胞数组的定义使用的是大括号 B = %仅显示元胞数组中的存储量类型
17、仅显示元胞数组中的存储量类型 2x2 double 1x2 double test 2x2 double C(1,1)=1 3;5 7;%C(1,1)代表元胞元素,其内容是一矩阵代表元胞元素,其内容是一矩阵 C1,2=2 4;6 8;%C1,2代表代表C(1,2)的内容,为一矩阵的内容,为一矩阵 celldisp(C)%显示元胞数组显示元胞数组C的具体内容的具体内容 C1 = 1 3 5 7 C2 = 2 4 6 8MATLAB中的数据类型v 结构型数组 结构型数组与元胞数组类似,不同之处在于结构型数组利用指针方式传递数据。在结构数组的直接赋值定义过程中,需要指出结构中的属性名,并且以指针操作
18、符“.”来连接结构型数组与属性名,在命令行提示符后输入结构型数组的名称,则可显示其属性以及属性值。例如: student_1.name=lin hong; student_1.stature=182; student_1.weight=79; student_1 student_1 = name: lin hong stature: 182 weight: 79MATLAB语言中的变量v MATLAB中变量区别于其他编程语言的特点MATLAB表达式中可以使用矩阵形式矩阵形式;MATLAB中不需要预先声明变量的类型和维数不需要预先声明变量的类型和维数,MATLAB会根据对新变量的操作创建该变量,
19、确定其类型并为其分配存储空间;对已经存在的变量的赋值操作,MATLAB会以新值代替旧值。如果需要的话,MATLAB可以改变该变量的类型或者为其分配新的存储空间v MATLAB变量的命名规则MATLAB中的变量名由一个字母导引由一个字母导引,后面可以跟字母、数字、下划线等,但不能用空格或者标点符号。例如var_temp、control_input1、state21均是合法变量名,而_output、45time、position等均是非法变量名;变量名不能是MATLAB的保留字,例如for、end、while、if等命令名;MATLAB中的变量名是大小写敏感大小写敏感的,即A和a代表不同的变量;变
20、量名长度不能超过63位(在MATLAB7.8中预先定义了变量名长度最大值namelengthmax为63),超过的部分将被忽略,即如果两个变量名的前63个字符相同,则MATLAB认为其为相同的变量;一些常量也可以作为变量来使用,例如i和j在MATLAB中表示虚数单位,但是也可以作为变量,例如i和j还经常作为循环语句中的循环变量。MATLAB中的常量v 常量的概念 常量是一些在MATLAB中预先定义预先定义好数值的变量,既然其本质是变量本质是变量,就可以对其进行重新赋值,但在编程时,为了避免不必要的麻烦,请尽量避免对这些特定常量的重新赋值。 常量名用法pi圆周率eps机器的浮点运算误差限,2.2
21、204e-016,若|x| A=1 2 3 4 5;%生成行向量,同行元素之间用空格隔开生成行向量,同行元素之间用空格隔开 A=1,2,3,4,5;%生成行向量,同行元素之间用生成行向量,同行元素之间用“,”隔开,与上一语句形式等隔开,与上一语句形式等价价 B=1;2;3;4;5;%生成列向量生成列向量生成幻方矩阵 的下面语句也等价 A=2 9 4; 7 5 3; 6 1 8;%同行元素用空格隔开,行之间用同行元素用空格隔开,行之间用;隔开隔开 A=2,9,4; 7,5,3; 6,1,8;%同行元素用同行元素用,隔开,行之间用隔开,行之间用;隔开隔开 A%显示输入的矩阵显示输入的矩阵A = 2
22、 9 4 7 5 3 6 1 8294753618A矩阵的生成v 冒号表达式产生一个行向量 一般格式是:Vec=start:step:end,其中start为初始值,step为步长,end为终止值,当不能生成向量时返回空,如果不指定step的值,则默认step=1,例如: Vec=0:2:10 Vec = 0 2 4 6 8 10 Vec=1:6%默认默认step=1 Vec = 1 2 3 4 5 6 Vec=0:1:pi%当步长为正数时,最后一个值为不大于当步长为正数时,最后一个值为不大于end的最大值的最大值 Vec = 0 1 2 3 Vec=2:-0.3:1%当步长为负数时,最后一个
23、值为不小于当步长为负数时,最后一个值为不小于end的最小值的最小值 Vec = 2.0000 1.7000 1.4000 1.1000矩阵的生成v linspace()生成线性等间距格式行向量 其调用格式为:linspace(start,end,num) ,其中start和end是生成向量的第一个和最后一个元素,num是元素总数,linspace(a,b,n)与a:(b-a)/(n-1):b等价。 Vec=linspace(0,10,6)%递增生成线性等间距格式行向量递增生成线性等间距格式行向量 Vec = 0 2 4 6 8 10 Vec=linspace(5,0,6)%递减生成线性等间距格
24、式行向量递减生成线性等间距格式行向量 Vec = 5 4 3 2 1 0v logspace()生成等比格式行向量 Vec=logspace(start,end,num)创建从10start开始,到10end结束,有num个元素的对数分隔行向量Vec。num的默认值为50,Vec等价于10. linspace(start,end,num) Vec=logspace(0,4,5) %生成等比格式行向量生成等比格式行向量 Vec = 1 10 100 1000 10000 矩阵的生成v 特殊矩阵的生成函数 ones()函数生成全1矩阵 全1矩阵即元素均为1的矩阵,其中ones(n)生成nn维的全1
25、矩阵,ones(m,n)生成mn维的全1矩阵。ones(m,n,p,.)生成mnp.维全1矩阵。 zeros()函数生成生全0矩阵 全0矩阵即元素均为0的矩阵,其中zeros(n)生成nn维的全0矩阵,zeros(m,n)生成mn维的全0矩阵。zeros(m,n,p,.)生成mnp.维全0矩阵。 eye()函数生成单位阵 单位阵即对角线元素为1,其余元素为0的矩阵。eye(n)生成nn维的单位阵。 rand()函数生成随机矩阵 生成矩阵元素满足在(0,1)区间内的均匀分布 randn()函数生成随机矩阵 矩阵元素满足均值为0,方差为1的标准正态分布矩阵的访问v 向量的访问 向量是有多个有序元素
26、组成的,因而可以直接通过向量的下标来对向量中的元素进行访问和修改,Vec(i)即表示向量Vec中的第i个元素。特别提出的是,可以通过冒号表达式对向量元素进行访问,也可以用中括号方式任意指定多个向量元素进行访问。 Vec=rand(1,6)%生成一个生成一个16的随机行向量的随机行向量 Vec = 0.8147 0.9058 0.1270 0.9134 0.6324 0.0975 Vec(3)%通过下标访问向量的第通过下标访问向量的第3个元素个元素 ans = 0.1270 Vec(5)=0%通过下标修改向量第通过下标修改向量第5个元素的值,赋值为个元素的值,赋值为0 Vec = 0.8147
27、0.9058 0.1270 0.9134 0 0.0975 Vec(2:4)%通过冒号表达式访问向量的第通过冒号表达式访问向量的第24个元素个元素 ans = 0.9058 0.1270 0.9134 Vec(2:2:6)%通过冒号表达式访问向量的第通过冒号表达式访问向量的第2、4、6个元个元素素 ans = 0.9058 0.9134 0.0975 Vec(1 3 4)%通过中括号访问多个指定的向量元素通过中括号访问多个指定的向量元素 ans = 0.8147 0.1270 0.9134 Vec(1 3)=0 0%通过中括号修改多个指定的向量元素的值通过中括号修改多个指定的向量元素的值 Ve
28、c = 0 0.9058 0 0.9134 0 0.0975 Vec(4:end)%end参数表示结尾参数表示结尾 ans = 0.9134 0 0.0975矩阵的访问v 矩阵的访问 矩阵元素的访问一般使用二维下标,即A(i,j)表示A中第i行、第j列的元素 A=4 1 7;2 5 6;3 8 9; %生成一个生成一个33的矩阵的矩阵 A(3,3)%通过下标访问通过下标访问A的第的第3行第行第3列的元素列的元素 ans = 9 A(3,2)=0%通过下标修改通过下标修改A的第的第3行第行第2列的元素列的元素 A = 4 1 7 2 5 6 3 0 9 矩阵的一维下标以列优先,不如用二维下标来的
29、直观,对于mn维矩阵A,对于同一个元素,A(p,q)和A(i)中的参数存在如下关系: 由二维下标转化为一维下标 i=m(q-1)+p 由一维下标转化为二维下标 p=mod(i,m) , q=fix(i/m)+1, 矩阵的拆分 v 利用冒号表达式获得子矩阵 A(:,j)表示取A的第j列全部元素;A(i,:)表示取A第i行的全部元素;A(i:i+m,:)表示取A矩阵第ii+m行的全部元素;A(:,k:k+m)表示取A矩阵第kk+m列的全部元素;A(i:i+m,k:k+m)表示取A矩阵第ii+m行内,并在第kk+m列中的所有元素 A=randn(3,3)%生成生成33的随机矩阵的随机矩阵 A = -
30、0.4336 2.7694 0.7254 0.3426 -1.3499 -0.0631 3.5784 3.0349 0.7147 A(2,:) %A(2,:)表示表示A第第2行的全部元素行的全部元素 ans = 0.3426 -1.3499 -0.0631 A(:,3) %A(:,3)表示表示A的第的第3列全部元素列全部元素 ans = 0.7254 -0.0631 0.7147 A(2:3,:) %A(2:3,:)表示表示A的第的第23行的全部元素行的全部元素 ans = 0.3426 -1.3499 -0.0631 3.5784 3.0349 0.7147 A(:,1:2) %A(:,1:
31、2)表示表示A的第的第12列的全部元素列的全部元素 ans = -0.4336 2.7694 0.3426 -1.3499 3.5784 3.0349 A(2:3,1:2) %A(2:3,1:2)表示表示A的第的第23行内,并在第行内,并在第12%列中的所有元素列中的所有元素 ans = 0.3426 -1.3499 3.5784 3.0349 A(1:2,2:end)%A(1:2,2:end)表示表示A的第的第12行内,并在第行内,并在第2最后一列最后一列(第第3列列)中的所有元素中的所有元素 ans = 2.7694 0.7254 -1.3499 -0.0631矩阵的拆分v 利用一般向量和
32、end运算符来表示矩阵下标从而获得子矩阵 A(1:2,2:end) %A(1:2,2:end)表示表示A的第的第12行内,并在第行内,并在第2第第3列中的所有元素列中的所有元素ans = 2.7694 0.7254 -1.3499 -0.0631v 通过中括号方式对矩阵元素进行重排,获得新矩阵 F=A(1,1,2,:)%通过中括号复制通过中括号复制A的第的第1行行2次,第次,第2行行1次次F = -0.4336 2.7694 0.7254 -0.4336 2.7694 0.7254 0.3426 -1.3499 -0.0631 B=eye(3)%生成生成33阶单位阵阶单位阵BB = 1 0 0
33、 0 1 0 0 0 1 A(:,1 3)=B(:,2:3)%将将A的第的第1、3行用行用B的第的第2行到第行到第3行取代行取代A = 0 2.7694 0 1.0000 -1.3499 0 0 3.0349 1.0000矩阵的抽取v 矩阵抽取的函数 可以通过MATLAB中提供的函数的对矩阵进行抽取,其中diag是抽取矩阵主对角线元素,tril是抽取矩阵的主下三角元素,triu是抽取矩阵主上三角元素 A=1 2 3;4 5 6;7 8 9 A = 1 2 3 4 5 6 7 8 9 diag(A)%抽取矩阵抽取矩阵A的主对角线元素的主对角线元素 ans = 1 5 9 tril(A)%抽取矩阵
34、抽取矩阵A的主下三角元素的主下三角元素 ans = 1 0 0 4 5 0 7 8 9 triu(A)%抽取矩阵抽取矩阵A的主上三角元素的主上三角元素 ans = 1 2 3 0 5 6 0 0 9矩阵的扩展v 通过把矩阵B的子块赋值为A来扩展矩阵A 通过把矩阵B的子块赋值为A来扩展矩阵A,假设A为mn维矩阵,一般的命令格式为:B(r1:r2,c1:c2)=A,且需注意维数一致,即r2-r1+1=m且c2-c1+1=n。对于B中原先并不存在的元素,MATLAB将自动补0 A=1 3 5;2 4 6 A = 1 3 5 2 4 6 B(2:3,2:4)=A%将将A矩阵扩充,使得矩阵扩充,使得A成
35、为成为B的一子的一子 块块 B = 0 0 0 0 0 1 3 5 0 2 4 6矩阵的连接v 横向连接 设A为mn1维矩阵、B是mn2维矩阵,注意其行数相同,则我们将矩阵A、B按行连接成m(n1+n2)维的矩阵C,可以写成C=A,Bv 纵向连接 设A为m1n维矩阵、B为m2n维矩阵,注意其列数相同,则我们将矩阵A、B纵向连接成(m1+ m2)n维的矩阵C,可以写成C=A;B %横向连接横向连接 A=1 3 2; 4 3 2 A = 1 3 2 4 3 2 B=1 7;5 6 B = 1 7 5 6 C=A,B C = 1 3 2 1 7 4 3 2 5 6%纵向连接纵向连接 A=3 5A =
36、 3 5 B=7 4;3 6B = 7 4 3 6 C=A;BC = 3 5 7 4 3 6符号运算v 符号表达式的化简 v 因式分解 v 符号微积分 符号极限 符号微分 符号积分符号表达式的化简v 符号化简的函数 假设符号表达式为f,MATLAB提供的对符号表达式化简的函数有: simplify( f ) 应用函数规则对f进行化简。 simple( f ) 调用相关函数对表达式进行综合化简,并显示化简过程 例如化简 syms x y; f=(x2+y2)2+(x2-y2)2+sin(x)2+cos(x)2; simplify(f) ans = 2*x4 + 2*y4 + 122 222 22
37、2()()si ncosfxyxyxx=+-+符号表达式的因式分解v 符号表达式的因式分解函数为factor( f ), 其中f为一个符号多项式 syms x; f=x3-1;%生成符号表达式生成符号表达式f=x3-1 f1=factor(f)%对对f=x3-1进行因式分解,结果存入进行因式分解,结果存入f1 f1 = (x - 1)*(x2 + x + 1)符号极限v 函数调用方法 limit(f,x,a) 计算f在xa条件下的极限 limit(f,a) 计算f中由默认自变量趋向于a条件下的极限 limit(f) 计算f在默认自变量趋向于0条件下的极限 limit(f,x,a,right)
38、和limit(f,x,a,left) 计算f在xa条件下的右极限和左极限例如求取符号表达式 和 的极限值 syms x a; r1=limit(sin(x)/x)%求符号表达式求符号表达式 的极限值的极限值r1 =1 f=(1+a/x)x; r2=limit(f,x,inf,left)%求符号表达式求符号表达式 的极限值的极限值r2 =exp(a)0si n( )l i mxxx_l i m(1)xxax+0si n( )l i mxxx_l i m(1)xxax+符号微分v 函数调用方法 diff(f)求f对于默认自变量的微分 diff(f,x)求f对于自变量x的微分 diff(f,n)求f
39、对于默认自变量的n次微分例如求取符号表达式 的一次微分和二次微分 syms x f=exp(x)*sin(x); r1=diff(f)%求符号表达式求符号表达式f的一次微分的一次微分 r1 = exp(x)*cos(x) + exp(x)*sin(x) r2=diff(f,2) %求符号表达式求符号表达式f的二次微分的二次微分 r2 = 2*exp(x)*cos(x)si nxfex=符号积分v 函数调用方法 int(f) 求f对于默认自变量的不定积分 int(f,x) 求f对于自变量x的不定积分 int(f,a,b)求f对于默认自变量从a到b的定积分例如求不定积分 和定积分 syms x;
40、f1=-2*x/(1+x2)2; f2=x*log(1+x); r1=int(f1)%求不定积分求不定积分 r2=int(f2,0,1)%求定积分求定积分r1 =1/(x2 + 1)r2 =1/42 22(1)xdxx-+10(1l n )xx dx+关系与逻辑运算 v 关系运算 MATLAB中的关系运算符有:(小于)、(大于)、=(大于或等于,不小于)、=(等于)、=(不等于)。关系运算符的运算法则为:若关系成立,关系表达式结果为1,否则为0。v 逻辑运算 MATLAB中的逻辑运算符有:&(与)、|(或)、(非)。0 的逻辑量为“假”,而任意非零数的逻辑量为“真”。逻辑运算的运算法则
41、为:设参与逻辑运算的是两个标量为a和b,那么,对于a&b,a、b全为非零时,运算结果为1,否则为0。对于a|b,a、b中只要有一个非零,运算结果为1。对于a,当a是零时,运算结果为1;当a非零时,运算结果为0。逻辑运算真值表如表所示。aba&ba|ba00001010111001011110矩阵运算v 矩阵的代数运算 矩阵基本运算 矩阵的点运算 v 矩阵的关系与逻辑运算 v 矩阵的数据变换 矩阵的变维 矩阵的变向 v 矩阵分析 矩阵的行列式运算 矩阵的秩运算 矩阵的求逆运算 矩阵的特征值和特征向量运算 矩阵的迹运算 矩阵的基本运算v 矩阵的加减 若A和B维数相同维数相同,则可由
42、A+B和A-B实现矩阵的加减运算,即将A和B矩阵的对应元素相加减。若参与运算的两矩阵之一为标量,则将标量与矩阵的所有元素分别进行加减操作。 A = 1 2; 3 4;%生成生成22维矩阵维矩阵A A+2%矩阵与标量相加,将标量与矩阵的所有元素相加矩阵与标量相加,将标量与矩阵的所有元素相加 ans = 3 4 5 6 B = 1 0; 0 1;%生成生成22维单位阵维单位阵B A+B%矩阵加法,对应元素相加矩阵加法,对应元素相加 ans = 2 2 3 5 A-B%矩阵减法,对应元素相减矩阵减法,对应元素相减 ans = 0 2 3 3矩阵的基本运算v 矩阵的乘法若A为mn维矩阵,B为np维矩阵
43、,注意矩阵A的列数等于矩阵的列数等于矩阵B的行数的行数,则可以由C=A*B实现矩阵的乘法,结果为mp维矩阵。标量可与任何矩阵相乘。v 矩阵的除法在MATLAB中,有两种矩阵除法运算:左除和右除/。如果A矩阵是非奇异方阵,即A有逆矩阵,则可以由AB和B/A实现上述两种运算。AB等价于inv(A)*B,亦即方程A *x = B的解;B/A等价于B *inv(A),亦即方程x*A = B的解。对于含有标量的运算,两种除法运算的结果相同。对于矩阵来说,一般ABB/A A = 1 2; 3 4; B = 1 0; 0 1; A*B%矩阵乘法,由于矩阵乘法,由于B是单位阵,故仍为是单位阵,故仍为A ans
44、 = 1 2 3 4 A/B%矩阵右除,结果即方程矩阵右除,结果即方程x*B = A的解的解 A*inv(B) ans = 1 2 3 4 AB%矩阵左除,结果即方程矩阵左除,结果即方程A*x = B的解的解 inv(A)*B ans = -2.0000 1.0000 1.5000 -0.5000矩阵的点运算v 概念 点运算符有.*(点乘)、./(点右除)、.(点左除)、.(点乘方)、.(点转置)。两个矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维数相同维数相同 A=1 2;3 4; B=5 6;7 8; A.*B%.*:A和和B对应元素相乘,注意和对应元素相乘,注意和A*B的区
45、别的区别 ans = 5 12 21 32 A./B%./:A和和B对应元素相除,注意和对应元素相除,注意和A/B的区别的区别 ans = 0.2000 0.3333 0.4286 0.5000 A.3%.: 对应元素和标量的乘方对应元素和标量的乘方 ans = 1 8 27 64 A.A%.: 对应矩阵元素之间的乘方对应矩阵元素之间的乘方 ans = 1 4 27 256 A.%.: 非共轭转置,注意非共轭转置,注意.与与的区别,的区别,为共轭转置为共轭转置 ans = 1 3 2 4矩阵的关系与逻辑运算v 运算规则若参与关系与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量
46、规则逐个进行比较或运算。最终运算结果是一个与原矩阵同维的矩阵,其元素由1或0组成若参与关系与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行比较或运算。最终运算结果是一个与矩阵同维的矩阵,其元素由1或0组成 A=1 3;6 9;B=4 2;0 7;A=B%同维矩阵的关系运算同维矩阵的关系运算 ans = 0 1 1 1 a=5;A=2 5;6 1;a=A%标量与矩阵的关系运算标量与矩阵的关系运算 ans = 0 1 0 0 A=4 3;0 1; B=1 0;2 3; A|B%同维矩阵的逻辑或运算同维矩阵的逻辑或运算 ans = 1 1 1 1 a=2;
47、A=0 1;3 2;a&A%标量与矩阵的逻辑与运算标量与矩阵的逻辑与运算 ans = 0 1 1 1矩阵的变维 v 变维的方式 reshape命令可以实现矩阵的变维,该命令将矩阵已有元素按照用户指定的方式生成新的矩阵,例如B=reshape(A,m,n)命令将生成矩阵B,B为mn维矩阵,且B的元素按列从A中抽取,如果A的元素少于mn,则MATLAB返回错误信息。 另一种变维的方式是首先定义矩阵的结构,然后将已有的元素填充的新定义的矩阵中去,这里元素的填充方式仍然是按照列的方式 A=1:6%生成生成16维的行向量维的行向量 B=reshape(A,2,3)%将行向量的元素值重构为维矩阵将
48、行向量的元素值重构为维矩阵 B = 1 3 5 2 4 6 C=zeros(3,2); C(:)=B(:)%将将23维矩阵重构为维矩阵重构为32维矩阵维矩阵 C = 1 4 2 5 3 6矩阵的变向v 矩阵的转置 转置运算符是单撇号(),矩阵A的转置在MATLAB中用A来表示,如果A是复数矩阵,则A为A的共轭转置矩阵,而非共轭转置矩阵可用A.来求得 A=1 2;3 4; A%实矩阵的转置实矩阵的转置 ans = 1 3 2 4 B=1+i 2;1 i; B%复矩阵的共轭转置复矩阵的共轭转置 ans = 1.0000 - 1.0000i 1.0000 2.0000 0 - 1.0000i B.%
49、复矩阵的非共轭转置复矩阵的非共轭转置 ans = 1.0000 + 1.0000i 1.0000 2.0000 0 + 1.0000i矩阵的变向v 矩阵的旋转 rot90(A,k)将矩阵A旋转90的k倍,k默认值为1;fliplr(A)对矩阵A实施左右翻转;flipud(A)对矩阵A实施上下翻转 A=1 2 3;4 5 6;7 8 9A = 1 2 3 4 5 6 7 8 9 rot90(A)%将矩阵将矩阵A旋转旋转90ans = 3 6 9 2 5 8 1 4 7 fliplr(A)%将矩阵将矩阵A左右翻转左右翻转ans = 3 2 1 6 5 4 9 8 7 flipud(A)%将矩阵将矩
50、阵A上下翻转上下翻转ans = 7 8 9 4 5 6 1 2 3矩阵分析v 矩阵的行列式运算 对一个方阵方阵可以通过det命令求矩阵的行列式,若A为数值矩阵,则得出数值计算结果,若A为符号矩阵,则得出解析解。例如: A=magic(3) A = 8 1 6 3 5 7 4 9 2 det(A)%数值矩阵(三阶幻方矩阵)的行列式计算数值矩阵(三阶幻方矩阵)的行列式计算 ans = -360 syms a b c d; A=a b;c d A = a, b c, d det(A) %符号矩阵的行列式计算符号矩阵的行列式计算 ans = a*d - b*c矩阵分析v 矩阵的秩运算 矩阵的行向量(或
51、者列向量)中的最大线性无关组的个数称为矩阵的秩。在MATLAB中,求矩阵秩的函数是rank(A)。 A=1 2 3;2 3 4;3 6 7; %3行元素均线性无关行元素均线性无关 rank(A) ans = 3 B=1 2 3;4 5 6;B(3,:)=2*B(1,:)+3*B(2,:) %第第3行为前两行的线性组合行为前两行的线性组合 B = 1 2 3 4 5 6 14 19 24 rank(B) ans = 2 C=ones(3) rank(C) ans = 1矩阵分析v 矩阵的求逆运算 若矩阵A为方阵且满秩方阵且满秩,且存在一个与其同阶的方阵B,使得:AB=BA=I (I为单位矩阵)
52、则称A为B互为逆矩阵。求方阵A的逆矩阵可调用函数inv(A) A=magic(3)%满秩方阵的逆满秩方阵的逆 A = 8 1 6 3 5 7 4 9 2 inv(A) ans = 0.1472 -0.1444 0.0639 -0.0611 0.0222 0.1056 -0.0194 0.1889 -0.1028 若矩阵A为非方阵非方阵或非满秩的方阵非满秩的方阵时,矩阵A没有逆矩阵,但可以找到一个与A的转置矩阵A同型的矩阵B,使得:ABA=A,BAB=B, 此时称矩阵B为矩阵A的伪逆,也称为广义逆矩阵。求一个矩阵伪逆的函数是pinv(A) A=1 2;4 5;6 7;pinv(A) %非方阵的广
53、义逆非方阵的广义逆 ans = -1.3158 -0.2105 0.5263 1.1053 0.2368 -0.3421 B=1 2 3;4 5 6;5 7 9;pinv(B)%非满秩矩阵的广义逆非满秩矩阵的广义逆 ans = -0.7778 0.6111 -0.1667 -0.1111 0.1111 -0.0000 0.5556 -0.3889 0.1667矩阵分析v 矩阵的特征值和特征向量运算 对矩阵A而言,满足PA()=det(I-A)=0的根为矩阵A的特征值。满足iv=Av的向量v为矩阵A关于特征值i的特征向量,PA()称为矩阵A的特征多项式。矩阵的特征值和特征向量可以调用函数eig(
54、)求得。调用格式如下: E=eig(A):求矩阵A的全部特征值,构成向量E V,D=eig(A):输出参数D为对角阵,其对角线上的元素为矩阵A的特征值,每个特征值对应的特征向量即为矩阵V的对应列,且特征向量均进行模方归一化处理 V,D=eig(A,nobalance):与第2种格式类似,只是不进行模方归一化处理 A=magic(3);V,D=eig(A)%求三阶幻方矩阵的特征值和特征向量求三阶幻方矩阵的特征值和特征向量V =%特征向量特征向量 -0.5774 -0.8131 -0.3416 -0.5774 0.4714 -0.4714 -0.5774 0.3416 0.8131D =%特征值特
55、征值 15.0000 0 0 0 4.8990 0 0 0 -4.8990矩阵分析v 矩阵的迹运算 若矩阵A为方阵方阵,则矩阵A的迹即为该矩阵对角线上各元素的和。矩阵的迹和该矩阵的特征值之和是相同的。在MATLAB中求矩阵A的迹的函数为trace(A) A=magic(3)%生成三阶幻方矩阵生成三阶幻方矩阵A A = 8 1 6 3 5 7 4 9 2 trace(A)%求求A的迹的迹 ans = 15 v=eig(A)%验证矩阵验证矩阵A的迹与其特征值的相等的迹与其特征值的相等 v = 15.0000 4.8990 -4.8990 sum_of_eig_A=v(1)+v(2)+v(3) su
56、m_of_eig_A = 15.0000MATLAB中的图形功能v 概述 MATLAB在绘图方面的功能比较全面,这里我们介绍如何实现简单的二维、三维图形的可视化v 绘图步骤 准备绘图数据,例如对于输入输出有对应关系的图形,就是确定函数关系和自变量的取值范围 调用绘图函数 定制图形的输出,例如线形和标记特性,坐标轴的设置、标记符号、图例等绘制二维图形的fplot函数v 调用方法 该函数将自动生成绘图时的自变量的步长间隔,即绘图的点数,为用户产生尽可能精确的的图象。调用fplot的形式如fplot(fun, x1, x2),该命令作出函数fun在定义域x1, x2上的函数图 例如绘制 在-2,2上
57、的图像可以在命令窗口输入 fplot(exp(sinx),-2, 2);si n( )xf xe=绘制二维图形的plot函数v 当具有一个输入参数时,调用格式为plot(y) 若y为实向量,则以其向量索引为横坐标,以y向量的元素为纵坐标来绘制图形 例如下面命令绘制了一个行向量的图形如图1所示 y=rand(1,100);%生成生成1100的实行向量的实行向量 plot(y)%绘制绘制y向量向量(向量索引,向量值向量索引,向量值)的图形(如图的图形(如图1所示)所示) 若y为复向量,则以向量实部为横坐标,向量虚部作为纵坐标来绘制二维图形 例如构造一维复向量y绘图如图2所示 x=-2*pi:pi/
58、100:2*pi; y=sin(x)+cos(x).*i; %生成复向量生成复向量 plot(y)%绘制绘制y向量向量(实部,虚部实部,虚部)的图形的图形图1图2绘制二维图形的plot函数v 当具有二个输入参数时,调用格式为plot(x,y) 一般情况下,我们在绘图时采用自变量和函数值之间的函数关系,且采用自定义的步长,此时plot函数将有两个输入参数:自变量和函数值,这两者将是两个同长度的向量,为了图形的精确性,需要选择合适的步长进行绘制 例如绘制函数 在-2,2上的图像,我们选择步长为0.01 x=-2:0.01:2;%定义域和步长定义域和步长 y=exp(-abs(x).*sin(2*x
59、);%函数关系,注意用的是函数关系,注意用的是.* plot(x,y);%绘制图形绘制图形( )si n(2 )xf xex-=绘制二维图形的plot函数v 同一坐标内绘制多个函数的图象 按照图形横坐标和纵坐标的关系依次排列作为plot函数的参数 例如,要作出函数 及其微分函数 在同一坐标轴内的图形,定义域为0,2 x=0:pi/100:2*pi; y1=sin(2*x)./exp(x); y2=(2*cos(2*x)./exp(x)-sin(2*x)./exp(x); plot(x,y1,x,y2);( )si n(2 )xf xex-=( )2cos(2 )si n(2 )xxdf xex
60、exdx-=-绘制二维图形的plot函数v 图形的叠放 在进行一次plot操作之后,若再进行一次plot操作,则前一次的图形将会被覆盖。在这种情况下,若要实现多个图形的叠放,可以使用hold函数。例如首先绘制y1=sin(x)在-2, 2上的图像,然后再绘制y2=cos(x)的图像 x=-2*pi:pi/100:2*pi; y1=sin(x);y2=cos(x); plot(x,y1);hold on;%绘制绘制y1,并,并hold on允许图像叠放允许图像叠放 plot(x,y2);hold off;%在在y1上绘制上绘制y2之后取消允许图像叠放之后取消允许图像叠放图形定制v 添加标注 添加标题标注的命令为Title(t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 未来出行新技术考试问题及答案
- 电商平台用户分析试题及答案
- 英华书院面试题及答案
- 幼儿园加减法游戏试题及答案
- 基于2025年工业互联网平台的安全多方计算在智慧园区安全防护中的应用报告
- 河南高中理综试题及答案
- 天然气水合物(可燃冰)开采技术对海洋生态环境保护的贡献报告
- 时尚操控测试题及答案
- 教育培训机构品牌建设与市场推广策略在实体教育机构市场的应用研究
- 教育教学反思与能力提升探究试题及答案
- 景区安全生产管理规章制度大全
- 2025届湖北武汉市华中师大一附中高考英语押题试卷含答案
- 钓场出租合同协议
- 骨科病人术后疼痛护理
- 2025云南省安全员《A证》考试题库及答案
- 深基坑开挖应急预案1
- 瓷砖委托加工协议书范本
- 医养结合机构内老人在养老区和医疗区之间床位转换解读
- 2025年春初中数学七年级下册苏科版上课课件 11.2 一元一次不等式的概念
- 2025年N1叉车司机考试试题(附答案)
- 大数据与人工智能营销(南昌大学)知到智慧树章节答案
评论
0/150
提交评论