奇异值分解、张量分解与傅里叶变换的深入解析
1. 奇异值分解(SVD)
奇异值分解是一种强大的矩阵分解技术。在进行矩阵重构时,我们可以通过以下代码来实现:
XSVD = U[:,1:r]*S(1:r,1:r)*V(:,1:r)’;
# SVD 近似
errSVD = norm(X-XSVD,2)/norm(X,2);
XrSVD = rU(:,1:r)*rS(1:r,1:r)*rV(:,1:r)’; # rSVD 近似
errrSVD = norm(X-XrSVD,2)/norm(X,2);
这里, XSVD 是通过 SVD 得到的近似矩阵, errSVD 是其相对误差; XrSVD 是通过随机 SVD(rSVD)得到的近似矩阵, errrSVD 是其相对误差。
下面是计算高分辨率图像随机 SVD 的 Python 代码:
import os
import numpy as np
A = imread(os.path.join('..','DATA','jupiter.jpg'))
X = np.mean(A,axis=2) # 将 RGB 转换为灰度图
U, S, VT = np.linalg.svd(X,full_matrices=0) # 完整 SVD
r = 400 # 目标秩
q = 1
# 幂迭代
p = 5
# 过采样参数
rU, rS, rVT = rSVD(X,r
超级会员免费看
订阅专栏 解锁全文
3306

被折叠的 条评论
为什么被折叠?



