特殊矩阵
1. 通用的特殊矩阵
zeros( ):产生全0矩阵,即零矩阵
ones( ):产生全1矩阵,即幺矩阵
eye( ):产生对角线为1的矩阵。当矩阵是方阵时,得到一个单位矩阵。
rand( ):产生(0,1)区间均匀分布的随机矩阵,不包括0和1。
randn( ):n表示normal,产生均值为0,方差为1的标准正态分布随机矩阵
2. 调用格式
zeros(m):产生m×m阶零矩阵
zeros(m,n):产生m×n阶零矩阵
zeros(size(A)):产生与矩阵A相同维数的零矩阵
rand( ):产生(0,1)开区间均匀分布的随机数
fix(a+(b-a+1)*x):产生[a,b]区间上均匀分布的随机整数
randn( ):产生均值为0,方差为1的标准正态分布随机数x
μ+σx:产生均值为μ,方差为σ^2的随机数
>> A=rand(5);
>> A1=fix(10+90*A);
%产生两位随机整数矩阵
>> B=randn(5);
>>> B1=0.6+sqrt(0.1)*B;
%产生均值为0.6,方差为0.1的5阶正态分布随机矩阵
>> (A1+B1)*eye(5)==eye(5)*A1+B1*eye(5)
ans =
5×5 logical 数组
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
可化简为:
>> A=fix(10+(99-10+1)*rand(5));
>> B=0.6+sqrt(0.1)*randn(5);
>> C=eye(5);
>> (A+B)*C==C*A+B*C
ans =
5×5 logical 数组
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
3. 用于专门学科的特殊矩阵
a. 魔方阵(Magic Square)
语法:magic( )
- 产生魔法矩阵,每行每列以及对角线元素之和相等。
- MATLAB中,每次产生同样阶数的魔方阵相同。
- n阶魔方阵由1,2,3,…,n^2 共n^2 个整数组成,且每行每列及主、副对角线上各n个元素之和都相等。
- n阶魔方阵每行每列元素的和为 ( 1 + 2 + 3 + . . . + n 2 ) / n = ( n + n 3 ) / 2 (1+2+3+...+n^2)/n=(n+n^3 )/2 (1+2+3+...+n2)/n=(n+n3)/2.
%e.g.产生8阶魔方阵,求每行每列元素之和。
>> M=magic(8);
>> sum(M(1,:))
ans =
260
>> sum(M(:,1))
ans =
260
%e.g.将3阶魔方矩阵对角线元素加10
>> A=magic(3);
>> B=A+10*eye(size(A))
B =
18 1 6
3 15 7
4 9 12
b. 范德蒙矩阵(Vandermonde)
- 最后一列全为1,即各元素的0次方;
- 倒数第二列为指定的向量v,即各元素的一次方;
- 其它列为其后列与倒数第二列的点乘积;
语法:vander(V)
生成以向量V为基础的范德蒙矩阵
>> A=vander(1:5)
A =
1 1 1 1 1
16 8 4 2 1
81 27 9 3 1
256 64 16 4 1
625 125 25 5 1
范德蒙矩阵常用在各种通信系统的纠错编码中,例如,常用的Read-Solomon编码即以范德蒙矩阵为基础。
c. 希尔伯特矩阵
语法:hilb(n)
生成n阶希尔伯特矩阵
>> 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
%一种病态矩阵,即任何一个元素的值发生小小的变动,整个矩阵的值和逆矩阵都会发生很大的变化。病态程度和矩阵的阶数相关,随着阶数的增加,病态更加严重
d. 伴随矩阵
伴随矩阵的特征值为多项式的根。
语法格式:compan( p)
p为一个多项式的系数向量,高次幂系数排在前,低次幂系数排在后
%e.g.生成多项式x^3−2x^2−5x+6的伴随矩阵。
>> p=[1,-2,-5,6];
>> A=compan(p)
A =
2 5 -6
1 0 0
0 1 0
%e.g.多项式的伴随矩阵的特征值与多项式方程的根有何关系?请用命令验证。
>> p=[1,2,1];
>> A=compan(p);
>> roots(p)==eig(A)
ans =
2×1 logical 数组
1
1
e. 帕斯卡矩阵
%e.g.生成5阶帕斯卡矩阵,验证它的逆矩阵的所有元素也为整数
>> format rat
>> P=pascal(5)
P =
1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70
>> inv(P)
ans =
5 -10 10 -5 1
-10 30 -35 19 -4
10 -35 46 -27 6
-5 19 -27 17 -4
1 -4 6 -4 1