MATLAB学习笔记(6)

123 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第27天,点击查看活动详情

导语

本文为我之前在CSDN平台上的一篇博客记录。原链接为:blog.csdn.net/u011426236/…

1.矩阵运算

1.1矩阵分析

1.1.1向量和矩阵的范数运算

在MATLAB中,求矩阵范数的函数具体方法如下:

  • N = norm(x, p):对任意大于1的p值,返回向量x的p阶范数

  • N = norm(x):返回向量的2阶范数

  • N = norm(x, inf):返回向量的无穷阶范数

  • N = norm(x, -inf):返回向量的负无穷阶范数

  • N = norm(A):返回矩阵A的2阶范数

  • N = norm(A, p):返回矩阵A的p阶范数

当矩阵维数比较大时,可以使用normest函数来求解一个近似值,其用法如下:

  • N = normest(A):估算A的二阶范数值

  • N = normest(A, tol):估算A的二阶范数值,相对误差为tol

>> x = [1:4]

x =

     1     2     3     4

>> norm(x)

ans =

    5.4772

>> A = magic(3)

A =

     8     1     6
     3     5     7
     4     9     2

>> norm(A)

ans =

    15

>> normest(A)

ans =

   15.0000

例如上面使用norm函数分别对一个向量和矩阵求出了其二阶范数值。

1.1.2矩阵的秩

在MATLAB中使用函数rank来计算矩阵的秩,其调用格式如下:

rank(A)%用默认允许误差计算矩阵的秩。

rank(A, tol)%误差为tol

>> A = [1 1 1 2;4 5 6 7;1 3 5 9;3 3 3 6]

A =

     1     1     1     2
     4     5     6     7
     1     3     5     9
     3     3     3     6

>> rank(A)

ans =

     3

这里求得矩阵A的秩为3。

1.1.3矩阵的行列式

在MATLAB中使用函数det来计算矩阵的行列式。这里不额外进行举例说明,读者可自行验证尝试。

1.1.4矩阵的迹

在MATLAB中使用函数trace来计算矩阵的迹。这里不额外进行举例说明,读者可自行验证尝试。

1.1.5矩阵的化零矩阵

化零矩阵的定义为:对于非满秩矩阵A,若存在矩阵B使AB=0,且B*B=I,即不等于0,则称矩阵B为矩阵A的化零矩阵。在MATLAB中可以使用null函数求解,其调用格式为:

Z = null(A):返回矩阵A的一个化零矩阵,若不存在则返回空矩阵

Z = null(A, 'r'):返回有理数形式的化零矩阵

>> A

A =

     1     1     1     2
     4     5     6     7
     1     3     5     9
     3     3     3     6

>> null(A)

ans =

   -0.4082
    0.8165
   -0.4082
    0.0000

>> A * null(A)

ans =

   1.0e-14 *

    0.1131
    0.4153
    0.2231
    0.3560

>> null(A, 'r')

ans =

     1
    -2
     1
     0

>> A * null(A, 'r')

ans =

     0
     0
     0
     0

1.1.6矩阵的正交空间

在MATLAB中使用函数orth来计算矩阵的正交空间。

1.1.7矩阵的约化行阶梯形式

在MATLAB中使用函数rref来计算矩阵的行阶梯形矩阵。

>> A

A =

     1     1     1     2
     4     5     6     7
     1     3     5     9
     3     3     3     6

>> B = rref(A)

B =

     1     0    -1     0
     0     1     2     0
     0     0     0     1
     0     0     0     0

1.1.8矩阵空间之间的夹角

在MATLAB中使用函数subspace来计算两个矩阵的夹角。这里不额外进行举例说明,读者可自行验证尝试。

1.2矩阵分解

貌似书上内容有些看不懂....-->_ -->,暂时跳过0.0

1.3特征值与特征向量

2.稀疏矩阵

2.1稀疏矩阵的生成

(1).可以用sparse函数生成稀疏矩阵,函数full则可以将一个稀疏矩阵转换成一个满矩阵。

>> A = [0 0 0 2 0;1 0 0 0 1;0 0 0 9 0;0 5 0 0 3;1 2 3 0 0]

A =

     0     0     0     2     0
     1     0     0     0     1
     0     0     0     9     0
     0     5     0     0     3
     1     2     3     0     0

>> B = sparse(A)

B =

   (2,1)        1
   (5,1)        1
   (4,2)        5
   (5,2)        2
   (5,3)        3
   (1,4)        2
   (3,4)        9
   (2,5)        1
   (4,5)        3

>> C = full(B)

C =

     0     0     0     2     0
     1     0     0     0     1
     0     0     0     9     0
     0     5     0     0     3
     1     2     3     0     0

(2).利用特定函数建立稀疏矩阵

常用函数如下:

  • S = speye(m, n)%创建单位稀疏矩阵

  • S = spones(X)%创建非零元素为1的稀疏矩阵

  • S = sprand(X)%创建非零元素为0-1均匀分布的随机数的稀疏矩阵

  • S = sprandn(X)%创建非零元素为标准高斯分布的随机数的稀疏矩阵

  • S = sprandsym(X)%创建非零元素为标准高斯分布的随机数的对称稀疏矩阵

  • S = spdiags(X)%创建对角稀疏矩阵

>> A = [0 0 0 2 0;1 0 0 0 1;0 0 0 9 0;0 5 0 0 3;1 2 3 0 0]

A =

     0     0     0     2     0
     1     0     0     0     1
     0     0     0     9     0
     0     5     0     0     3
     1     2     3     0     0

>> speye(5)

ans =

   (1,1)        1
   (2,2)        1
   (3,3)        1
   (4,4)        1
   (5,5)        1

>> spones(A)

ans =

   (2,1)        1
   (5,1)        1
   (4,2)        1
   (5,2)        1
   (5,3)        1
   (1,4)        1
   (3,4)        1
   (2,5)        1
   (4,5)        1

>> sprand(A)

ans =

   (2,1)       0.3371
   (5,1)       0.1622
   (4,2)       0.7943
   (5,2)       0.3112
   (5,3)       0.5285
   (1,4)       0.1656
   (3,4)       0.6020
   (2,5)       0.2630
   (4,5)       0.6541

>> sprandn(A)

ans =

   (2,1)       0.7394
   (5,1)       1.7119
   (4,2)      -0.1941
   (5,2)      -2.1384
   (5,3)      -0.8396
   (1,4)       1.3546
   (3,4)      -1.0722
   (2,5)       0.9610
   (4,5)       0.1240

>> sprandsym(A)

ans =

   (2,1)       1.4367
   (5,1)      -1.9609
   (1,2)       1.4367
   (4,2)      -0.1977
   (5,2)      -1.2078
   (5,3)       2.9080
   (2,4)      -0.1977
   (1,5)      -1.9609
   (2,5)      -1.2078
   (3,5)       2.9080

>> spdiags(A)

ans =

     1     0     0     1     0     0
     0     2     5     0     0     0
     0     0     3     0     0     0
     0     0     0     0     9     2
     0     0     0     0     3     1

2.2稀疏矩阵的运算

运算规则与满矩阵一样,只要运算中至少有一个满矩阵,结果就为满矩阵。若均为稀疏矩阵参与运算,则返回值为稀疏矩阵。

总结

本文介绍了一些MATLAB中的常见矩阵运算函数及其使用方法举例。在实际使用时,我们可以通过查阅文档的形式来快速调用。