版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 matlab中的矩阵及其运算 矩阵是数学中一个十分重要的概念,其应用能够十分广泛,matlab中最基本最重要的功能就是进行矩阵运算,其所有数值功能都已矩阵为基本单元来实现,掌握matlab中的矩阵运算是十分重要的。关键词:matlab 矩阵 特殊矩阵 一、矩阵的生成1、矩阵生成有多种方式,通常使用的有四种:(1) 在命令窗口中直接输入矩阵(2) 通过语句和函数产生矩阵(3) 在m文件中建立矩阵(4) 从外部的数据文件中导入矩阵其中第一种是最简单常用的创建数值矩阵的方法,较适合创建较小的简单矩阵。把矩阵的元素直接排列到方括号中,每行内元素用空格或逗号相隔,行与行之间的内容用分号相隔。如: ma
2、trix=1,1,1,1;2,2,2,2;3,3,3,3;4,4,4,4 %逗号形式相隔matrix = 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 matrix=1 1 1 1;2 2 2 2 ;3 3 3 3;4 4 4 4 %采用空格形式相隔matrix = 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 42、特殊矩阵的生成1、 零矩阵和全1矩阵 零矩阵指各个元素都为零的矩阵。(1) a=zeros(m,n)命令中,a为要生成的零矩阵,m和n分别为生成矩阵的行和列。(2) 若存在已知矩阵b,要生成与b维数相同的矩阵,可以使用命令a=zeros(size(
3、b)。(3) 要生成方阵时,可使用命令a=zeros(n)来生成n阶方针。全1矩阵用ones函数实现。 a=zeros(4,5)a = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0b=1 2 3 4 5 ;2 3 4 5 6 ;9 8 7 6 5 ;8 7 6 5 4b = 1 2 3 4 5 2 3 4 5 6 9 8 7 6 5 8 7 6 5 4a=zeros(size(b)a = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0a=zeros(5)a = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4、0 0 0 0 0 0 0 0c=ones(5,6)c = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1c=ones(3)c = 1 1 1 1 1 1 1 1 12、单位矩阵的生成(1) a=eye(m,n)命令,可生成单位矩阵,m和n分别为生成单位矩阵的行和列。(2) 若存在已知矩阵b,要生成一个与b维数相同的单位矩阵,可以使用命令a=eye(size(b)。(3) 也可以使用a=eye(n)来生成n阶方阵。 a=eye(4,5)a = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0a
5、=eye(size(b) %b与上例相同a = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0a=eye(4)a = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 13对角矩阵的生成对角矩阵指的是对角线上的元素为任意数,其它元素为0的矩阵。(1) a=diag(v,k)命令中,v为某个向量,k为向量v偏离主对角线的列数。k=0时表示 v为主对角线;k0的数时表示v在主对角线上;k0表示矩阵的主对角线k列以上的部分;k0或n=2除外。magic(2)ans = 1 3 4 2magic(3)ans = 8 1 6 3 5 7 4 9 2magic(4
6、)ans = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 17、hilbert矩阵和反hilbert矩阵的生成hilbert矩阵是有名的病态矩阵,它的第i行第j列的元素值为1/(i+j-1)。(1) hilb(n)命令生成n阶的hilbert矩阵。(2) invhilb(n)命令生成n阶反hilbert矩阵。a=hilb(5)a = 1.0000 0.5000 0.3333 0.2500 0.2000 0.5000 0.3333 0.2500 0.2000 0.1667 0.3333 0.2500 0.2000 0.1667 0.1429 0.2500 0.200
7、0 0.1667 0.1429 0.12500.2000 0.1667 0.1429 0.1250 0.1111b=invhilb(5)b = 25 -300 1050 -1400 630 -300 4800 -18900 26880 -12600 1050 -18900 79380 -117600 56700 -1400 26880 -117600 179200 -88200 630 -12600 56700 -88200 44100c=a*bc = 1.0000 0 0 0 0 0 1.0000 0 0 0 0 0 1.0000 -0.0000 0 0 0 0 1.0000 0 0 0 0
8、 0 1.00008、hadamard矩阵hadamard矩阵为元素1或-1组成,并且满足条件h*h=n*i, hadamard矩阵的维数为n,i为n阶单位矩阵,hadamard矩阵在组合数学,数值分析和信号处理方面都有广泛的应用。与要注意的是,当n=1时,hadamard矩阵就是1,当n=2时,hadamard的维数n有一定的要求,即n、n/12或n/20是2的正整数次幂。hadamard(8)ans = 1 1 1 1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -
9、1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1hadamard(6)? error using = hadamardn must be an integer and n, n/12 or n/20 must be a power of 2.9、hankel矩阵hankel矩阵是针对于一个向量c或者两个向量c或r,而生成的一个对称矩阵。矩阵中各元素满足如下规律:(1)当只有一个向量c时,h=hankel(c):以向量c作为hankel矩阵的第一列;反对角线上的各元素相等;主反对角线下方元素为0。(3) 当有两个向量c和r
10、时,h=hankel(c,r):以向量c作为hankel矩阵的的第一列;以向量r作为矩阵的第一行;当c的第一个元素不同于r的第一个元素时,取c的第一个元素作为主反对角上的元素。 c=5 6 7 8 9 10;r=6 7 8 9 10 11;h=hankel(c)h = 5 6 7 8 9 10 6 7 8 9 10 0 7 8 9 10 0 0 8 9 10 0 0 0 9 10 0 0 0 010 0 0 0 0 0h=hankel(c,r)warning: last element of input column does not match first element of input
11、row. column wins anti-diagonal conflict.(type warning off matlab:hankel:antidiagonalconflict to suppress this warning.) in c:matlab6p5toolboxmatlabelmathankel.m at line 27h = 5 6 7 8 9 10 6 7 8 9 10 7 7 8 9 10 7 8 8 9 10 7 8 9 9 10 7 8 9 10 10 7 8 9 10 1110、toeplitz矩阵toeplitz矩阵与hankel矩阵类似,也是针对于一个向量c
12、或者两个向量c或r,而生成的一个对称矩阵。矩阵中各元素满足如下规律:(1) 当只有一个向量c时,t=toeplita(c):以向量c作为toeplitz矩阵的第一列:对角线上的各元素相等;各元素关于主对角线对称。(2) 当有两个向量c或r时,t=toeplitz(c,r)时:以向量c作为toeplitz矩阵的第一列;以向量r作为矩阵的最后一行;当c的第一个元素不同于r第一个元素时,取c的第一个元素作为主对角上的元素。c=5 6 7 8 9 10;r=6 7 8 9 10 11;t=toeplitz(c)t = 5 6 7 8 9 10 6 5 6 7 8 9 7 6 5 6 7 8 8 7 6
13、 5 6 7 9 8 7 6 5 610 9 8 7 6 5 t=toeplitz(c,r)warning: first element of input column does not match first element of input row. column wins diagonal conflict.(type warning off matlab:toeplitz:diagonalconflict to suppress this warning.) in c:matlab6p5toolboxmatlabelmattoeplitz.m at line 18t = 5 7 8 9
14、 10 11 6 5 7 8 9 10 7 6 5 7 8 9 8 7 6 5 7 8 9 8 7 6 5 7 10 9 8 7 6 5二、矩阵的特征参数运算1、 矩阵的逆运算的充分必要条件是矩阵的行列式不为零。a=1 0 0 0;1 2 0 0;2 1 3 0;1 2 1 4a = 1 0 0 0 1 2 0 0 2 1 3 0 1 2 1 4 b=inv(a)b = 1.0000 0 0 0 -0.5000 0.5000 0 0 -0.5000 -0.1667 0.3333 00.1250 -0.2083 -0.0833 0.25002、矩阵的行列式运算当矩阵为方阵时,可以进行矩阵的行列式
15、运算操作,用det函数操作。 x=det(a) %a、b取自上例x = 24 y=det(b)y = 0.0417 i=x*yi = 1 3、矩阵的特征值运算(1) 用eig和eigs两个函数来进行矩阵的特征值运算。其格式如下:e=eig(x)命令生成由矩阵x的特阵值所组成的一个列向量。(2) v,d=eig(x)命令生成两个矩阵v和d,其中v是以矩阵x的特征向量作为列向量组成的矩阵, d是由矩阵x的特征值作为主对角线元素购成的对角矩阵。(3) eigs(a)命令是由迭代法求解矩阵的特阵值和特征向量。(4) d=eigs(a)命令生成由矩阵a的特征值组成的一个列向量。a必须为方阵,最好是大型稀
16、疏矩阵。(5) v,d=eigs(a)命令生成两个矩阵v和d,其中v是以矩阵a的特征向量作为列向量组成的矩阵,d是由矩阵a的特征值作为主对角线与元素构成的对角矩阵 x=magic(3)x = 8 1 6 3 5 7 4 9 2 a=1 0 0;0 0 3;0 9 0a = 1 0 0 0 0 3 0 9 0 e=eig(x)e = 15.0000 4.8990 -4.8990 v,d=eig(x)v = -0.5774 -0.8131 -0.3416 -0.5774 0.4714 -0.4714 -0.5774 0.3416 0.8131d = 15.0000 0 0 0 4.8990 0 0
17、 0 -4.8990 d=eigs(a)d = -5.1962 5.1962 1.0000 v,d=eigs(a)v = 0 0 1.0000 0.5000 0.5000 0 -0.8660 0.8660 0d = -5.1962 0 0 0 5.1962 0 0 0 1.0000 d=eigs(a)d = -5.1962 5.19621.00004、矩阵的范数运算数值分析与计算方法所得不同之处在于引入了范数的概念,用norm和normest函数来计算矩阵的范数,其格式如下:(1) norm函数norm(x)用来计算矩阵x的2-范数norm(x,2)与norm(x)的功能相同norm(x,1)
18、用来计算矩阵x的1-范数norm(x,inf)用来计算矩阵x的无穷范数norm(x,fro)用来计算矩阵x的frobenius范数(2) normest函数normest函数只能计算矩阵的2-范数。且是其2-范数的估计值,适用于计算norm(x)比较费时的情况,其格式为normest(x). x=hilb(4)x = 1.0000 0.5000 0.3333 0.2500 0.5000 0.3333 0.2500 0.2000 0.3333 0.2500 0.2000 0.1667 0.2500 0.2000 0.1667 0.1429 norm(4)ans = 4 norm(x)ans =
19、1.5002 norm(x,2)ans = 1.5002 norm(x,1)ans = 2.0833 norm(x,inf)ans = 2.0833 norm(x,fro)ans = 1.5097 normest(x)ans = 1.5002 5、矩阵的条件数运算 矩阵的条件舒适判断矩阵“病态”程度的一个量值,矩阵a的条件数越大,表明a越“病态”,反之,表明a越“良态”。(1) cond函数cond函数用于计算矩阵的条件数,cond(x)返回关于矩阵x的2-范数的条件数。cond(x,p)关于矩阵x的p-范数的条件数(p为1、2、inf或fro)。(2) rcon函数rcond函数用于计算矩阵
20、条件数的倒数值,所以当矩阵x病态时,rcond(x)就接近0;x“良态”时,rcond(x)就接近1。(3) condestcondest(x)用于计算关于矩阵x的1-范数的条件数的估计值。 m=magic(3); h=hilb(4); c1=cond(m)c1 = 4.3301 c2=cond(m,1)c2 = 5.3333 c3=rcond(m)c3 = 0.1875 c4=condest(m)c4 = 5.3333 h1=cond(h)h1 = 1.5514e+004 h2=cond(h,inf)h2 = 2.8375e+004 h3=rcond(h)h3 = 3.5242e-005 h
21、4=condest(h)h4 = 2.8375e+0046、特征值的条件数运算通过函数condeig进行特征值条件数的计算。函数使用方式为condeig(a)或者v,d,s= condeig(a),其中condeig(a)表示有矩阵的各特阵值条件数所构成的列向量;v,d,s= condeig(a)等价于上面介绍v,d=eig(a)和s=condeig(a)。v表示特征向量组成的矩阵,d表示特征值组成的对角阵,s表示对应的特征值条件数。 v=1 1 1 10e10v = 1.0e+011 * 0.0000 0.0000 0.0000 1.0000 a=diag(v)a = 1.0e+011 *
22、0.0000 0 0 0 0 0.0000 0 0 0 0 0.0000 0 0 0 0 1.0000 jt=cond(a) %矩阵的条件数计算jt = 1.0000e+011 tt=condeig(a) %矩阵特征值的条件数计算tt = 1 1 1 1 m=magic(7)m = 30 39 48 1 10 19 28 38 47 7 9 18 27 29 46 6 8 17 26 35 37 5 14 16 25 34 36 45 13 15 24 33 42 44 4 21 23 32 41 43 3 12 22 31 40 49 2 11 20 jt=cond(m) %矩阵的条件数计算
23、jt =7.1113 tt=condeig(m) %矩阵特征值的条件数计算tt = 1.0000 1.0048 1.3171 1.3125 1.0048 1.31251.31717、矩阵的秩用rank来求得矩阵的秩 t=rand(6)t = 0.9501 0.4565 0.9218 0.4103 0.1389 0.0153 0.2311 0.0185 0.7382 0.8936 0.2028 0.7468 0.6068 0.8214 0.1763 0.0579 0.1987 0.4451 0.4860 0.4447 0.4057 0.3529 0.6038 0.9318 0.8913 0.61
24、54 0.9355 0.8132 0.2722 0.4660 0.7621 0.7919 0.9169 0.0099 0.1988 0.4186 r=rank(t)r = 6 t1=1 1 1;2 2 3t1 = 1 1 1 2 2 3 r=rank(t1)r = 28、矩阵的迹矩阵的迹是指矩阵主对角线上所有元素的和,也是矩阵的特征值。用trace函数求得。 t=trace(m)t = 65 t1=eig(m)t1 = 65.0000 -21.2768 -13.1263 21.2768 13.1263 t2=65-21-13+21+13t2 = 659、矩阵的伪逆在matlab中,矩阵的伪逆运
25、算可以有函数pinv实现。完整的应用形式为x=pinv(a),矩阵x和矩阵a同维数,并且矩阵a和矩阵x满足条件a* x*a=a、x*a*x=x和a*x=x*a=i(在一定的误差条件下近似成立) a=magic(4)a = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 b=inv(a)warning: matrix is close to singular or badly scaled. results may be inaccurate. rcond = 1.306145e-017.b = 1.0e+014 * 0.9382 2.8147 -2.8147 -0
26、.9382 2.8147 8.4442 -8.4442 -2.8147 -2.8147 -8.4442 8.4442 2.8147 -0.9382 -2.8147 2.8147 0.9382 b1=pinv(a)b1 = 0.1011 -0.0739 -0.0614 0.0636 -0.0364 0.0386 0.0261 0.0011 0.0136 -0.0114 -0.0239 0.0511 -0.0489 0.0761 0.0886 -0.0864 c1=a*bc1 = 1.0000 0 -1.0000 -0.5000 -0.2500 0 0 0.3750 0.2500 0.5000 0
27、 -0.2500 0.1563 0.1250 0 1.2344 c2=a*b1c2 = 0.9500 -0.1500 0.1500 0.0500 -0.1500 0.5500 0.4500 0.1500 0.1500 0.4500 0.5500 -0.1500 0.0500 0.1500 -0.1500 0.9500 c3=b*a*1 1 1 1c3 = 0.8438 6.6250 -4.3125 0.4219 c4=b1*a*1 1 1 1c4 = 1.0000 1.0000 1.0000 1.000010、正交矩阵函数orth(a)可以很方便的求得矩阵a的正交矩阵。完整的应用形式为q=or
28、th(a),q是基于矩阵a的范围内的正交阵,且满足q*q=i,q的列数与矩阵a的秩相同。 v=2 2 -2;2 5 -4;-2 -4 5v = 2 2 -2 2 5 -4 -2 -4 5 r=orth(v)r = -0.3333 0.0000 0.9428 -0.6667 0.7071 -0.2357 0.6667 0.7071 0.2357 e=r*re = 1.0000 0 -0.0000 0 1.0000 0.0000 -0.0000 0.0000 1.0000 matlab在编程方面的应用本章主要对matlab在编程方面的应用作一个较详细的介绍,其中涉及了编程必然须注意的变量类型、数据
29、类型、程序控制语句及matlab函数等相关内容。一、 变量、语句1 变量命名规则 必须以字母开头; 可以由字母、数字和下划线混合组成; 字符长度应不大于31个。注意:matlab区分大小写。2 局部变量和全局变量通常,每个函数体内都有自己定义的变量,不能从其他函数和matlab工作空间访问这些变量,这些变量即是局部变量。如果要使某个变量在几个函数中和matlab函数空间都能使用,可以把它定义为全局变量。全局变量就是用关键字“global”声明的变量。全局变量名尽量大写,并能够反映它本身的含义。如果需要在几个函数中和matlab工作空间都能访问一个全局变量,那么必须在每个函数中和matlab工作
30、空间内都声明该变量为全局变量为全局的。全局变量需要在函数体的变量赋值语句之前说明,整个函数以及所有对函数的递归调用都可以利用全局变量。注意:实际编程中,应尽量避免使用全局变量,因为全局变量的值一旦在一个地方被改变,那么在其他包括该变量的函数中都将改变,这样由可能会出现不可遇见的情况。如果需要用全局变量,建议全局变量名要长,能反映它本身的含义,并且最好所有字母都大写,并由选择地以首次出现的m文件的名字开头。3 基本语句matlab可以认为是一种解释性语言,用户可以在matlab命令窗口键入命令,也可以在编辑器内编写应用程序,这样matlab软件对此命令或程序中各条语句进行翻译,然后在matlab
31、环境下对它进行处理,最后返回运算结果。matlab语言的基本语句结构为:变量名列表表达式其中等号左边的变量名列表为matlab语句的返回值,等号右边的是表达式的定义,它可以是matlab允许的矩阵运算,也可以是函数调用。等号右边的表达式可以由分号结束,也可以由逗号或回车结束,但它们的含义是不同的,如果用分号结束,则左边的变量的结果将不在屏幕上显示,否则将把结果全部显示出来。matlab语言和c语言不同,在调用函数时matlab允许一次返回多个结果,这时等号左边是 括起来的变量列表。注意:表达式中的运算符号两侧允许有空格,以增加可读性。但在复数或符号表达式中要尽量避免,以防出错。在matlab的
32、基本语句结构中,等号左边的变量名列表和等号一起可以省略,这时将把表达式的执行结果自动赋给变量“ans”,并显示到命令窗口中。4 数据类型matlab下的数据类型最大的特点就是每一种数据类型都是以数组为基础,都是从数组派生出来的,matlab事实上把每种类型的数据都作为数组处理。matlab下有六种基本数据类型,分别是:double(双精度数值),char(字符),sparse(稀疏数据),storage(存储型),cell(单元数组),struct(结构)。其中存储类型是一个虚拟数据类型,这是matlab后来几个版本新增的定义,它包括:int8(8位整型),uint8(无符号8位整型),int
33、16(16位整型),uint16(无符号16位整型),int32(32位整型),uint32(无符号32位整型)。matlab有两种工作方式:交互式的命令行工作方式m文件的程序工作方式一. m文件用matlab语言编写的程序,称为m文件。 m文件有两类:命令文件和函数文件。命令文件:没有输入参数,也不返回输出参数。函数文件:可以输入参数,也可返回输出参数。m文件的建立与编辑建立新的m文件: 从matlab命令窗口的file菜单中选择new菜单项,再选择m-file命令。命令文件将需要运行的命令编辑到一个命令文件中,然后在matlab命令窗口输入该命令文件的名字,就会顺序执行命令文件中的命令。【例1】 建立一个命令文件将变量a,b的值互换。 e31m文件:a=1:9; b=11,12,13;14,15,16;17,18,19; c=a;a=b;b=c; a b 在matlab的命令窗口中输入e31,将会执行该命令文件1. input函数:用于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版分期付款合同书
- 二零二五年能源管理评估合同能源管理协议3篇
- 无锡南洋职业技术学院《石油钻采机械概论》2023-2024学年第一学期期末试卷
- 2024版高清影视内容制作与版权转让合同
- 2025年度体育场馆草坪除草与赛事运营保障合同3篇
- 2024法律顾问协议
- 2024版建筑行业招投标规则与协议签订指南版B版
- 皖江工学院《商业展示设计》2023-2024学年第一学期期末试卷
- 天津体育学院《环境科学概论(Ⅱ)》2023-2024学年第一学期期末试卷
- 塔里木职业技术学院《工笔人物画》2023-2024学年第一学期期末试卷
- 2024年光伏发电项目EPC总包合同
- 试卷(完整版)python考试复习题库复习知识点试卷试题
- 海外资管机构赴上海投资指南(2024版)
- GB/T 44679-2024叉车禁用与报废技术规范
- 抖音直播带货协议书模板
- 2024义务教育体育与健康课程标准(2022年版)必考题库及答案
- 工业机器人控制器:FANUC R-30iB:机器人实时监控与数据采集技术教程
- 墓地销售计划及方案设计书
- 新加坡留学完整版本
- 劳务服务合作协议书范本
- 优佳学案七年级上册历史
评论
0/150
提交评论