矩阵的低秩逼近以及逼近后的误差计算——matlab实现

一.矩阵的低秩逼近

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个奇异值给定的。

三.example

在这里插入图片描述
参考资料:http://www.uwenku.com/question/p-rfkumipp-zt.html
侵权请联系

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值