第3章 MATLAB矩阵分析与处理
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2) 下三角矩阵 在MATLAB中,提取矩阵A的下三角矩阵的函数是 tril(A)和tril(A,k),其用法与提取上三角矩阵的
函数triu(A)和triu(A,k)完全相同。
3.2.2 矩阵的转置与旋转 1.矩阵的转置 所谓转置,即把源矩阵的第一行变成目标矩阵 的第一列,第二行变成第二列,…,依此类推。显 然,一个m行n列的矩阵经过转置运算后,变成一个 n行m列的矩阵。转置运算符是单撇号(‘)。
rand:产生0~1间均匀分布的随机矩阵。
randn:产生均值为0,方差为1的标准正态分布随机 矩阵。
这几个函数的调用格式相似,下面以产生零矩
阵的zeros函数为例进行说明。其调用格式为:
zeros(m): 产生m×m零矩阵
zeros(m,n)
产生m×n零矩阵
zeros(size(A)) 产生与矩阵A同样大小的零矩阵。
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的每行乘以一个指定常数 ans = 17 46 12 40 55 0 10 0 48 90 1 14 39 76 125 0 28 0 84 10 15 32 66 12 95
第3章 MATLAB矩阵分析与处理
第3章 MATLAB矩阵分析与处理
特殊矩阵
矩阵结构变换 矩阵求逆与线性方程组求解 矩阵求值
3.1 特殊矩阵
3.1.1 通用的特殊矩阵
常用的产生通用特殊矩阵的函数有:
zeros:产生全0矩阵(零矩阵)。
ones:产生全1矩阵(幺矩阵)。
eye:产生单位矩阵。
D1=diag(A,1) D1 = 2 6
D2=diag(A,-1) D2 = 4
(2) 构造对角矩阵 设V为具有m个元素的向量,diag(V)将产生一 个m×m对角矩阵,其主对角线元素即为向量V的元素
diag([1,2,-1,4]) ans = 1 0 0 0 2 0 0 0 -1 0 0 0
0 0 0 4
矩阵次对角线上的元素1,5,10,10,5,1即为展开式 的系数。
3.2
3.2.1
矩阵结构变换
对角阵与三角阵
1.对角阵 只有对角线上有非0元素的矩阵称为对角矩阵,
对角线上的元素相等的对角矩阵称为数量矩阵,对 角线上的元素都为1的对角矩阵称为单位矩阵。 矩阵对角线有很多性质,如转置矩阵时对角线元
素不变,相似变换时对角线的和(称为矩阵的迹)
3.1.2 用于专门学科的特殊矩阵 (1) 魔方矩阵 魔方矩阵有一个有趣的性质,其每行、每列及 两条对角线上的元素和都相等。对于n阶魔方阵,其 元素由1,2,3,…,n2共n2个整数组成。MATLAB提供 了求魔方矩阵的函数magic(n),其功能是生成一个n 阶魔方阵。
magic(3) ans = 8 3 4
例3.1 分别建立3×3、3×2和与矩阵A同样大小的零矩阵 (1) 建立一个3×3零矩阵。 zeros(3) ans= 0 0 0 0 0 0 0 0 0 (2) 建立一个3×2零矩阵。 zeros(3,2) ans= 0 0 0 0 0 0
(3) 设A为2×3矩阵,则可以用zeros(size(A))建立一个与 矩阵A同样大小零矩阵。 A=[1 2 3;4 5 6]; %产生一个2×3阶矩阵A zeros(size(A)) %产生一个与矩阵A同样大小的零矩阵
A =
1 8 27 125 1 4 9 25 1 2 3 5 1 1 1 1
(3) 希尔伯特矩阵
1 希尔伯特( Hilbert )矩阵的每个元素hij . i j 1
在MATLAB中,生成希尔伯特矩阵的函数是hilb(n).
使用一般方法求逆会因Biblioteka Baidu原始数据的微小扰动而产
生不可靠的计算结果。MATLAB中,有一个专门求希 尔伯特矩阵的逆的函数invhilb(n),其功能是求n阶 的希尔伯特矩阵的逆矩阵。
x = 48.5039 26.9342 38.2053 34.5795 46.7390 42.8629 33.6940 20.5551 44.6422 33.3411 38.4630 43.7581 47.6544 42.1462 25.2880 32.1712 48.0641 47.5071 32.3081 46.8095 21.7367 30.5860 44.3950 20.2958 24.1667
A=[57,19,38;-2,31,8;0,84,5]; B=rot90(A) B = 38 8 5 19 31 84 57 -2 0 rot90(A,4) ans = 57 19 -2 31 0 84
38 8 5
3.矩阵的左右翻转 对矩阵实施左右翻转是将原矩阵的第一列和最后 一列调换,第二列和倒数第二列调换,…,依次类 推。MATLAB对矩阵A实施左右翻转的函数是fliplr(A)
ans= 0 0 0 0 0 0
例3.2 建立随机矩阵: (1) 在区间[20,50]内均匀分布的5阶随机矩阵。 (2) 均值为0.6、方差为0.1的5阶正态分布随机矩阵。 rand:产生0~1间均匀分布的随机矩阵。 要得到[a,b]区间上均匀分布的随机数,需用yi=a+(b-a)xi randn:产生均值为0,方差为1的标准正态分布随机矩阵。 命令如下: x=20+(50-20)*rand(5)
M=100+magic(5)
M =
117 123 104 110 111 124 105 106 112 118 101 107 113 119 125 108 114 120 121 102 115 116 122 103 109
(2) 范得蒙德矩阵 范得蒙德(Vandermonde)矩阵最后一列全为1, 倒数第二列为一个指定的向量,其他各列是其后列 与倒数第二列的点乘积。可以用一个指定向量生成 一个范得蒙矩阵。在MATLAB中,函数vander(V)生 成以向量V为基础向量的范得蒙矩阵。例如, A=vander([1;2;3;5])即可得到上述范得蒙矩阵。
(4) 托普利兹矩阵
托普利兹(Toeplitz)矩阵除第一行第一列外,其他每个 元素 都 与 左 上 角 的 元素相同 。生成托普利兹 矩阵的函数是 toeplitz(x,y),它生成一个以x为第一列,y为第一行的托 普利兹矩阵。这里x, y均为向量,两者不必等长,toeplitz(x) 用向量x生成一个对称的托普利兹矩阵。如:T=toeplitz(1:6)
对A的每列元素乘 以同一个数,可 以用一个对角阵 右乘A.
2.三角阵
三角阵又进一步分为上三角阵和下三角阵,所
谓上三角阵,即矩阵的对角线以下的元素全为0的一
种矩阵,而下三角阵则是对角线以上的元素全为0的
一种矩阵。
(1) 上三角矩阵
与矩阵A对应的上三角阵B是与A同型的一个矩阵,并且B 的对角线以上(含对角线)和A对应相等,而对角线以下的 元素等于0。求矩阵A的上三角阵的MATLAB函数是triu(A)。 例如,提取矩阵A的上三角元素,形成新的矩阵B。 A=[7,13,-28;2,-9,8;0,34,5]; B=triu(A) B = 7 13 -28 0 -9 8 0 0 5
大组成一个三角形表,称为杨辉三角形。由杨辉三
角形表组成的矩阵称为帕斯卡(Pascal)矩阵。函数
pascal(n)生成一个n阶帕斯卡矩阵。
例3.5 求(x+y)5的展开式。 在MATLAB命令窗口,输入命令: pascal(6) pascal(6)
ans = 1 1 1 1 1 1 1 2 3 4 5 6 1 3 6 10 15 21 1 4 10 20 35 56 1 5 15 35 70 126 1 6 21 56 126 2
1 5 9
6 7 2
例3.3 将101-125等25个数填入一个5行5列的表格 中,使其每行每列及对角线的和均为565。 一个5姐魔方矩阵的每行、每列及对角线的和 均为65,对其每个元素都加100后,这些和变成565.
magic(5)
ans =
17 23 4 10 11 24 5 6 12 18 1 7 13 19 25 8 14 20 21 2 15 16 22 3 9
例3.4
求4阶希尔伯特矩阵及其逆矩阵。
命令如下:
hilb(4) ans = 1 1/2 1/3 1/4 1/2 1/3 1/4 1/5 1/3 1/4 1/5 1/6 1/4 1/5 1/6 1/7 invhilb(4) ans = 16 -120 240 -140 -120 1200 -2700 1680 240 -2700 6480 -4200 -140 1680 -4200 2800
T=toeplitz(1:4) T = 1 2 3 4
2 1 2 3
3 2 1 2
4 3 2 1
(5) 伴随矩阵
设多项式p ( x)为:p( x) an x n an 1 x n 1 a1 x a0 an 2 an 3 a0 a1 an 1 a an an an an n 1 0 0 0 0 1 0 0 0 称矩阵:A 0 0 0 1 0 0 0 0 0 0 0 1 0 为多项式p ( x)的伴随矩阵。p ( x)成为A的特征多项式,方程 p ( x)的根成为A的特征值。
MATLAB生成伴随矩阵的函数是compan(p),其 中p是一个多项式的系数向量,高次幂系数排在前,
低次幂排在后。例如,为了求多项式的x3-7x+6的伴
随矩阵,可使用命令:
>> p=[1,0,-7,6];
>> compan(p) ans =
0
1 0
7
0 1
-6
0 0
(6) 帕斯卡矩阵
我们知道,二次项(x+y)n展开后的系数随n的增
diag(V)函数也有另一种形式diag(V,k),其功 能是产生一个n×n(n=m+|k|)对角阵,其第k条对角
线的元素即为向量V的元素。
diag(1:3,-1) ans = 0 1 0 0 0 0 0 0
0
0
2
0
0
3
0
0
例3.6 先建立5×5矩阵A,然后将A的第一行元素乘 以1,第二行乘以2,…,第五行乘以5。
A=[71,3,-8;2,-9,8;0,4,5]; B=A' B = 71 2 0 3 -9 4 -8 8 5
2.矩阵的旋转 。 在MATLAB中,可以很方便地以90 为单位对矩阵 按逆时针方向旋转。利用函数rot90(A,k)将矩阵A旋 转90º 的k倍,当k为1时可省略。例如,将A按逆时针 。 旋转90 ,命令如下:
y=0.6+sqrt(0.1)*randn(5)
y =
0.8713 0.9966 0.0960 0.1443 0.7806 0.4735 0.8182 0.8579 0.8251 1.0080 0.8114 0.9766 0.2197 0.5937 0.5504 0.0927 0.6814 0.2659 1.0475 0.3454 0.7672 0.6694 0.3085 -0.0864 0.5813
triu(A)函数也有另一种形式triu(A,k),其功能是求矩 阵A的第k条对角线以上的元素。例如,提取矩阵A的第2条对 角线以上的元素,形成新的矩阵B。 A=[1,32,1,0,5;3,5,17,4,16;4,0,13,0,42;70,11,9,21,3;11 ,63,5,2,99]; B=triu(A,2) B = 0 0 1 0 5 0 0 0 4 16 0 0 0 0 42 0 0 0 0 0 0 0 0 0 0
不变等。
(1) 提取矩阵的对角线元素
设A为m×n矩阵,diag(A)函数用于提取矩阵A主对角线 元素,产生一个具有min(m,n)个元素的列向量。
>> A=[1 2 3;4 5 6]; >> D=diag(A) D = 1 5
diag(A)函数还有一种形式diag(A,k),其功能是提取第 k条对角线的元素。与主对角线平行,往上为第1条,第2条, …,第n条对角线,往下为第-1条,第-2条,…,第-n条对 角线。主对角线为第0条对角线。例如对上面建立的A矩阵, 提取主对角线两侧对角线的元素,命令如下: