【matlab】科学计算与MATLAB语言(MOOC课程)笔记三

专题二  MATLAB矩阵处理

--------------------------------------------------------------------------------

一、特殊矩阵

特殊矩阵包括2大类:通用性的特殊矩阵、用于专门学科的特殊矩阵

1. 通用性的特殊矩阵

  • 函数zeros():产生全0矩阵,即零矩阵。
  • 函数ones():产生全1矩阵,即幺矩阵。
  • 函数eye():产生对角线为1的矩阵。当矩阵是方阵时,得到一个单位矩阵。
  • 函数rand():产生(0,1)区间均匀分布的随机矩阵。不包括0和1。
  • 函数randn():产生均值为0,方差为1的标准正态分布随机矩阵。(产生一个随机分布的指定均值和方差的矩阵:将randn产生的结果乘以标准差,然后加上期望均值即可)

例如:产生均值为0.6,方差为0.1的一个5×5矩阵。


例如zeros(size(A)) 返回一个与矩阵A同大小的零矩阵。其他特殊矩阵也可使用这种用法。


例如:fix(a+(b-a+1)*rand(m,n)):产生[a, b]区间上均匀分布的随机整数。


2. 用于专门学科的特殊矩阵

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 的伴随矩阵


--------------------------------------------------------------------------------

二、矩阵变换

1. 对角阵

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

1.1 提取矩阵的对角线元素

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


1.2 构造对角矩阵

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

2. 三角阵

  • 上三角阵:对角线以下的元素全为0的矩阵。
  • 下三角阵:对角线以上的元素全为0的矩阵。

2.1 上三角阵

  • triu(A):提取矩阵A的主对角线及以上的元素。
  • triu(A, k):提取矩阵A的第k条对角线及以上的元素。

例如:提取4阶魔方矩阵第-1条对角线及以上的元素


2.2 下三角阵

  • tril(A):提取矩阵A的主对角线及以下的元素。
  • tril(A, k):提取矩阵A的第k条对角线及以下的元素。

例如:提取4阶魔方矩阵第-1条对角线及以下的元素

3. 矩阵的转置

  • 转置运算符是小数点后接单引号(.')
  • 共轭转置,其运算符是单引号('),它在转置的基础上还要取每个数的复共轭。

如果矩阵是实矩阵,那么转置和共轭转置是等效的;两者的区别在于矩阵是复矩阵时。

4. 矩阵的翻转

  • fliplr(A):对矩阵A实施左右翻转。
  • flipud(A):对矩阵A实施上下翻转。

举例:验证魔方矩阵的主对角线、副对角线元素之和相等。

>> 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

5. 矩阵的求逆

  • 对于一个方阵A,如果存在一个与其同阶的方阵B,使得AB=BA=I(I为单位矩阵),则A和B互称逆矩阵。
  • inv(A):求方阵A的逆矩阵。

--------------------------------------------------------------------------------

三、矩阵求值

3.1 方阵的行列式

  • 把一个方阵看做一个行列式,并对其按行列式的规则求值,这个值就是方阵所对应的行列式的值。
  • det(A):求方阵A所对应的行列式的值。

3.2 矩阵的秩

  • 矩阵线性无关的行数或列数称为矩阵的秩。
  • rank(A):求矩阵A的秩。

举例:求3~20阶魔方阵的秩。



3.3 矩阵的迹

  • 矩阵的迹等于矩阵的主对角线元素之和,也等于矩阵的特征值之和。
  • trace(A):求矩阵A的迹。

3.4 向量和矩阵的范数

向量或矩阵的范数用来度量向量或矩阵在某种意义下的长度。

(1) 向量的3种常用范数


对应地,在MATLAB中,有:

  • norm(V, 1):计算向量V的1范数。
  • norm(V)或者norm(V, 2):计算向量V的2范数。
  • norm(V, inf):计算向量V的∞范数。

(2) 矩阵的3种常用范数


对应地,在MATLAB中,有:

  • norm(A, 1):计算矩阵A的1范数。
  • norm(A)或者norm(A, 2):计算矩阵A的2范数。
  • norm(A, inf):计算矩阵A的∞范数。

--------------------------------------------------------------------------------

四、矩阵的特征值与特征向量

1. 定义

        设A是n阶方阵,如果存在常数λ和n维非零列向量x,使得等式Ax=λx成立,则称λ为A的特征值,x是对应特征值λ的特征向量。

2. 计算

        在MATLAB中,采用函数eig()计算矩阵的特征值和特征向量,调用方式如下:

  • E = eig(A):求矩阵A的全部特征值,构成向量E
  • [X, D] = eig(A):求矩阵A的全部特征值,构成对角阵D,并产生矩阵X,X各列是相应的特征向量。

--------------------------------------------------------------------------------

五、稀疏矩阵

1.定义

        零元素远远多于非零元素的矩阵。

2. 矩阵的存储方式

        完全存储方式和稀疏存储方式

完全存储方式:将矩阵所有元素按列存储在内存单元中。

稀疏存储方式:只存储矩阵非零元素的值及其位置(即行号和列号)。采用稀疏存储方式时,矩阵元素的存储顺序并没有改变,也是按列的顺序进行存储。

(1) 完全存储方式和稀疏存储方式之间的转化

        采用函数sparse()实现稀疏存储,采用函数full()实现完全存储。


(2) 直接建立稀疏存储矩阵

函数sparse()的其他调用格式:

  • sparse(m,n):生成一个m×n的所有元素都是零的稀疏矩阵。
  • sparse(u,v,S):其中u,v,S是3个等长的向量。S是要建立的稀疏存储矩阵的非零元素,u(i)和v(i)分别是S(i)的行下标与列下标。

另一种直接建立稀疏存储矩阵的方式是调用函数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列。


猜你喜欢

转载自blog.csdn.net/qq_15971883/article/details/80770827