赞
踩
正如 MATLAB 的名字——“矩阵实验室”的含义一样,MATLAB是由早期专门用于矩阵运算的科学计算软件发展而来的。矩阵是MATLAB最基本的数据形式,MATLAB 的大部分运算或命令都是在矩阵运算的意义下执行的,而且这种运算定义在复数域上。正因为如此,MATLAB 的矩阵运算功能非常丰富,许多含有矩阵运算的复杂计算问题,在MATLAB中很容易得到解决。
因为向量可以看成是仅有一行或一列的矩阵,单个数据(标量)可以看成是仅含一个元素的矩阵,故向量和单个数据都可以作为矩阵的特例来处理。
有一类具有特殊形式的矩阵称为特殊矩阵。常见的特殊矩阵有零矩阵、幺矩阵、单位矩阵等,这些特殊矩阵在应用中具有通用性;还有一类特殊矩阵在专门学科中得到应用,如有名的魔方矩阵、范德蒙(Vandermonde)矩阵、希尔伯特(Hilbert)矩阵等。MATLAB 提供了相应的函数,可以更方便地生成特殊矩阵。
常用的产生特殊矩阵的函数:
zeros(m):产生mxm零矩阵。
zeros(m,n):产生mxn零矩阵。当m = n 时,等同于zeros(m)。
zeros(size(A)):产生与矩阵A同样大小的零矩阵。
>> zeros(3)
ans =
0 0 0
0 0 0
0 0 0
>> A = [1,2,3;4,5,6];
>> zeros(size(A))
ans =
0 0 0
0 0 0
例子:建立随机矩阵。
产生(0,1)区间均匀分布随机矩阵使用 rand 函数,假设得到了一组满足(O,1)区间均匀分布的随机数x,则若想得到在任意[a,b]区间上均匀分布的随机数,只需用yi=a+(b-a)xi,计算即可。产生均值为0,方差为1的标准正态分布随机矩阵使用 randn 函数,假设已经得到了一组标准正态分布随机数xi,如果想更一般地得到均值为u,方差为σ ^2的随机数,可用yi=u+σxi,计算出来。
>> x = 20 + (50 - 20) * rand(5) x = 44.4417 22.9262 24.7284 24.2566 39.6722 47.1738 28.3549 49.1178 32.6528 21.0714 23.8096 36.4064 48.7150 47.4721 45.4739 47.4013 48.7252 34.5613 43.7662 48.0198 38.9708 48.9467 44.0084 48.7848 40.3621 >> y = 0.6 + sqrt(0.1) * randn(5) y = 0.9272 0.8809 1.0549 0.5677 0.5905 0.8299 0.2373 0.7028 0.5236 0.5479 0.5040 0.2620 0.3613 0.7009 0.7985 0.6929 0.3440 1.0333 0.6989 0.9457 0.3510 -0.3311 0.0588 0.3265 0.9508
魔方矩阵
魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由1、2、3、…、n2共n个整数组成,每行、每列及两条对角线上的元素和都等于n(n2+1)/2。MATLAB提供了函数magic(n),其功能是生成一个n阶魔方阵。
>> magic(3)
ans =
8 1 6
3 5 7
4 9 2
将[101 , 125]范围内的25个整数填入一个5行5列的表格中,使其每行每列及对角线的和均为565。
一个5阶魔方矩阵的每行、每列及对角线的和均为65,对其每个元素都加100后,这些和变为565。
>> M = 100 + magic(5)
M =
117 124 101 108 115
123 105 107 114 116
104 106 113 120 122
110 112 119 121 103
111 118 125 102 109
范德蒙矩阵
范德蒙(Vandermonde)矩阵的一般形式为:
范德蒙矩阵最后一列全为1,倒数第二列为一个指定的向量,其他各列是其后一列与倒数第二列对应元素的乘积。如:
可以用一个指定向量生成一个范德蒙矩阵。在 MATLAB中,函数vander(V)生成以向量V为基础向量的范德蒙矩阵。
>> A = vander([1;2;3;5])
A =
1 1 1 1
8 4 2 1
27 9 3 1
125 25 5 1
希尔伯特矩阵
希尔伯特(Hilbert)矩阵是一种数学变换矩阵,它的每个元素
在MATLAB中,生成希尔伯特矩阵的函数是hilb(n)。
希尔伯特矩阵是一个高度病态的矩阵,即任何一个元素发生微小变动,整个矩阵的值和逆矩阵都会发生很大变化,病态程度和阶数相关。在MATLAB中,有一个专门求n阶希尔伯特矩阵的逆矩阵的函数invhilb(n)。
例子:求4阶希尔伯特矩阵及其逆矩阵。
>> format rat % 以有理形式输出 >> H = hilb(4) H = 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 >> H = invhilb(4) H = 16 -120 240 -140 -120 1200 -2700 1680 240 -2700 6480 -4200 -140 1680 -4200 2800 >> format %恢复默认输出格式
托普利兹矩阵
托普利兹(Toeplitz)矩阵除第一行和第一列外,其他每个元素都与左上角的元素相同。生成托普利兹矩阵的函数是toeplitz(x,y),它生成一个以x为第一列,y为第一行的托普利兹矩阵。这里x、 y均为向量,两者不必等长。toeplitz(x)用向量x生成一个对称的托普利兹矩阵。
>> T = toeplitz(1:6)
T =
1 2 3 4 5 6
2 1 2 3 4 5
3 2 1 2 3 4
4 3 2 1 2 3
5 4 3 2 1 2
6 5 4 3 2 1
伴随矩阵
多项式
,则称矩阵
为多项式p(x)的伴随矩阵,p(x)称为A的特征多项式,方程p(x) = 0的根称为A的特征值。
MATLAB生成伴随矩阵的函数是compan§,其中p是一个多项式的系数向量,高次幂系数排在前,低次幂排在后。例如,为了求多项式x^3-7x+6的伴随矩阵:
>> p = [1,0,-7,6];
>> compan(p)
ans =
0 7 -6
1 0 0
0 1 0
帕斯卡矩阵
二次项(x+y)^n展开后的系数随n的增大组成一个三角形表,称为杨辉三角形。由杨辉三角形表组成的矩阵称为帕斯卡(Pascal)矩阵。帕斯卡矩阵的第一行元素和第一列元素都为1,其余位置的元素是该元素的左边元素与上一行对应位置元素相加,即 A(i,j)=A(i,j-1)+A(i-1,j)。函数 pascal(n)生成一个n阶帕斯卡矩阵。
例子:求(x + y) ^ 5的展开式
>> 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 252
矩阵次对角线上的元素1、5、10、10、5、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 252
矩阵次对角线上的元素1、5、10、10、5、1即为展开式的系数。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。