持续创作,加速成长!这是我参与「掘金日新计划 · 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中的常见矩阵运算函数及其使用方法举例。在实际使用时,我们可以通过查阅文档的形式来快速调用。