一.矩阵的低秩逼近
1.1 低秩矩阵的创建
A A A为 m × n m×n m×n大小的矩阵,则 s v d svd svd分解以后 [ U S V ] = s v d ( A ) [U S V] = svd(A) [USV]=svd(A)里面, U U U为 m × m m×m m×m, S S S为 m × n m×n m×n, V V V为 n × n n×n n×n
A = randn(8,8);%首先随机创建一个8×8的矩阵
[U S V] = svd(A);%对矩阵进行svd分解
%低秩矩阵逼近的构建
k = 5;%选择秩为k去逼近A(注意:此时A的秩最多为8)
Ak = U(:,1:k)*S(1:k,1:k)*V(:,1:k)';%k=5,表明使用秩5逼近原矩阵
1.2 秩1矩阵
1.1表述的低秩逼近写的是用秩为k的矩阵去逼近原矩阵A。
但是其实可以在细分一点。矩阵A其实可以拆解成全部秩为1的矩阵相加得到。公式如下:
A
=
∑
i
=
1
k
δ
i
p
i
q
i
T
=
δ
1
p
1
q
1
T
+
δ
2
p
2
q
2
T
+
.
.
.
+
δ
k
p
k
q
k
T
A=\sum_{i=1}^{k}\delta_{i}p_{i}q_{i}^{T}=\delta_{1}p_{1}q_{1}^{T}+\delta_{2}p_{2}q_{2}^{T}+...+\delta_{k}p_{k}q_{k}^{T}
A=∑i=1kδipiqiT=δ1p1q1T+δ2p2q2T+...+δkpkqkT
其中 p i p_{i} pi为左奇异矩阵 U U U里面的列向量, δ i \delta_{i} δi为S里面的奇异值, q i q_{i} qi为右奇异矩阵的列向量。
例如:
用1.1去构建的秩2矩阵
k = 2;%选择秩为2去逼近A(此时拿了前两个奇异值去构建的逼近矩阵)
Ak = U(:,1:k)*S(1:k,1:k)*V(:,1:k)';%k=5,表明使用秩2逼近原矩阵
用1.2去构建的两个秩1矩阵
δ
1
p
1
q
1
T
\delta_{1}p_{1}q_{1}^{T}
δ1p1q1T和
δ
2
p
2
q
2
T
\delta_{2}p_{2}q_{2}^{T}
δ2p2q2T
两者关系
Ak=
δ
1
p
1
q
1
T
+
δ
2
p
2
q
2
T
\delta_{1}p_{1}q_{1}^{T}+\delta_{2}p_{2}q_{2}^{T}
δ1p1q1T+δ2p2q2T
二.逼近的矩阵与原矩阵的误差计算
2.1 常规的矩阵与原矩阵的误差计算
norm(A-Ak) ;%1.2的秩1矩阵就拿这个来算即可
2.2 理论直接看出
有一个theorem ,指出一个矩阵A及其秩k近似的矩阵Ak之间的误差具有由A的第k+1个奇异值给定的。文章来源:https://www.toymoban.com/news/detail-422296.html
三.example
参考资料:http://www.uwenku.com/question/p-rfkumipp-zt.html
侵权请联系文章来源地址https://www.toymoban.com/news/detail-422296.html
到了这里,关于矩阵的低秩逼近以及逼近后的误差计算——matlab实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!