最近因为实验的原因需要把矩阵分解为两个矩阵U✖W,同时要求U是正交列矩阵
那肯定最先想到SVD分解,于是搜索有没有可以直接拿来用的方法,通过下文找到灵感
svd图像压缩
import numpy as np
import os
from PIL import Image
#我主要需要看这部分的代码
def restore(sigma, u, v, K): # 奇异值、左特征向量、右特征向量
m = len(u)
n = len(v[0])
a = np.zeros((m, n))
for k in range(K):
uk = u[:, k].reshape(m, 1)
vk = v[k].reshape(1, n)
a += sigma[k]