一、特殊矩阵
1、 通用类型特殊矩阵
zeros 函数:产生全0矩阵,即零矩阵
ones 函数:产生全1矩阵,即么矩阵。
eye 函数:产生对角线为1的矩阵。当矩阵是方阵时,得到一个单位矩阵。
rand 函数:产生(0,1)区间均匀分布的随机矩阵。
randn 函数:产生均值为0,方差为1的标准正态分布随机矩阵。zeros函数的调用格式:
zeros(m):产生m×m零矩阵。
zeros(m,n):产生m×n零矩阵。
zeros(size(A)):产生与矩阵A同样大小的零矩阵。
2、用于专门学科的特殊矩阵
魔方矩阵——Magic Square (每一行、每一列、每一斜行和都是15)
>> M = magic(3) %产生三阶魔方阵% M = 8 1 6 3 5 7 4 9 2 %产生八阶矩阵,并求和% >> M = magic(8); % magic(n) 产生n阶魔方阵 % >> sum(M(1,:)) ans = 260 >> sum(M(:,3)) ans = 260
范德蒙矩阵
% 产生范德蒙矩阵的函数 vander() % >> 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
希尔伯特矩阵
>> 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
伴随矩阵
例如:生成多项式的伴随矩阵。
>> p = [1,-2,-5,6]; >> A = compan(p) A = 2 5 -6 1 0 0 0 1 0
帕斯卡矩阵
>> n = 5; >> pascal(n) ans = 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
二、矩阵变换
1、对角阵
提取矩阵的对角线元素(diag 函数的对象是一个矩阵)
diag(A):提取矩阵A主对角线元素,产生一个列向量。
diag(A,k):提取矩阵A第k条对角线的元素,产生一个列向量。构造对角矩阵(diag 函数的对象是一个向量)
diag(V):以向量V为主对角线元素,产生对角矩阵。
diag(V,k):以向量V为第k条对角线元素,产生对角矩阵。
2、三角阵
上三角阵
tri(A):提取矩阵A的主对角线及以上的元素。
triu(A,k):提取矩阵A的第k条对角线及以上的元素。下三角阵(用法同上)
tril(A):
tril(A,k):
3、矩阵的转置
转置运算符,即小数点后接单引号 (.')。
共轭转置,其运算符是单引号(‘),它在转置的基础上还要取每个数的复共轭。
>> A = [1-2i,3+4i;5+4i,6-9i] A = 1.0000 - 2.0000i 3.0000 + 4.0000i 5.0000 + 4.0000i 6.0000 - 9.0000i >> A' ans = 1.0000 + 2.0000i 5.0000 - 4.0000i 3.0000 - 4.0000i 6.0000 + 9.0000i >> A.' ans = 1.0000 - 2.0000i 5.0000 + 4.0000i 3.0000 + 4.0000i 6.0000 - 9.0000i
4、矩阵的旋转
矩阵旋转函数:rot(A)
>> A = [1,3,2;-3,2,1;4,1,2] A = 1 3 2 -3 2 1 4 1 2 >> rot90(A) % 矩阵逆时针旋转90度 % ans = 2 1 2 3 2 1 1 -3 4 >> rot90(A,2) % 矩阵逆时针旋转180度 % ans = 2 1 4 1 2 -3 2 3 1
5、矩阵翻转(第一列和最后一列调换,第二列和倒数第二列调换。以此类推)
fliplr(A):对矩阵A实施左右翻转。
flipud(A):对矩阵A实施上下翻转。(行与行之间的调换)
6、去矩阵的逆矩阵
对于一个方阵A,如果存在一个与其相同的矩阵B,使得AB=BA=I(I为单位矩阵),则称B为A的逆矩阵,当然,A也是B的逆矩阵。
inv(A):求方阵A的逆矩阵。
三、矩阵求值
1、矩阵的行列式值( det(A) 即:求矩阵A的行列式值 )
把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就成为方阵对应的行列式的值。
A =
1 3 2
-3 2 1
4 1 2
>> format rat
>> det(inv(A)) == 1/det(A)
ans =
logical
1
2、矩阵的秩( rank(A)即:求矩阵A的秩 )
矩阵线性无关的行数或列数成为矩阵的秩。
例程:
% 求3-20阶魔方阵的秩 %
for n = 3:20
r(n)=rank(magic(n));
end
bar(r)
grid on
axis([2,21,0,20])
3、矩阵的迹( trace(A):求矩阵A的迹 )
A =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
>> sum(diag(A)) == trace(A)
ans =
logical
1
4、矩阵和向量的范数
矩阵或向量的范数用来度量矩阵或向量在某种意义下的长度。
5、矩阵的条件数(用于描述矩阵性能的一个参数)
矩阵A的条件数等于A的范数与A的逆矩阵的范数的乘积。
条件数越接近于1,矩阵的性能越好,反之,矩阵的性能越差。
cond(A,l):计算A的1一范数下的条件数。
cond(A) 或 cond(A,2):计算A的2一范数下的条件数。
cond(A, inf):计算A的∞一范数下的条件数。
四、矩阵的特征值与特征向量
设A是n阶方阵,如果存在常数了λ和n维非零列向量x,使得等式Ax=λx成立,则称λ为A的特征值,x是对应特征值啊λ的特征向量。
函数调用格式有两种:
1、E=eig(A):求矩阵A的全部特征值,构成向量E。
2、[X,D]=eig(A):求矩阵A的全部特征值,构成对角阵D;井产生矩阵X,X各列是相应的特征向量。
五、稀疏矩阵(零元素的个数远远多于非零元素的个数矩阵)
稀疏矩阵有大量的零元素,在存储时,若将零元素也存储起来显然会造成大量的让费。
1、矩阵的存储方式
完全存储方式(即:将矩阵的元素按列存储)
稀疏存储方式(即:稀疏存储方式只存储矩阵的非零元素的值及其位置,即行号和列号)
2、稀疏存储方式的产生
(1) 完全存储方式与稀疏存储方式之间的转化
A = sparse(S):将矩阵S转化为稀疏存储方式的矩阵A。
S = full(A):将矩阵A转化为完全存储方式的矩阵S。
(2)直接建立稀疏存储矩阵
sparse 函数的其他调用格式:
sparse(m,n):生成一个m×n的所有元素都是零的稀疏矩阵。
sparse(u,v,S):其中u、v、S是3个等长的向量。S是要建立的稀疏存储矩阵的非零元素,u(i)、v(i)分别是S(i)的行和列下标。
spconvert(A):
(3)带状稀疏矩阵的稀疏存储
稀疏矩阵有两种基本类型:无规则机构的稀疏矩阵 与有规则结构的稀疏矩阵。
带状稀疏矩阵是指所有非零元素都集中在对角线上的矩阵。
[B,d]= spdiags(A):从带状稀疏矩阵A中提取全部非零对角线元素给矩阵B及其这些非零对角线的位置向量d.
A= spdiags(B,d,m,n):产生带状稀疏矩阵的稀疏存储矩阵A,其中m、n为原帯状稀疏矩阵的行数与列数,矩阵B的第i列即为原带状稀疏矩阵的第条非零对角线,向量d为原带状稀疏矩阵所有非零对角线的位置。
(4) 单位矩阵的稀疏存储
speye(m,n)返回一个m×n的稀疏存储单位矩阵。
3、稀疏矩阵的应用实例
kf1 = [1;1;2;1;0]; k0 = [2;4;6;6;1]; k1 = [0;3;1;4;2]; B = [kf1,k0,k1]; d = [-1;0;1]; A = spdiags(B,d,5,5) B = full(A)
% 命令行输出结果 % A = (1,1) 2 (2,1) 1 (1,2) 3 (2,2) 4 (3,2) 1 (2,3) 1 (3,3) 6 (4,3) 2 (3,4) 4 (4,4) 6 (5,4) 1 (4,5) 2 (5,5) 1 B = 2 3 0 0 0 1 4 1 0 0 0 1 6 4 0 0 0 2 6 2 0 0 0 1 1