通用的特殊矩阵
下面介绍几个产生通用特殊矩阵的常用函数:
zeros()函数
产生全0矩阵,即零矩阵。
格式:
① zeros(m):产生的零矩阵
② zeros(m, n):产生的零矩阵
③ zeros(size(A)):产生与矩阵A同样大小的零矩阵(size(A)将返回矩阵A的行数和列数)
ones()函数
产生全1矩阵,即幺矩阵。
格式:
① ones(m):产生的幺矩阵
② ones(m, n):产生的幺矩阵
③ ones(size(A)):产生与矩阵A同样大小的幺矩阵(size(A)将返回矩阵A的行数和列数)
eye()函数
产生对角线为1的矩阵,当矩阵是方阵时,得到一个单位矩阵。
格式:
① eye(m):产生的矩阵
② eye(m, n):产生的矩阵
③ eye(size(A)):产生与矩阵A同样大小的矩阵(size(A)将返回矩阵A的行数和列数)
rand()函数
产生 (0 ,1) 区间均匀分布的随机矩阵(不包括0和1)。
格式:
① rand(m):产生的随机矩阵
② rand(m, n):产生的随机矩阵
③ rand(size(A)):产生与矩阵A同样大小的随机矩阵(size(A)将返回矩阵A的行数和列数)
randn()函数
产生均值为0,方差为1的标准正态分布随机矩阵。
格式:
① rand(m):产生的正态分布随机矩阵
② rand(m, n):产生的正态分布随机矩阵
③ rand(size(A)):产生与矩阵A同样大小的正态分布随机矩阵(size(A)将返回矩阵A的行数和列数)
例:产生5阶两位随机整数矩阵A,在产生均值为0.6、方差为0.1的5阶正态分布随机矩阵B,最后验证 (A+B)E = EA+BE(E为单位矩阵)。
思路:
rand()函数:产生 (0 ,1)开 区间均匀分布的随机数x。
fix(a+(b-a+1)*x):产生 [a, b] 区间上均匀分布的随机整数。
randn()函数:产生均值为0,方差为1的标准正态分布随机数x。
μ+σx:得到均值为,方差为的随即数。
>> A = fix(10+(99-10+1)*rand(5));
>> B = 0.6*sqrt(0.1)*randn(5);
>> E = eye(5);
>> (A+B)*E == E*A+B*E
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
用于专门学科的特殊矩阵
魔方矩阵
n阶魔方矩阵由1,2,3,…,共个整数组成,且每行、每列以及主、副对角线上各n个元素之和相等。和为 (n+) / 2。
用magic(n)函数产生一个特定的n阶魔方阵。
例:产生8阶魔方阵,求其每行每列元素之和。
M =
64 2 3 61 60 6 7 57
9 55 54 12 13 51 50 16
17 47 46 20 21 43 42 24
40 26 27 37 36 30 31 33
32 34 35 29 28 38 39 25
41 23 22 44 45 19 18 48
49 15 14 52 53 11 10 56
8 58 59 5 4 62 63 1
>> sum(M(1, :)) %行和
ans =
260
>> sum(M(:, 1)) %列和
ans =
260
范德蒙矩阵
对于向量,范德蒙矩阵的一般形式为:
用vander(α)函数产生一个以向量α为基础的范德蒙矩阵。
>> V = vander(1:5)
V =
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编码即以范德蒙矩阵为基础。
希尔伯特矩阵
n阶希尔伯特矩阵的一般形式为:
希尔伯特矩阵的元素为H(i, j) = 1 / (i+j-1)。
用hilb(n)函数生成n阶希尔伯特矩阵。
>> format rat
>> hilb(5)
ans =
1 1/2 1/3 1/4 1/5
1/2 1/3 1/4 1/5 1/6
1/3 1/4 1/5 1/6 1/7
1/4 1/5 1/6 1/7 1/8
1/5 1/6 1/7 1/8 1/9
希尔伯特矩阵是著名的病态矩阵,即任何一个元素发生较小的变动,整个矩阵的值和逆矩阵都会发生很大变化。病态程度和矩阵阶数相关,随着结阶数增加,病态程度更加严重。
伴随矩阵
用compan(p)函数生成伴随矩阵,其中p是一个多项式的系数向量,高次幂系数排在前,低次幂系数排在后。
例:生成多项式 的伴随矩阵。
>> p = [1, -2, -5, 6];
>> a = compan(p)
a =
2 5 -6
1 0 0
0 1 0
帕斯卡矩阵
根据二项式定理, 展开后系数随着n的增大组成一个三角形表,即杨辉三角。
把二项式系数一次填写在矩阵的左侧对角线上然后提取左侧n行n列元素即为n阶帕斯卡矩阵。
用pascal(n)函数生成一个n阶帕斯卡矩阵。