《通信系统仿真第二章优秀PPT.ppt》由会员分享,可在线阅读,更多相关《通信系统仿真第二章优秀PPT.ppt(107页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数值运算的功能创建矩阵矩阵运算多项式运算线性方程组数值统计线性插值函数优化微分方程的数值解q 定义矩阵:干脆输入法定义矩阵:干脆输入法l 矩阵用方括号矩阵用方括号“”括起括起例:例:A=1 2 3;4 5 6;7 8 9l 矩阵同一行中的元素之间用矩阵同一行中的元素之间用 空格空格 或或 逗号逗号 分隔分隔l 矩阵行与行之间用矩阵行与行之间用 分号分号 分开分开l 干脆输入法中,分号可以用干脆输入法中,分号可以用 回车回车 代替代替例:例:矩阵q Matlab 的操作对象是的操作对象是 矩阵矩阵l :吩咐提示符,不用输入:吩咐提示符,不用输入l 回车回车 :运行所输入的吩咐:运行所输入的吩咐q
2、 矩阵元素可以是任何数值表达式矩阵元素可以是任何数值表达式例:例:x=-1.3,sqrt(3),(1+2+3)*4/5矩阵元素赋值q 矩阵元素的单独赋值矩阵元素的单独赋值例:例:x(5)=abs(x(1)例:例:x(5)=abs(x(6)?MatlabMatlab自动将向量自动将向量 x 的长度扩展到的长度扩展到 5,并将未赋值部分置零。并将未赋值部分置零。q 大矩阵可以把小矩阵作为其元素大矩阵可以把小矩阵作为其元素矩阵元素赋值例:例:A=A;11 12 13在原矩阵的下方加一行在原矩阵的下方加一行如何在原矩阵的右边添加一列?如何在原矩阵的右边添加一列?q 单个元素的引用单个元素的引用例:例:
3、A(2,3)矩阵元素的引用q 多个元素的引用:冒号的特殊用法多个元素的引用:冒号的特殊用法利用小括弧和元素所在的位置利用小括弧和元素所在的位置(下标下标)x(i):向量:向量 x 中的第中的第 i 个元素个元素A(i,j):矩阵:矩阵 A 中的第中的第 i 行,第行,第 j 列元素列元素a:b:c产生一个由产生一个由等差序列等差序列组成的向量;组成的向量;a 是首项,是首项,b 是公是公差,差,c 确定确定最后一项;若最后一项;若 b=1,则,则 b 可以省略。可以省略。例:例:x=1:2:5 y=1:2:6例:例:x=2:1:5 y=2:5例:例:x=3:2:1例:例:x(1:3)A(3,1
4、:3)矩阵元素的引用A(i:j,m:n)表示由矩阵表示由矩阵 A 的第的第 i 到第到第 j 行和第行和第 m 到第到第 n列交叉线上的元素组成的列交叉线上的元素组成的子矩阵子矩阵。可利用冒号提取矩阵可利用冒号提取矩阵 的整行或整列。的整行或整列。例:例:A(1,:)A(:,1:3)A(:,:)Matlab帮助系统q 联机帮助联机帮助l help 显示指定命令的简短使用说明显示指定命令的简短使用说明例:例:help eig help help q 详细使用帮助详细使用帮助l doc 以网页形式以网页形式显示指定命令的帮助页显示指定命令的帮助页例:例:doc eig q 其它相关命令其它相关命令
5、helpdesk、helpwinMatlab 查找吩咐l lookfor 按指定的关键词查询与之相关的吩咐按指定的关键词查询与之相关的吩咐例:例:lookfor inverse l which 显示指定函数所在的目录显示指定函数所在的目录例:例:which eig q 其它相关命令其它相关命令cd、dir、moreq 变量命名原则变量命名原则Matlab 变量u 以以字母开头字母开头u 后面可以跟后面可以跟 字母、数字字母、数字 和和 下划线下划线u 长度长度不超过不超过 63 个字符个字符(6.5 版本以前为版本以前为 19 个个)u 变量名变量名 区分字母的区分字母的 大小大小 写写q M
6、atlab 语句的通常形式语句的通常形式变量变量=表达式表达式表达式是用运算符将有关运算量连接起来的式子,表达式是用运算符将有关运算量连接起来的式子,其结果被赋给赋值号其结果被赋给赋值号“=”左边的变量左边的变量Matlab不须要任何类型声明和维数说明不须要任何类型声明和维数说明,变变量名的第一个字符必需是字母。量名的第一个字符必需是字母。a=1;num_students=25;q 分号和续行符的作用Matlab 变量l 若不想在屏幕上输出结果,可以在语句最终加分号若不想在屏幕上输出结果,可以在语句最终加分号 l 假如语句很长,可用续行符假如语句很长,可用续行符“”(三个点)续行(三个点)续行
7、 续行符的前面最好留一个空格续行符的前面最好留一个空格例:例:q 变量的查询Matlab 变量l who 显示工作空间中的全部变量显示工作空间中的全部变量l whos 查看工作空间中变量的具体属性查看工作空间中变量的具体属性q 系统预定义变量Matlab 变量u pi:圆周率圆周率 ,其值为,其值为 imag(log(-1)u inf,Inf:无穷大无穷大 u nan,NaN:Not-a-Number,一个不定值,如,一个不定值,如 0/0u eps:浮点运算相对精度浮点运算相对精度 q 特殊变量特殊变量 ansu i,j:虚部单位,即虚部单位,即应尽量避开给系统预定义变量重新赋值!应尽量避开
8、给系统预定义变量重新赋值!q 数与算术表达式Matlab 数值运算u Matlab 中的数默认是中的数默认是双精度实数双精度实数,表示方法同,表示方法同 C 语言语言3,-9,0.4,1.603e-12,3.23e+20u 浮点运算的相对误差为浮点运算的相对误差为 epsu 浮点数表示范围为:浮点数表示范围为:10-308 10308u 复数的输入复数的输入l z=3+4i (4 与与 i 之间不能有空格之间不能有空格)l z=3+4*i复数作为矩阵元素输入时,加号两边不能有空格复数作为矩阵元素输入时,加号两边不能有空格!q 数学运算符u+加法加法Matlab 数值运算u-减法减法u*乘法乘法
9、u/和和 除法(右除和左除)除法(右除和左除)u 幂运算幂运算q 吩咐分隔符:逗号和分号q 输出格式输出格式Matlab 的输出u Matlab 以双精度执行全部的运算,运算结果可以在屏以双精度执行全部的运算,运算结果可以在屏幕上输出,同时赋给指定变量;若无指定变量,则系统幕上输出,同时赋给指定变量;若无指定变量,则系统会自动将结果赋给变量会自动将结果赋给变量“ans”u Matlab 中数的输出格式可以通过中数的输出格式可以通过 format 吩咐指定吩咐指定format 只变更变量的输出格式,只变更变量的输出格式,但不会影响变量的值!但不会影响变量的值!各种 format 格式格式解释例f
10、ormat短格式(缺省显示格式),同short3.1416format short短格式(缺省显示格式),只显示5位3.1416format long长格式,双精度数15位,单精度数7位3.14159265358979format short e短格式e方式(科学计数格式)3.1416e+000format long e长格式e方式3.141592653589793e+000format short g短格式g方式3.1416format long g长格式g方式3.14159265358979format compact压缩格式format loose自由格式format+/format b
11、ank /format rat/format hex (详情查看联机帮助)变量的存储q 存储当前工作空间中的变量存储当前工作空间中的变量u save 将全部变量存入文件将全部变量存入文件 matlab.matu save mydata 将全部变量存入指定文件将全部变量存入指定文件 mydata.matq 存储指定的变量存储指定的变量u save mydata.mat 将全部变量存入文件将全部变量存入文件 mydata.matsave 文件名文件名 变量名列表变量名列表例例:save mydata A x z 变量名列表中各变量之间用变量名列表中各变量之间用空格空格分隔分隔变量的读取q 将数据文
12、件中的变量载入当前工作空间将数据文件中的变量载入当前工作空间u load mydata 载入数据文件中的所有变量载入数据文件中的所有变量u load mydata A x 从数据文件中提取指定变量从数据文件中提取指定变量q 清除当前工作空间中的变量清除当前工作空间中的变量u clear 清除当前工作空间中的全部变量清除当前工作空间中的全部变量u clear A x 清除指定的变量清除指定的变量几个小技巧几个小技巧q Matlab 的吩咐记忆功能:上下箭头键的吩咐记忆功能:上下箭头键q 吩咐补全功能:吩咐补全功能:Tab 键键 可以先输入吩咐的前几个字符,再按上下键缩小搜寻范围可以先输入吩咐的前
13、几个字符,再按上下键缩小搜寻范围 q 用用 Esc 键键 删除吩咐行删除吩咐行(1)用线性等间距生成向量矩阵(start:step:end)a=1:2:10a=1 3 5 7 9(2)a=linspace(n1,n2,n)在线性空间上,行矢量的值从n1到n2,数据个数为n,缺省n为100。a=linspace(1,10,10)a=1 2 3 4 5 6 7 8 9 10(3)a=logspace(n1,n2,n)在对数空间上,行矢量的值从10n1到10n2,数据个数为n,缺省n为50。这个指令为建立对数频域轴坐标供应了便利。a=logspace(1,3,3)a=10 100 10002.用用m
14、atlab函数创建矩阵空阵 matlab允许输入空阵,当一项操作无结果时,返回空阵。rand 随机矩阵eye 单位矩阵zeros 全部元素都为0的矩阵ones 全部元素都为1的矩阵常见矩阵生成函数zeros(m,n)生成一个 m 行 n 列的零矩阵,m=n 时可简写为 zeros(n)ones(m,n)生成一个 m 行 n 列的元素全为 1 的矩阵,m=n 时可写为 ones(n)eye(m,n)生成一个主对角线全为 1 的 m 行 n 列矩阵,m=n 时可简写为 eye(n),即为 n 维单位矩阵diag(X)若 X 是矩阵,则 diag(X)为 X 的主对角线向量若 X 是向量,diag(
15、X)产生以 X 为主对角线的对角矩阵tril(A)提取一个矩阵的下三角部分triu(A)提取一个矩阵的上三角部分rand(m,n)产生 01 间均匀分布的随机矩阵 m=n 时简写为 rand(n)randn(m,n)产生均值为0,方差为1的标准正态分布随机矩阵m=n 时简写为 randn(n)其它特殊矩阵生成函数:magic、hilb、pascaleye(2,3)ans=1 0 0 0 1 0zeros(2,3)ans=0 0 0 0 0 0ones(2,3)ans=1 1 1 1 1 1V=5 7 2;A=diag(V)A=5 0 0 0 7 0 0 0 2eye(2)ans=1 0 0 1
16、zeros(2)ans=0 0 0 0ones(2)ans=1 1 1 1假如已知A为方阵,则V=diag(A)可以提取A的对角元素构成向量V。还有伴随矩阵、稀疏矩阵、魔方矩阵、对角矩阵、范德蒙矩阵等的创建。留意:matlab严格区分大小写字母,因此a与A是两个不同的变量。matlab函数名必需小写。例子建立随机矩阵:建立随机矩阵:(1)在区间在区间20,50内匀整分布的内匀整分布的5阶随机矩阶随机矩阵。阵。(2)均值为均值为0.6、方差为、方差为0.1的的5阶正态分布随阶正态分布随机矩阵。机矩阵。吩咐如下:吩咐如下:x=20+(50-20)*rand(5)y=0.6+sqrt(0.1)*ra
17、ndn(5)此外,常用的函数还有此外,常用的函数还有reshape(A,m,n),它,它在矩阵总元素保持不变的前提下,将矩阵在矩阵总元素保持不变的前提下,将矩阵A重新排成重新排成mn的二维矩阵。的二维矩阵。2用于特地学科的特殊矩阵用于特地学科的特殊矩阵(1)魔方矩阵魔方矩阵魔方矩阵有一个好玩的性质,其每行、每魔方矩阵有一个好玩的性质,其每行、每列及两条对角线上的元素和都相等。对于列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由阶魔方阵,其元素由1,2,3,n2共共n2个整数个整数组成。组成。MATLAB供应了求魔方矩阵的函数供应了求魔方矩阵的函数magic(n),其功能是生成一个,其功
18、能是生成一个n阶魔方阵。阶魔方阵。将将101125等等25个数填入一个个数填入一个5行行5列的表格列的表格中,使其每行每列及对角线的和均为中,使其每行每列及对角线的和均为565。M=100+magic(5)(2)范得蒙矩阵范得蒙矩阵范得蒙范得蒙(Vandermonde)矩阵最终一列全为矩阵最终一列全为1,倒数其次列为一个指定的向量,其他各,倒数其次列为一个指定的向量,其他各列是其后列与倒数其次列的点乘积。可以列是其后列与倒数其次列的点乘积。可以用一个指定向量生成一个范得蒙矩阵。在用一个指定向量生成一个范得蒙矩阵。在MATLAB中,函数中,函数vander(V)生成以向量生成以向量V为基础向量的
19、范得蒙矩阵。例如,为基础向量的范得蒙矩阵。例如,A=vander(1;2;3;5)即可得到上述范得蒙矩即可得到上述范得蒙矩阵。阵。(3)希尔伯特矩阵希尔伯特矩阵在在MATLAB中,生成希尔伯特矩阵的函数中,生成希尔伯特矩阵的函数是是hilb(n)。运用一般方法求逆会因为原始数据的微小运用一般方法求逆会因为原始数据的微小扰动而产生不行靠的计算结果。扰动而产生不行靠的计算结果。MATLAB中,有一个特地求希尔伯特矩阵的逆的函中,有一个特地求希尔伯特矩阵的逆的函数数invhilb(n),其功能是求,其功能是求n阶的希尔伯特矩阶的希尔伯特矩阵的逆矩阵。阵的逆矩阵。例例 求求4阶希尔伯特矩阵及其逆矩阵。
20、阶希尔伯特矩阵及其逆矩阵。吩咐如下:吩咐如下:format rat%以有理形式输出以有理形式输出H=hilb(4)H=invhilb(4)(4)托普利兹矩阵托普利兹矩阵托普利兹托普利兹(Toeplitz)矩阵除第一行第一列外,矩阵除第一行第一列外,其他每个元素都与左上角的元素相同。生其他每个元素都与左上角的元素相同。生成托普利兹矩阵的函数是成托普利兹矩阵的函数是toeplitz(x,y),它,它生成一个以生成一个以x为第一列,为第一列,y为第一行的托普为第一行的托普利兹矩阵。这里利兹矩阵。这里x,y均为向量,两者不必等均为向量,两者不必等长。长。toeplitz(x)用向量用向量x生成一个对称
21、的托普生成一个对称的托普利兹矩阵。例如利兹矩阵。例如T=toeplitz(1:6)(5)伴随矩阵伴随矩阵MATLAB生成伴随矩阵的函数是生成伴随矩阵的函数是compan(p),其中,其中p是一个多项式的系数向量,高次幂是一个多项式的系数向量,高次幂系数排在前,低次幂排在后。例如,为了系数排在前,低次幂排在后。例如,为了求多项式的求多项式的x3-7x+6的伴随矩阵,可运用吩的伴随矩阵,可运用吩咐:咐:p=1,0,-7,6;compan(p)(6)帕斯卡矩阵帕斯卡矩阵我们知道,二次项我们知道,二次项(x+y)n绽开后的系数随绽开后的系数随n的增大组成一个三角形表,称为杨辉三角的增大组成一个三角形表
22、,称为杨辉三角形。由杨辉三角形表组成的矩阵称为帕斯形。由杨辉三角形表组成的矩阵称为帕斯卡卡(Pascal)矩阵。函数矩阵。函数pascal(n)生成一个生成一个n阶帕斯卡矩阵。阶帕斯卡矩阵。例子例子例例 求求(x+y)5的绽开式。的绽开式。在在MATLAB吩咐窗口,输入吩咐:吩咐窗口,输入吩咐:pascal(6)矩阵次对角线上的元素矩阵次对角线上的元素1,5,10,10,5,1即为绽即为绽开式的系数。开式的系数。例子产生产生5阶随机方阵阶随机方阵A,其元素为,其元素为10,90区间的随机区间的随机整数,然后推断整数,然后推断A的元素是否能被的元素是否能被3整除。整除。(1)生成生成5阶随机方阵
23、阶随机方阵A。A=fix(90-10+1)*rand(5)+10)(2)推断推断A的元素是否可以被的元素是否可以被3整除。整除。P=rem(A,3)=0其中,其中,rem(A,3)是矩阵是矩阵A的每个元素除以的每个元素除以3的余数的余数矩阵。此时,矩阵。此时,0被扩展为与被扩展为与A同维数的零矩阵,同维数的零矩阵,P是进行等于是进行等于(=)比较的结果矩阵。比较的结果矩阵。建立矩阵建立矩阵A,然后找出大于,然后找出大于4的元素的位置。的元素的位置。(1)建立矩阵建立矩阵A。A=4,-65,-54,0,6;56,0,67,-45,0(2)找出大于找出大于4的元素的位置。的元素的位置。find(A
24、4)先建立先建立55矩阵矩阵A,然后将,然后将A的第一行元素的第一行元素乘以乘以1,其次行乘以,其次行乘以2,第五行乘以,第五行乘以5。A=17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;.11,18,25,2,19;D=diag(1:5);D*A%用用D左乘左乘A,对,对A的每行乘的每行乘以一个指定常数以一个指定常数2三角阵三角阵三角阵又进一步分为上三角阵和下三角阵,三角阵又进一步分为上三角阵和下三角阵,所谓上三角阵,即矩阵的对角线以下的元所谓上三角阵,即矩阵的对角线以下的元素全为素全为0的一种矩阵,而下三角阵则是对角的一种矩阵,而下三角
25、阵则是对角线以上的元素全为线以上的元素全为0的一种矩阵。的一种矩阵。(1)上三角矩阵上三角矩阵求矩阵求矩阵A的上三角阵的的上三角阵的MATLAB函数是函数是triu(A)。triu(A)函数也有另一种形式函数也有另一种形式triu(A,k),其功能是,其功能是求矩阵求矩阵A的第的第k条对角线以上的元素。例如,提取条对角线以上的元素。例如,提取矩阵矩阵A的第的第2条对角线以上的元素,形成新的矩阵条对角线以上的元素,形成新的矩阵B。(2)下三角矩阵下三角矩阵在在MATLAB中,提取矩阵中,提取矩阵A的下三角矩阵的函数的下三角矩阵的函数是是tril(A)和和tril(A,k),其用法与提取上三角矩阵
26、的,其用法与提取上三角矩阵的函数函数triu(A)和和triu(A,k)完全相同。完全相同。2.4.2 矩阵的转置与旋转矩阵的转置与旋转1矩阵的转置矩阵的转置转置运算符是单撇号转置运算符是单撇号()。2矩阵的旋转矩阵的旋转利用函数利用函数rot90(A,k)将矩阵将矩阵A旋转旋转90的的k倍,倍,当当k为为1时可省略。时可省略。3矩阵的左右翻转矩阵的左右翻转对矩阵实施左右翻转是将原矩阵的第一列对矩阵实施左右翻转是将原矩阵的第一列和最终一列调换,其次列和倒数其次列调和最终一列调换,其次列和倒数其次列调换,换,依次类推。,依次类推。MATLAB对矩阵对矩阵A实实施左右翻转的函数是施左右翻转的函数是
27、fliplr(A)。4矩阵的上下翻转矩阵的上下翻转MATLAB对矩阵对矩阵A实施上下翻转的函数是实施上下翻转的函数是flipud(A)。2.4.3 矩阵的逆与伪逆矩阵的逆与伪逆1矩阵的逆矩阵的逆对于一个方阵对于一个方阵A,假如存在一个与其同阶的方阵,假如存在一个与其同阶的方阵B,使得:,使得:AB=BA=I(I为单位矩阵为单位矩阵)则称则称B为为A的逆矩阵,当然,的逆矩阵,当然,A也是也是B的逆矩阵。的逆矩阵。求一个矩阵的逆是一件特别烦琐的工作,简洁出错,但在求一个矩阵的逆是一件特别烦琐的工作,简洁出错,但在MATLAB中,求一个矩阵的逆特别简洁。求方阵中,求一个矩阵的逆特别简洁。求方阵A的逆
28、矩的逆矩阵可调用函数阵可调用函数inv(A)。例例 用求逆矩阵的方法解线性方程组。用求逆矩阵的方法解线性方程组。Ax=b其解为:其解为:x=A-1b2矩阵的伪逆矩阵的伪逆假如矩阵假如矩阵A不是一个方阵,或者不是一个方阵,或者A是一个非满秩的是一个非满秩的方阵时,矩阵方阵时,矩阵A没有逆矩阵,但可以找到一个与没有逆矩阵,但可以找到一个与A的转置矩阵的转置矩阵A同型的矩阵同型的矩阵B,使得:,使得:ABA=ABAB=B此时称矩阵此时称矩阵B为矩阵为矩阵A的伪逆,也称为广义逆矩阵。的伪逆,也称为广义逆矩阵。在在MATLAB中,求一个矩阵伪逆的函数是中,求一个矩阵伪逆的函数是pinv(A)。2.4.4
29、 方阵的行列式方阵的行列式把一个方阵看作一个行列式,并对其按行把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为矩阵所对列式的规则求值,这个值就称为矩阵所对应的行列式的值。在应的行列式的值。在MATLAB中,求方阵中,求方阵A所对应的行列式的值的函数是所对应的行列式的值的函数是det(A)。2.4.5 矩阵的秩与迹矩阵的秩与迹1矩阵的秩矩阵的秩矩阵线性无关的行数与列数称为矩阵的秩。矩阵线性无关的行数与列数称为矩阵的秩。在在MATLAB中,求矩阵秩的函数是中,求矩阵秩的函数是rank(A)。2矩阵的迹矩阵的迹矩阵的迹等于矩阵的对角线元素之和,也矩阵的迹等于矩阵的对角线元素之和,也等
30、于矩阵的特征值之和。在等于矩阵的特征值之和。在MATLAB中,中,求矩阵的迹的函数是求矩阵的迹的函数是trace(A)。2.4.6 向量和矩阵的范数向量和矩阵的范数矩阵或向量的范数用来度量矩阵或向量在矩阵或向量的范数用来度量矩阵或向量在某种意义下的长度。范数有多种方法定义,某种意义下的长度。范数有多种方法定义,其定义不同,范数值也就不同。其定义不同,范数值也就不同。1向量的向量的3种常用范数及其计算函数种常用范数及其计算函数在在MATLAB中,求向量范数的函数为:中,求向量范数的函数为:(1)norm(V)或或norm(V,2):计算向量:计算向量V的的2范数。范数。(2)norm(V,1):
31、计算向量:计算向量V的的1范数。范数。(3)norm(V,inf):计算向量:计算向量V的的范数。范数。2矩阵的范数及其计算函数矩阵的范数及其计算函数MATLAB供应了求供应了求3种矩阵范数的函数,其函数种矩阵范数的函数,其函数调用格式与求向量的范数的函数完全相同。调用格式与求向量的范数的函数完全相同。2.4.7 矩阵的条件数矩阵的条件数在在MATLAB中,计算矩阵中,计算矩阵A的的3种条件数的函数是:种条件数的函数是:(1)cond(A,1)计算计算A的的1范数下的条件数。范数下的条件数。(2)cond(A)或或cond(A,2)计算计算A的的2范数下的条范数下的条件数。件数。(3)cond
32、(A,inf)计算计算A的的 范数下的条件数。范数下的条件数。2.4.8 矩阵的特征值与特征向量矩阵的特征值与特征向量在在MATLAB中,计算矩阵中,计算矩阵A的特征值和特的特征值和特征向量的函数是征向量的函数是eig(A),常用的调用格式有,常用的调用格式有3种:种:(1)E=eig(A):求矩阵:求矩阵A的全部特征值,构的全部特征值,构成向量成向量E。(2)V,D=eig(A):求矩阵:求矩阵A的全部特征值,的全部特征值,构成对角阵构成对角阵D,并求,并求A的特征向量构成的特征向量构成V的的列向量。列向量。(3)V,D=eig(A,nobalance):与第:与第2种格式类种格式类似,但第
33、似,但第2种格式中先对种格式中先对A作相像变换后求作相像变换后求矩阵矩阵A的特征值和特征向量,而格式的特征值和特征向量,而格式3干脆干脆求矩阵求矩阵A的特征值和特征向量。的特征值和特征向量。例例 用求特征值的方法解方程。用求特征值的方法解方程。3x5-7x4+5x2+2x-18=0p=3,-7,0,5,2,-18;A=compan(p);%A的伴随矩阵的伴随矩阵x1=eig(A)%求求A的特征值的特征值x2=roots(p)%干脆求多项式干脆求多项式p的零的零点点2.5 矩阵的超越函数矩阵的超越函数1矩阵平方根矩阵平方根sqrtmsqrtm(A)计算矩阵计算矩阵A的平方根。的平方根。2矩阵对数
34、矩阵对数logmlogm(A)计算矩阵计算矩阵A的自然对数。此函数输的自然对数。此函数输入参数的条件与输出结果间的关系和函数入参数的条件与输出结果间的关系和函数sqrtm(A)完全一样完全一样3矩阵指数矩阵指数expm、expm1、expm2、expm3expm(A)、expm1(A)、expm2(A)、expm3(A)的功能都求矩阵指数的功能都求矩阵指数eA。4一般矩阵函数一般矩阵函数funmfunm(A,fun)用来计算干脆作用于矩阵用来计算干脆作用于矩阵A的的由由fun指定的超越函数值。当指定的超越函数值。当fun取取sqrt时,时,funm(A,sqrt)可以计算矩阵可以计算矩阵A的平
35、方根,的平方根,与与sqrtm(A)的计算结果一样。的计算结果一样。2.6 字符串字符串 在在MATLAB中,字符串是用单撇号括起中,字符串是用单撇号括起来的字符序列。来的字符序列。MATLAB将字符串当作一个行向量,每个将字符串当作一个行向量,每个元素对应一个字符,其标识方法和数值向元素对应一个字符,其标识方法和数值向量相同。也可以建立多行字符串矩阵。量相同。也可以建立多行字符串矩阵。字符串是以字符串是以ASCII码形式存储的。码形式存储的。abs和和double函数都可以用来获得字符串矩阵所对函数都可以用来获得字符串矩阵所对应的应的ASCII码数值矩阵。相反,码数值矩阵。相反,char函数
36、可函数可以把以把ASCII码矩阵转换为字符串矩阵。码矩阵转换为字符串矩阵。例例 建立一个字符串向量,然后对该向量做如建立一个字符串向量,然后对该向量做如下处理:下处理:(1)取第取第15个字符组成的子字符串。个字符组成的子字符串。(2)将字符串倒过来重新排列。将字符串倒过来重新排列。(3)将字符串中的小写字母变成相应的大写将字符串中的小写字母变成相应的大写字母,其余字符不变。字母,其余字符不变。(4)统计字符串中小写字母的个数。统计字符串中小写字母的个数。吩咐如下:吩咐如下:ch=ABc123d4e56Fg9;subch=ch(1:5)%取子字符串取子字符串revch=ch(end:-1:1)
37、%将字符串倒排将字符串倒排k=find(ch=a&ch1的整数的整数3.矩阵乘方 an,ap,pa对于p的其它值,计算将涉及特征值和特征向量,假如p是矩阵,a是标量ap运用特征值和特征向量自乘到p次幂;如a,p都是矩阵,ap则无意义。a=1,2,3;4,5,6;7,8,9;a2 ans=30 36 42 66 81 96 102 126 150当一个方阵有复数特征值或负实特征值时,非整数幂是复数阵。a0.5 ans=0.4498+0.7623i 0.5526+0.2068i 0.6555-0.3487i 1.0185+0.0842i 1.2515+0.0228i 1.4844-0.0385i
38、1.5873-0.5940i 1.9503-0.1611i 2.3134+0.2717ia=1 2;3 4;b=3 5;5 9c=a+b d=a-bc=d=4 7 -2 -3 8 13 -2 -5a*b=13 23;29 51a/b=-0.50 0.50;3.50 1.50ab=-1-1;2 3a3=37 54;81 118a.*b=3 10;15 36a./b=0.33 0.40;0.60 0.44a.b=3.00 2.50;1.67 2.25a.3=1 8;27 64只有维数相同的矩阵才能进行加减运算。留意只有当两个矩阵中前一个矩阵的列数和后一个矩阵的行数相同时,才可以进行乘法运算。ab运
39、算等效于求a*x=b的解;而a/b等效于求x*b=a的解。只有方阵才可以求幂。点运算是两个维数相同矩阵对应元素之间的运算,本书定义为数组运算。inv 矩阵求逆det 行列式的值eig 矩阵的特征值diag 对角矩阵 矩阵转置sqrt 矩阵开方4.矩阵的其它运算 求逆和行列式要求矩阵必需为方阵a=1 2 3;4 5 6;2 3 5;b=inv(a)b=-2.3333 0.3333 1.0000 2.6667 0.3333 -2.0000 -0.6667 -0.3333 1.0000det(a)ans=-3转置:对于实矩阵用(转置:对于实矩阵用()符号或()符号或(.)求转置结果是)求转置结果是一
40、样的;然而对于含复数的矩阵,则(一样的;然而对于含复数的矩阵,则()将同时对)将同时对复数进行共轭处理,而复数进行共轭处理,而(.)则只是将其排列形式进)则只是将其排列形式进行转置。行转置。a=1 2 3;4 5 6a=1 4 2 5 3 6a=1 2 3;4 5 6.a=1 4 2 5 3 6b=1+2i 2-7ib=1.0000-2.0000i 2.0000+7.0000ib=1+2i 2-7i.b=1.0000+2.0000i 2.0000-7.0000i5.矩阵的一些特殊操作矩阵的变维 a=1:12;b=reshape(a,3,4)c=zeros(3,4);c(:)=a(:)矩阵的变向
41、 rot90:旋转;fliplr:上翻;flipud:下翻矩阵的抽取 diag:抽取主对角线;tril:抽取主下三角;triu:抽取主上三角矩阵的扩展关系运算 关系符号意义=小于小于或等于大于大于或等于等于不等于4数组运算数组运算(1)数组的加和减(2)数组的乘和除(3)数组的乘方 数组运算指元素对元素的算术运算,与通常意义上的由符号表示的线性代数矩阵运算不同1.数组加减(.+,.-)a.+b a.-b5.矩阵的数组运算 对应元素相加减(与矩阵加对应元素相加减(与矩阵加减等效)减等效)2.数组乘除(,./,.)ab a,b两数组必需有相同的行 和列两数组相应元素相乘。a=1 2 3;4 5 6
42、;7 8 9;b=2 4 6;1 3 5;7 9 10;a.*bans=2 8 18 4 15 30 49 72 90 a=1 2 3;4 5 6;7 8 9;b=2 4 6;1 3 5;7 9 10;a*bans=25 37 46 55 85 109 85 133 172 a./b=b.aa.b=b./aa./b=b.a 都是a的元素被b的对应元 素除a.b=b./a 都是a的元素被b的对应元 素除例:a=1 2 3;b=4 5 6;c1=a.b;c2=b./ac1=4.0000 2.5000 2.0000c2=4.0000 2.5000 2.0000 给出a,b对应元素间的商.3.数组乘方
43、(.)元素对元素的幂例:a=1 2 3;b=4 5 6;z=a.2z=1.00 4.00 9.00z=a.bz=1.00 32.00 729.00应用举例应用举例1、行列式计算;、行列式计算;2、求解线性方程组;、求解线性方程组;3、解特征值问题、解特征值问题4、矩阵分解、矩阵分解6、矩阵分解、矩阵分解(1)奇异值分解)奇异值分解U,S,V=svd(A)例:a=9 8 6 8可以验证:u*u=Iv*v=Iu*s*v=a求矩阵求矩阵A的奇异值及分解矩阵,满足的奇异值及分解矩阵,满足U*S*V=A,其中,其中U、V矩阵为正交矩矩阵为正交矩阵(阵(U*U=I),),S矩阵为对角矩阵,矩阵为对角矩阵,
44、它的对角元素即它的对角元素即A矩阵的奇异值。矩阵的奇异值。u,s,v=svd(a)u=0.7705 -0.6375 0.6375 0.7705s=15.5765 0 0 1.5408v=0.6907 -0.7231 0.7231 0.6907(2)特征值分解)特征值分解V,D=eig(A)例:a=9 8 6 8v,d=eig(a)v=0.7787 -0.7320 0.6274 0.6813d=15.4462 0 0 1.5538求矩阵求矩阵A的特征向量的特征向量V及特征及特征值值D,满足,满足A*V=V*D。其中。其中D的对角线元素为特征值,的对角线元素为特征值,V的的列为对应的特征向量。假如
45、列为对应的特征向量。假如D=eig(A)则只返回特征值。则只返回特征值。可以验证:A*V=V*D(3)正交分解)正交分解Q,R=qr(A)例:a=9 8 6 8q,r=qr(a)q=-0.8321 -0.5547 -0.5547 0.8321r=-10.8167 -11.0940 0 2.2188将矩阵将矩阵A做正交化分解,使得做正交化分解,使得Q*R=A,其中,其中Q为正交矩阵(其为正交矩阵(其范数为范数为1,指令,指令norm(Q)=1),R为对角化的上三角矩阵。为对角化的上三角矩阵。norm(q)ans=1q*rans=9.0000 8.0000 6.0000 8.0000(4)三角分解
46、)三角分解L,U=lu(A)将将A做对角线分解,使得做对角线分解,使得A=L*U,其中其中L为下三角为下三角矩阵,矩阵,U为上三角矩阵。为上三角矩阵。留意:留意:L事实上是一个事实上是一个“心理上心理上”的下三角矩阵,的下三角矩阵,它事实上是一个置换矩阵它事实上是一个置换矩阵P的逆矩阵与一个真的逆矩阵与一个真正下三角矩阵正下三角矩阵L1(其对角线元素为(其对角线元素为1)的乘积。)的乘积。L1,U1,P=lu(A)例:例:a=1 2 3;4 5 6;7 8 9 比较:比较:l1,u1,p=lu(a)l,u=lu(a)l1=1.00 0 0 0.14 1.00 0 0.57 0.50 1.00u
47、1=7.00 8.00 9.00 0 0.86 1.71 0 0 0.00p=0 0 1 1 0 0 0 1 0l=0.14 1.00 0 0.57 0.50 1.00 1.00 0 0u=7.00 8.00 9.00 0 0.86 1.71 0 0 0.00可以验证:可以验证:u1=u,inv(p)*l1=la=l*up*a=l1*u1matlab语言把多项式表达成一个行向量,该向量中的元素是按多项式降幂排列的。f(x)=anxn+an-1xn-1+a0 可用行向量 p=an an-1 a1+a0表示poly 产生特征多项式系数向量特征多项式确定是n+1维的特征多项式第一个元素确定是1四、多
48、项式运算 例:a=1 2 3;4 5 6;7 8 0;p=poly(a)p=1.00 -6.00 -72.00 -27.00 p是多项式p(x)=x3-6x2-72x-27的matlab描述方法,我们可用:p1=poly2str(p,x)函数文件,显示数学多项式的形式p1=x3-6 x2-72 x-272.roots 求多项式的根a=1 2 3;4 5 6;7 8 0;p=poly(a)p=1.00 -6.00 -72.00 -27.00r=roots(p)r=12.12 -5.73 明显 r是矩阵a的特征值 -0.39当然我们可用poly令其返回多项式形式p2=poly(r)p2=1.00
49、-6.00 -72.00 -27.00matlab规定多项式系数向量用行向量表示,一组根用列向量表示。3.conv,convs多项式乘运算例:a(x)=x2+2x+3;b(x)=4x2+5x+6;c=(x2+2x+3)(4x2+5x+6)a=1 2 3;b=4 5 6;c=conv(a,b)=conv(1 2 3,4 5 6)c=4.00 13.00 28.00 27.00 18.00p=poly2str(c,x)p=4 x4+13 x3+28 x2+27 x+184.deconv多项式除运算a=1 2 3;c=4.00 13.00 28.00 27.00 18.00d=deconv(c,a)
50、d=4.00 5.00 6.00d,r=deconv(c,a)余数余数c除除a后的整数后的整数5.多项式微分matlab供应了polyder函数多项式的微分。吩咐格式:polyder(p):求p的微分polyder(a,b):求多项式a,b乘积的微分p,q=polyder(a,b):求多项式a,b商的微分例:a=1 2 3 4 5;poly2str(a,x)ans=x4+2 x3+3 x2+4 x+5b=polyder(a)b=4 6 6 4poly2str(b,x)ans=4 x3+6 x2+6 x+4五、代数方程组求解matlab中有两种除运算左除和右除。对于方程ax+b,a 为anm矩阵