专题二 MATLAB矩阵处理
--------------------------------------------------------------------------------
特殊矩阵包括2大类:通用性的特殊矩阵、用于专门学科的特殊矩阵
例如:产生均值为0.6,方差为0.1的一个5×5矩阵。
例如:zeros(size(A)) 返回一个与矩阵A同大小的零矩阵。其他特殊矩阵也可使用这种用法。
例如:fix(a+(b-a+1)*rand(m,n)):产生[a, b]区间上均匀分布的随机整数。
2.1 魔方矩阵 magic square
在MATLAB中,函数magic(n)生成n阶魔方矩阵。例如:3阶魔方矩阵。
n阶魔方矩阵由1,2,3,…,n²共n²个整数组成,且每行、每列以及主对角线、副对角线上各n个元素之和都相等。且和为(1+2+3+...+n²)/n = (n+n³)/2。
2.2 范得蒙矩阵 vandermonde
在MATLAB中,函数vander(V)生成以向量V为基础的范得蒙矩阵。
2.3 希尔伯特矩阵
可以归纳出:希尔伯特矩阵的元素为 H(i, j) = 1 / (i+j-1)
在MATLAB中,生成n阶希尔伯特矩阵的函数是 hilb(n)
2.4 伴随矩阵
在MATLAB中,函数compan(p)生成伴随矩阵,其中p是一个多项式的系数向量,高次幂系数在前,低次幂系数在后。
例如:生成多项式 x³-2x²-5x+6 的伴随矩阵
--------------------------------------------------------------------------------
例如:提取4阶魔方矩阵第-1条对角线及以上的元素
例如:提取4阶魔方矩阵第-1条对角线及以下的元素
如果矩阵是实矩阵,那么转置和共轭转置是等效的;两者的区别在于矩阵是复矩阵时。
举例:验证魔方矩阵的主对角线、副对角线元素之和相等。
>> A = magic(5)
A =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>> V1 = diag(A)
V1 =
17
5
13
21
9
>> s1 = sum(V1)
s1 =
65
>> B = fliplr(A)
B =
15 8 1 24 17
16 14 7 5 23
22 20 13 6 4
3 21 19 12 10
9 2 25 18 11
>> V2 = diag(B)
V2 =
15
14
13
12
11
>> s2 = sum(V2)
s2 =
65
--------------------------------------------------------------------------------
举例:求3~20阶魔方阵的秩。
向量或矩阵的范数用来度量向量或矩阵在某种意义下的长度。
(1) 向量的3种常用范数
对应地,在MATLAB中,有:
(2) 矩阵的3种常用范数
对应地,在MATLAB中,有:
--------------------------------------------------------------------------------
设A是n阶方阵,如果存在常数λ和n维非零列向量x,使得等式Ax=λx成立,则称λ为A的特征值,x是对应特征值λ的特征向量。
在MATLAB中,采用函数eig()计算矩阵的特征值和特征向量,调用方式如下:
--------------------------------------------------------------------------------
零元素远远多于非零元素的矩阵。
完全存储方式和稀疏存储方式
完全存储方式:将矩阵所有元素按列存储在内存单元中。
稀疏存储方式:只存储矩阵非零元素的值及其位置(即行号和列号)。采用稀疏存储方式时,矩阵元素的存储顺序并没有改变,也是按列的顺序进行存储。
(1) 完全存储方式和稀疏存储方式之间的转化
采用函数sparse()实现稀疏存储,采用函数full()实现完全存储。
(2) 直接建立稀疏存储矩阵
函数sparse()的其他调用格式:
另一种直接建立稀疏存储矩阵的方式是调用函数spconvert(),格式为B=spconvert(A)
A是一个m×3或者m×4的矩阵,其每行表示一个非零元素,m是非零元素的个数。
A(i,1)表示第i个非零元素所在的行;A(i,2)表示第i个非零元素所在的列;A(i,3)表示第i个非零元素的实部;A(i,4)表示第i个非零元素的虚部;若矩阵的全部元素都是实数,那则无需第4列。