一、特殊矩阵

通用的特殊矩阵

  1. zeros函数:产生0矩阵
  • zeros(m):产生m*m零矩阵
  • zeros(m,n):产生m*n零矩阵
  • zeros(size(A)):产生与A同大小的零矩阵
    1. >>A=zeros(2,3)
    2. A =
    3. 0 0 0
    4. 0 0 0
    5. >>zeros(size(reshape(A,3,2))
    6. ans =
    7. 0 0
    8. 0 0
    9. 0 0
  1. ones函数:产生1矩阵
  2. eye函数:产生对角线为1的矩阵、
  3. rand函数:产生(0,1)区间均匀分布的随机矩阵
  4. randn函数:产生均值为0,方差为1的标准正态分布随机矩阵
  5. fix(a+(b-a+1)*x):产生[a,b]区间上均匀分布的随机整数
  6. μ+σx:产生均值为μ、方差为σ^2的标准正态分布随机数x
    //产生5阶两位随机整数矩阵A,再生产均值为0.6,方差为0.1的5阶正态分布随机矩阵B,最后验证(A+B)I=IA+BI(I为单位矩阵)
    >>A=fix(10+(99-10+1)*rand(5));
    >>B=0.6+sqrt(0.1)*randn(5);//sqrt 平方根
    >>C=eye(5);
    >>(A+B)*C==C*A+B*C
    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
    

    用于专门学科的特殊矩阵

    魔法阵

    image.png
    >>M=magic(8);
    >>sum(M(1,:))
    ans =
    260
    >>sum(M(:,1)
    ans =
    260
    

    范德蒙矩阵

    image.png
    image.png

    希尔伯特矩阵(病态严重)

    image.png
    image.png

    伴随矩阵

    image.png
    image.png

    帕斯卡矩阵

    image.png
    image.png

    二、矩阵变换

    对角阵

  • 对角矩阵:只有对角线上有非零元素的矩阵
  • 数量矩阵:对角线上的元素相等的对角矩阵
  • 单位矩阵:对角线上的元素都为1的对角矩阵

    提取矩阵的对角线元素

  • diag(A):提取矩阵A主对角线元素,产生一个列向量

  • diag(A,k):提取矩阵A第k条对角线的元素,产生一个列向量

image.png

构造对角矩阵

  • diag(V):以向量V为主对角线元素,产生对角矩阵
  • diag(V,k):以向量V为第k条对角线元素,产生对角矩阵

    //先建立5*5矩阵A,然后将A的第一行元素乘以1,第二行乘以2,···,第五行乘以5
    >>A=[7,0,1,0,5;3,5,7,4,1;4,0,3,0,2;1,1,9,2,3;1,8,5,2,9]
    A=
    7  0  1  0  5
    3  5  7  4  1
    4  0  3  0  2
    1  1  9  2  3
    1  8  5  2  9
    >>D=diag(1:5)
    >>D*A
    ans =
      7  0  1  0  5
      6 10 14  8  2
     12  0  9  0  6
      4  4 36  8 12
      5 40 25 10 45
    

    三角阵

    上三角矩阵

    //triu(A):提取矩阵A的主对角线及以上的元素
    //triu(A,k):提取矩阵A的第k条对角线及以上的元素
    >>triu(ones(4),-1)
    ans =
      1  1  1  1
      1  1  1  1
      0  1  1  1
      0  0  1  1
    

    下三角矩阵

    函数是tril,用法与triu函数相同

    矩阵的转置

  • 转置运算符是小数点后面接单引号(.’)

  • 共轭转置,运算符是单引号(’)

    >>A=[1,3;3+4i,1-2i]
    A =
    1.0000+0.0000i 3.0000+0.0000i
    3.0000+4.0000i 1.0000-2.0000i
    >>A.'
    ans=
    1.0000+0.0000i 3.0000+4.0000i
    3.0000+0.0000i 1.0000-2.0000i
    

    矩阵的旋转

    //rot90(A,k): 将矩阵A逆时针方向旋转90度的k倍,k为1时可以省略
    >>A=[1,3,2;-3,2,1;4,1,2]
    A=
    1 3 2
    -3 2 1
    4 1 2
    >>rot90(A)
    ans=
    2  1  2
    3  2  1
    1 -3  4
    >>rot90(A,2)
    ans=
     2  1  4
     1  2 -3
     2  3  1
    

    矩阵的翻转

  • fliplr(A):对矩阵A左右翻转

  • flipud(A):上下翻转

    矩阵的求逆

  • inv(A)

    三、矩阵求值

    方阵的行列式

  • det(A)

    矩阵的秩

  • rank(A)

    矩阵的迹

  • trace(A)

    向量和矩阵的范数

    向量范数

    norm(V)或norm(V):向量V的2—范数 (向量元素平方和的平方跟)
    norm(V,1):1—范数 (向量元素的绝对值之和)
    norm(V,inf):无穷范数 (所以元素绝对值中的最大值)

    矩阵范数

    与上调用方法相同

    矩阵的条件数

  • 矩阵A的条件数等于A的范数与A的逆矩阵的范数的乘积

  • 条件数越接近一,性能越好
  • cond(A,1) 1-范数下的条件数
  • cond(A)或cond(A,2) 2-范数下的条件数
  • cond(A,inf) 无穷范数下的条件数

    四、特征值与特征向量

    求矩阵的特征值与特征向量

  • E=eig(A) :求矩阵A的全部特征值,构成向量E

  • [X,D]=eig(A): 求A的全部特征值,构成对角阵D,并产生矩阵X,X各列是对应的特征向量
  • eigshow函数:演示单位圆上的向量x和Ax之间的关系

image.png

五、稀疏矩阵

0特别多的矩阵

存储方式

  • 完全存储 全部都存
  • 稀疏存储 只存储矩阵的非零元素的值及其位置,即行号和列号

image.png

稀疏存储方式的产生

完全存储方式与稀疏存储方式之间的转化

//A=sparse(S):将矩阵S转换为稀疏存储方式的矩阵A
//S=full(A):将矩阵A转换为完全存储方式的矩阵S

直接建立稀疏存储矩阵

  1. sparse(m,n):生成一个m*n的所有元素都是0的稀疏矩阵
  2. sparse(u,v,S):其中u、v、S是三个等长的向量。S是要建立的稀疏存储矩阵的非零元素,u(i)、v(i)分别为S(i)的行下标和列下标

image.png

  1. 利用spconvert函数建立稀疏存储矩阵,调用格式:B=spconvert(A)

image.png

带状系数矩阵的稀疏存储

  • 基本类型:无规则结构的稀疏矩阵 有规则结构的稀疏矩阵
  • 带状稀疏矩阵:所有非零元素集中在对角线上的矩阵

image.png
image.png