Matlab矩阵处理之一

一、特殊矩阵

1.一些通用的特殊矩阵

 zeros函数:产生全0矩阵,即零矩阵;

 ones函数:产生全1矩阵,即幺矩阵;

 eye函数:产生对角线为1的矩阵。当矩阵是方阵时,得到一个单位矩阵;

 rand函数:产生(0,1)区间均匀分布的随机矩阵;

 randn函数:产生均值为0,方差为1的标准正态分布随机矩阵。

1.1zeros函数的调用格式:

 zeros(m):产生m×m零矩阵;

 zeros(m,n):产生m×n零矩阵;

 zeros(size(A)):产生与矩阵A同样大小的零矩阵。

A=zeros(2,3)

A =

 0     0     0
 0     0     0

zeros(size(reshape(A,3,2)))

ans =

 0     0
 0     0
 0     0

注:reshape重组数组;将23的数组重塑为32的数组,size求矩阵的大小。

例1 首先产生5阶两位随机整数矩阵A,再产生均值为0.6、方差为0.1的5阶正态分布随机矩阵B,最后验证(A+B)I=IA+BI(I为单位矩阵)。

 rand函数:产生(0,1)开区间均匀分布的随机数x;

 fix(a+(b-a+1)*x):产生[a,b]区间上均匀分布的随机整数;

 randn函数:产生均值为0、方差为1的标准正态分布随机数x;

 μ+σx:得到均值为μ、方差为σ^2的随机数。

A=fix(10+(99-10+1)*rand(5)) %%生成10-99随机整数矩阵

B=0.6+sqrt(0.1)*randn(5) %%产生均值为0.6、方差为0.1的5阶正态分布随机矩阵

C=eye(5) %%单位矩阵

(A+B)C==CA+B*C

A =

24    64    50    84    19
81    33    17    58    96
38    68    30    99    10
57    72    92    17    79
24    77    23    49    83

B =

1.0361    0.5121    0.1013    0.9565    0.0465
0.2654    0.8218    0.7606    0.7107    0.5097
0.4518   -0.0488    0.6892    0.5054    0.3371
0.5138    0.4881    0.6106    0.6072    0.2903
0.9474    0.3396    0.1783    0.5171    0.2343

C =

 1     0     0     0     0
 0     1     0     0     0
 0     0     1     0     0
 0     0     0     1     0
 0     0     0     0     1

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

2、魔方矩阵(Magic square)

 n阶魔方阵由1,2,3,…,n2共n2个整数组成,且每行、每列以及主、副对角线上各n个元素之和都相等;

 n阶魔方阵每行每列元素的和为(1+2+3+…+ n2)/n=(n+n3)/2;

 n>2时有很多不同的n阶魔方阵,MATLAB函数magic(n)产生一个特定的魔方阵。

例2 产生8阶魔方阵,求其每行每列元素的和

M=magic(6)

sum(M(1,:))%%第一行的和

sum(M(:,1))%%第一列的和

(6+6^3)/2

M =

35     1     6    26    19    24
 3    32     7    21    23    25
31     9     2    22    27    20
 8    28    33    17    10    15
30     5    34    12    14    16
 4    36    29    13    18    11

ans =

111

ans =

111

ans =

111

3.范德蒙矩阵

范德蒙矩阵的最后一列全为1,即向量v各元素的零次方,倒数第二列为指定的向量v,即向量v各元素的一次方, 其他各列是其后列与倒数第二列的点乘积;

在MATLAB中,函数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       

注:范德蒙矩阵常用在各种通信系统的纠错编码中,例如,常用的Reed-Solomon编码即以范德蒙矩阵为基础。感兴趣的同学可自行查阅相关资料

4.希尔伯特矩阵

希尔伯特矩阵的元素为H(i,j)=1/(i+j-1);

在MATLAB中,生成n阶希尔伯特矩阵的函数是hilb(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    

注:format rat :使用分数来表示数值。

希尔伯特矩阵是著名的病态矩阵,即任何一个元素发生较小的变动,整个矩阵的值和逆矩阵都会发生很大变化。病态程度和矩阵的阶数相关,随着阶数的增加病态越严重。

5.伴随矩阵

设多项式p(x)为a(n)x^n+a(n-1)x(n-1)+…+a1x+a0,则多项式可转为伴随矩阵

p(x)称为A的特征多项式,方程p(x)=0的根称为A的特征值。

MATLAB生成伴随矩阵的函数是compan(p),其中p是一个多项式的系数向量,高次幂系数排在前,低次幂排在后。例如,生成多项式x3-2*x2-5x+6的伴随矩阵。

p=[1,-2,-5,6];

A=compan(p)

A =

   2              5             -6       
   1              0              0       
   0              1              0       

可以求出伴随矩阵的特征值,该特征值等于多项式方程的根。

6.帕斯卡矩阵

根据二项式定理,(x+y)^n展开后的系数随着n的增大组成一个三角形表,这个三角形称为杨辉三角形;

把二项式系数依次填写在矩阵的左侧对角线上,然后提取左侧的n行n列元素即为n阶帕斯卡(Pascal)矩阵;

帕斯卡矩阵的第一行元素和第一列元素都为1,其余位置的元素是该元素的左边元素与上面元素相加,即P(i,j)=P(i,j-1)+P(i-1,j),且P(i,1)=1,P(1,j)=1;

函数pascal(n)生成一个n阶帕斯卡矩阵。

例3.生成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