博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
奇异值分解
阅读量:5456 次
发布时间:2019-06-15

本文共 1870 字,大约阅读时间需要 6 分钟。

有一个矩阵M,可以分解为3个矩阵U、S、V,使得U x S x V等于M。U与V都是正交矩阵(乘以自身的转置矩阵结果为单位矩阵)。那么S矩阵主对角线上的元素称为矩阵M的奇异值,其它元素均为0。

"""奇异值分解"""import numpy as npM = np.mat('4 11 14; 8 7 -2')print(M)"""[[ 4 11 14] [ 8  7 -2]]"""U, sv, V = np.linalg.svd(M, full_matrices=False)print(U,U.shape)"""[[-0.9486833  -0.31622777] [-0.31622777  0.9486833 ]] (2, 2)"""print(sv,sv.shape)#[18.97366596  9.48683298] (2,)print(V,V.shape)"""[[-0.33333333 -0.66666667 -0.66666667] [ 0.66666667  0.33333333 -0.66666667]] (2, 3)"""print(U * U.T)"""[[ 1.00000000e+00 -7.27396709e-17] [-7.27396709e-17  1.00000000e+00]]"""print(V * V.T)"""[[1.00000000e+00 3.08395285e-16] [3.08395285e-16 1.00000000e+00]]"""S = np.diag(sv)print(S)"""[[18.97366596  0.        ] [ 0.          9.48683298]]"""#生成原矩阵print(U * S * V)"""[[ 4. 11. 14.] [ 8.  7. -2.]]"""

案例:读取图片的亮度矩阵,提取奇异值与两个正交矩阵,保留部分奇异值,重新生成新的亮度矩阵,绘制图片。

import numpy as npimport scipy.misc as smimport matplotlib.pyplot as mp# 读取图片数据,True提取项目矩阵img = sm.imread('lily.jpg', True)print(img, img.shape)"""[[36.742 35.97  34.97  ... 54.102 54.33  51.042] [37.742 37.742 37.97  ... 54.102 53.33  51.042] [40.34  41.112 40.34  ... 51.732 51.846 50.857] ... [ 5.228  6.228  5.929 ... 71.666 68.954 68.242] [ 6.228  6.228  4.929 ... 73.182 72.182 71.242] [ 6.228  6.228  4.929 ... 69.709 71.709 74.242]] (512, 512)"""# 提取特征值eigvals, eigvecs = np.linalg.eig(np.mat(img))#逆向推到原矩阵eigvals[50:] = 0 #保留50个特征值img2 = eigvecs*np.diag(eigvals)*eigvecs.I# 绘制图片mp.figure('Lily', facecolor='lightgray')mp.subplot(221)mp.imshow(img,cmap='gray')mp.xticks([])mp.yticks([])mp.subplot(222)mp.imshow(img2.real,cmap='gray')mp.xticks([])mp.yticks([])#奇异值分解U,sv,V = np.linalg.svd(np.mat(img))sv[50:] = 0 #保留50个奇异值print(type(U),type(V))img3 = U*np.diag(sv)*Vmp.subplot(224)mp.imshow(img3.real,cmap='gray')mp.xticks([])mp.yticks([])mp.tight_layout()mp.show()

 

转载于:https://www.cnblogs.com/maplethefox/p/11490117.html

你可能感兴趣的文章
第六天 基本文件管理与XFS文件系统备份恢复
查看>>
win10中强制vs2015使用管理员启动
查看>>
UISerachBar / UISearchDisplayController
查看>>
Linux常用的操作命令
查看>>
Redis Desktop Manager
查看>>
css书写规范
查看>>
Asp.net +Jquery-uploadify多文件上传
查看>>
【恐怖的数组模拟】Secret Poems - HihoCoder - 1632
查看>>
大规模机器学习
查看>>
EasyPlayerPro(Windows)流媒体播放器开发之接口设计
查看>>
寻找数组中子数组和的最大值
查看>>
如何系统的进入大数据领域,学习路线是什么?
查看>>
COLLATE Chinese_PRC_CI_AS
查看>>
PHP中面对过程的冗余是什么?
查看>>
函数----函数重载,特殊用途语言特性,函数匹配,函数指针
查看>>
Hive数据查询
查看>>
在vue2框架中,使用背景图片时,在build压缩代码环节图片找不到路径
查看>>
[转]android中最好的瀑布流控件PinterestLikeAdapterView
查看>>
算法面经之百度
查看>>
JavaWeb基础知识第三部分
查看>>