奇异值分解的一些特性以及应用小案例
奇异值分解的一些特性以及应用小案例

奇异值分解的一些特性以及应用小案例一、奇异值分解的特性1.唯一性:对于任意一个矩阵A,它的奇异值分解是唯一的。
也就是说,任意两个不同的SVD分解结果之间,只有奇异向量的顺序和奇异值的正负可能不同。
2.矩阵的逆和伪逆:对于一个非奇异矩阵A,它的逆可以通过对SVD 分解后的三个矩阵进行逆乘得到,即A的逆等于VΣ⁺U^T,其中Σ⁺是Σ的逆矩阵的转置。
当A是一个奇异矩阵时,可以用伪逆来表示它的逆。
3.奇异值与特征值的关系:对于一个方阵A,它的SVD分解与特征值分解存在一定的关联。
A的非零奇异值的平方等于A的非零特征值,而U 和V中的列向量分别是A的左特征向量和右特征向量。
二、奇异值分解的应用案例1.图像压缩:在图像处理中,SVD可以用于对图像进行压缩。
将图片矩阵进行SVD分解后,可以利用奇异值的特性,选择数值较大的奇异值,然后将较小的奇异值设为0,以达到降低图像质量的目的。
这样就可以减少图像所需的存储空间,同时避免图像失真过大。
2.推荐系统:在推荐系统中,SVD可以用于对用户和物品之间的隐含关系进行建模。
将用户-物品评分矩阵进行SVD分解,得到用户特征矩阵和物品特征矩阵,然后可以通过计算用户特征向量和物品特征向量之间的相似度,来预测用户对未评分物品的喜好程度,从而实现个性化的推荐。
3.语言模型:在自然语言处理中,SVD可以用于构建词向量的模型。
通过对大量文本数据进行SVD分解,可以得到一个降维后的向量空间,每个词语对应一个向量。
这些向量可以捕捉到不同词语之间的语义关系,例如可以用向量表示"男人"-"女人"的关系,从而进行词义相似度计算、文本分类、情感分析等任务。
以上是奇异值分解的一些特性以及应用案例的简要介绍。
奇异值分解具有唯一性、与特征值分解有一定的关系,可以用于矩阵的逆和伪逆计算。
在实际应用中,SVD被广泛用于图像压缩、推荐系统和语言模型等领域。
通过对SVD的理解和应用,可以在相关领域中提供强大的分析和建模能力。
matlab奇异值分解应用案例

一、概述Matlab是一种用于数学计算和数据可视化的高级编程语言和环境,被广泛应用于工程、科学和商业领域。
在Matlab中,奇异值分解(Singular Value Dposition,简称SVD)是一种常用的矩阵分解方法,可以用于解决多种实际问题。
本文将介绍Matlab奇异值分解的基本原理和应用案例。
二、奇异值分解的基本原理1.1 奇异值分解的概念奇异值分解是将一个矩阵分解为三个矩阵的乘积的过程,其数学表达式为:A = UΣV^T,其中A是一个m×n的矩阵,U是一个m×m的正交矩阵,Σ是一个m×n的对角矩阵,V^T是一个n×n的正交矩阵。
奇异值分解的主要思想是将原始矩阵A分解为两个正交矩阵U和V^T 以及一个对角矩阵Σ的乘积。
奇异值分解在数据压缩、特征提取、线性回归等领域具有广泛的应用。
1.2 奇异值分解的计算方法在Matlab中,可以使用svd函数来对矩阵进行奇异值分解。
svd函数的语法为:[U, S, V] = svd(A),其中A是待分解的矩阵,U、S和V 分别是奇异值分解的结果。
1.3 奇异值分解的应用范围奇异值分解可以应用于图像处理、信号处理、推荐系统、主成分分析等各种领域。
在实际应用中,奇异值分解通常用于降维、矩阵逆的计算、矩阵的伪逆计算等问题。
下面将介绍几个Matlab中奇异值分解的应用案例。
三、奇异值分解在图像处理中的应用2.1 图像压缩奇异值分解可以用于图像的压缩和恢复。
将图像矩阵进行奇异值分解,然后只保留部分奇异值,舍弃较小的奇异值,最后根据部分奇异值重构图像。
通过这种方式,可以实现图像的压缩和恢复,减少存储空间同时保持图像质量。
2.2 图像去噪奇异值分解可以用于图像的去噪。
对含有噪声的图像进行奇异值分解,然后将奇异值进行阈值处理,去除噪声干扰,最后根据处理后的奇异值重构图像。
这种方法能够在一定程度上减少图像中的噪声,提高图像的质量。
矩阵奇异值分解的实际应用

矩阵奇异值分解的实际应用
矩阵奇异值分解(SVD)在实际中有很多应用,下面是其中的一些例子:
- 图像压缩:SVD可以将图像的大小最小化到可接受的质量水平,从而在相同磁盘空间中存储更多图像。
它利用了在SVD之后仅获得的一些奇异值很大的原理,通过修剪三个矩阵中的前几个奇异值,可以获得原始图像的压缩近似值,人眼无法区分一些压缩图像。
- 数据降维:在大多数应用中,我们希望将高秩矩阵缩减为低秩矩阵,同时保留重要信息。
SVD可以实现这一目标,通过保留前r个较大的奇异值,来近似表示原始矩阵,从而达到降维的目的。
- 推荐系统:在推荐系统中,SVD可以用于计算用户和项目之间的相似度。
通过将用户和项目的矩阵进行奇异值分解,可以得到一个包含奇异值和左右奇异向量的矩阵。
这些奇异值和奇异向量可以用于计算用户和项目之间的相似度,从而为用户推荐类似的项目。
总之,矩阵奇异值分解在数据压缩、数据降维、推荐系统等方面都有重要的应用,它可以帮助我们从高维数据中提取关键信息,同时保持数据的重要特征。
奇异值分解求解方程组

奇异值分解求解方程组摘要:1.奇异值分解的定义和基本概念2.奇异值分解在求解方程组中的应用3.奇异值分解的优点和局限性正文:一、奇异值分解的定义和基本概念奇异值分解(Singular Value Decomposition,简称SVD)是一种重要的矩阵分解方法,它将一个矩阵分解为三个矩阵的乘积,分别是一个正交矩阵U、一个对角矩阵Σ和一个正交矩阵V。
其中,Σ的对角线上的元素称为奇异值。
二、奇异值分解在求解方程组中的应用奇异值分解在求解线性方程组中具有广泛的应用。
假设有一个线性方程组Ax=B,其中A 是一个m×n 矩阵,x 是n 维未知向量,B 是m 维向量。
当A 的秩等于B 的秩时,该方程组有唯一解,可以通过高斯消元法等方法求解。
然而,当A 的秩小于B 的秩时,该方程组无解或者有无穷多解。
在这种情况下,奇异值分解可以用来求解该方程组的最优解。
具体做法是,将方程组表示为矩阵形式Ax=B,然后对矩阵A 进行奇异值分解,得到UΣV*。
将UΣV*代入方程组,可以得到一个新的方程组Ux=V*B。
通过求解新方程组,可以得到原方程组的解。
三、奇异值分解的优点和局限性奇异值分解的优点在于它可以处理低秩矩阵,即使矩阵A 的秩小于B 的秩,也能求解线性方程组。
此外,奇异值分解具有数值稳定性,对于噪声干扰较大的数据,仍能得到较好的结果。
然而,奇异值分解也存在局限性。
当奇异值之间的差距较大时,奇异值分解的效果较好;但当奇异值之间的差距较小时,奇异值分解的效果较差,可能会出现计算误差较大的情况。
综上所述,奇异值分解是一种求解线性方程组的有效方法,尤其在处理低秩矩阵和噪声数据时具有优势。
使用奇异值分解进行矩阵分解的实际应用(Ⅰ)

奇异值分解(SVD)是一种重要的矩阵分解方法,它在数据分析、图像处理、推荐系统等领域有着广泛的应用。
在本文中,我们将探讨奇异值分解的原理及其在实际应用中的一些案例。
首先,让我们来了解一下奇异值分解的原理。
奇异值分解是将一个矩阵分解为三个矩阵的乘积的过程。
对于一个矩阵A,它的奇异值分解可以表示为A=UΣV^T,其中U和V是正交矩阵,Σ是一个对角矩阵,对角线上的元素称为奇异值。
通过奇异值分解,我们可以将原始矩阵表示为一些基础特征的线性组合,从而能够更好地理解和处理原始数据。
在数据分析领域,奇异值分解被广泛应用于降维和特征提取。
通过对数据矩阵进行奇异值分解,我们可以得到数据的主要特征向量和奇异值,从而可以选择保留最重要的特征,实现数据的降维处理。
这对于高维数据的可视化和分析非常有用。
此外,奇异值分解还可以用于去噪和数据压缩,通过去除奇异值较小的部分,可以实现对数据的有效压缩和去噪处理。
在图像处理领域,奇异值分解也有着重要的应用。
通过对图像矩阵进行奇异值分解,可以实现图像的压缩和去噪处理。
此外,奇异值分解还可以用于图像的特征提取和图像匹配,对于图像识别和图像处理有着重要的意义。
在推荐系统领域,奇异值分解被广泛应用于协同过滤算法。
通过对用户-物品评分矩阵进行奇异值分解,可以得到用户和物品的隐含特征向量,从而可以实现对用户和物品之间的关联关系进行分析和推荐。
奇异值分解在推荐系统中的应用,大大提高了推荐的准确性和效率。
除了上述领域之外,奇异值分解还在信号处理、文本挖掘、自然语言处理等领域有着重要的应用。
通过对大规模数据进行奇异值分解,可以实现对数据的有效分析和处理,为实际应用提供了强大的工具支持。
综上所述,奇异值分解作为一种重要的矩阵分解方法,具有广泛的实际应用价值。
在数据分析、图像处理、推荐系统等领域,奇异值分解都起着不可替代的作用。
随着大数据和人工智能技术的发展,奇异值分解的应用前景将会更加广阔,为实际问题的解决提供更多可能性。
奇异值分解的一些特性以及应用小案例

a11 a12
a21
a22
am
am
1 2
a11
a21
a12 a22
a1n a2n
a1n
a2n
amn
am1
am2
amn
图 2. AT A 方阵迹的形成过程
1.2 矩阵 AB 的迹等于矩阵 BA 的迹 设 A Rmn , B Rnm ,令 A (aij )mn , B (bij )nm ,则 tr( AB) tr(BA) 。
下面随机举个数据矩阵 data(12,9) ,12 行 9 列,如下所示:
1 0 0 1 0 0 0 0 0
1 0 1 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0
0 1 1 0 1 0 0 0 0
0 1 1 2 0 0 0 0 0
data
0 0
aijb ji
i1 j 1
b11 b12 b1m
B
(bij )nm
b21
b22
b2m
bn1
bn2
bnm
a11 a12 a1n
A
(aij )mn
a21
a22
a2
n
am1
am 2
amn
n2
,占总信息量的
2 r 1 12
2 r 1
奇异值分解在信号处理中的实际案例分析(七)

奇异值分解在信号处理中的实际案例分析奇异值分解(Singular Value Decomposition,SVD)是一种重要的矩阵分解方法,被广泛应用于信号处理、数据压缩、模式识别等领域。
在本文中,我们将通过几个实际案例来探讨奇异值分解在信号处理中的应用。
案例一:图像压缩图像压缩是SVD在信号处理中的一项重要应用。
通过对图像矩阵进行奇异值分解,可以将图像信息压缩到较小的空间中,从而实现图像的压缩和存储。
以一张512x512大小的灰度图像为例,我们可以将其表示为一个512x512的矩阵A。
通过对矩阵A进行奇异值分解,可以得到三个矩阵U、S、V,其中U和V是正交矩阵,S是对角矩阵。
我们可以对S矩阵保留其中较大的奇异值,而将较小的奇异值置零,从而实现图像的压缩。
通过这种方式,我们可以将图像信息压缩到较小的空间中,实现图像的高效存储和传输。
案例二:音频信号处理在音频信号处理领域,奇异值分解也被广泛应用。
通过对音频信号矩阵进行奇异值分解,可以实现音频信号的降噪和压缩。
以一段音频信号为例,我们可以将其表示为一个时间-频率矩阵。
通过对该矩阵进行奇异值分解,可以得到三个矩阵U、S、V,其中U和V是正交矩阵,S是对角矩阵。
我们可以对S矩阵保留其中较大的奇异值,而将较小的奇异值置零,从而实现音频信号的降噪和压缩。
通过这种方式,我们可以实现音频信号的高效处理和传输。
案例三:图像去噪除了图像压缩外,奇异值分解还可以应用于图像去噪。
在实际应用中,图像通常会受到各种噪声的影响,从而降低图像的质量。
通过对图像矩阵进行奇异值分解,可以实现图像的去噪。
通过保留较大的奇异值,而将较小的奇异值置零,可以有效去除图像中的噪声,从而提高图像的质量。
综上所述,奇异值分解在信号处理中具有重要的应用价值。
通过对信号矩阵进行奇异值分解,可以实现信号的压缩、降噪等功能。
在实际应用中,奇异值分解已被广泛应用于图像压缩、音频信号处理、图像去噪等领域,为信号处理领域带来了许多重要的应用价值。
利用奇异值分解进行数据降噪的最佳实践(十)

利用奇异值分解进行数据降噪的最佳实践数据在如今的社会中变得异常重要,它们可以帮助我们更好地了解世界,做出更好的决策。
然而,随着数据规模的增大,数据中出现的噪音也越来越多,这就给数据分析带来了挑战。
在这个背景下,奇异值分解(SVD)被广泛应用于数据降噪的实践中,成为了一种常用的数据处理方法。
今天,我们将探讨如何利用奇异值分解进行数据降噪的最佳实践。
1. 奇异值分解的基本原理首先,我们需要了解奇异值分解的基本原理。
奇异值分解是一种矩阵分解的方法,它可以将一个矩阵分解为三个矩阵的乘积。
具体来说,对于一个矩阵A,奇异值分解可以表示为A=UΣV^T,其中U和V是正交矩阵,Σ是一个对角矩阵。
通过奇异值分解,我们可以将原始矩阵A进行降维,只保留最重要的信息。
2. 数据降噪的应用场景数据降噪的应用场景非常广泛。
在图像处理中,我们可以利用奇异值分解去除图像中的噪音,从而提高图像的清晰度。
在推荐系统中,我们可以利用奇异值分解对用户-物品矩阵进行降维,从而提高推荐的准确性。
另外,在金融领域,我们也可以利用奇异值分解去除金融数据中的噪音,提高数据分析的准确性。
3. 利用奇异值分解进行数据降噪的步骤在实际应用中,利用奇异值分解进行数据降噪通常分为以下几个步骤:(1)数据预处理:首先,我们需要对原始数据进行预处理,包括数据清洗、标准化等操作。
这一步是非常重要的,它可以帮助我们提高奇异值分解的效果。
(2)奇异值分解:接下来,我们对预处理后的数据进行奇异值分解。
通过奇异值分解,我们可以得到U、Σ和V这三个矩阵。
(3)降维:在得到奇异值分解的结果后,我们可以根据实际需求选择保留多少个奇异值。
通常情况下,我们会选择保留最大的k个奇异值,从而实现数据的降维。
(4)重构数据:最后,我们利用保留的奇异值和对应的左右奇异向量重构原始数据。
这样,我们就得到了去除噪音后的数据。
4. 实际案例分析为了更好地理解利用奇异值分解进行数据降噪的最佳实践,让我们通过一个实际案例来进行分析。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一部分:预备知识1.1 矩阵的F-范数与矩阵迹的关系引理:设m nA R⨯∈,令()ij m n A a ⨯=,则2211||||||()()m nT T Fiji j A atr AA tr A A =====∑∑;其中,()tr ∙定义如下:令方阵111212122212r r r r rr m m m m m m M m m m ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦,则11221()r rr iii tr M m m m m ==+++=∑ ,即矩阵M 的迹。
注意,()tr ∙只能作用于方阵。
那么,下面来看下为什么有2211||||||()()m nT T Fiji j A atr AA tr A A =====∑∑?首先,2211||||||m nFiji j A a===∑∑这个等式是矩阵F-范数的定义,即一个矩阵的F-范数等于矩阵中每个元素的平方和。
其次,因111212122212()n n ij m nm m mn a a a a a a A a a a a ⨯⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎣⎦ ,则112111222212m m T n n mn a a a a a a A a a a ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦,易得2211()()||||||mnT TijF i j tr AA tr A A aA =====∑∑。
(T AA 或TA A 的第r 个对角元素等于第r行或列元素的平方和,所有对角元素之和就是矩阵每个元素的平方和,即有上式成立。
)此过程如图1和图2所示。
111211121121222122221212n m n m T m m mn n n mn a a a a a a a a a a a a AA a a a a a a ⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⨯⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦图1. T AA 方阵迹的形成过程112111112112222212221212m n m n T n n mn m m mn a a a a a a a a a a a a A A a a a a a a ⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⨯⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦图2. T A A 方阵迹的形成过程1.2 矩阵AB 的迹等于矩阵BA 的迹设m nA R ⨯∈,n mB R⨯∈,令()ij m nA a ⨯=,()ij n mB b ⨯=,则()()tr AB tr BA =。
分析如下:111212122212()n n ij m nm m mn a a a a a a A a a a a ⨯⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎣⎦111212122212()m m ij n mn n nm b b b b b b B b b b b ⨯⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎣⎦图3. 11()mnijjii j tr AB a b===∑∑111212122212()m m ij n mn n nm b b b b b b B b b b b ⨯⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎣⎦111212122212()n n ij m nm m mn a a a a a a A a a a a ⨯⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎣⎦图4. 11()nmji ijj i tr BA b a ===∑∑第二部分:奇异值分解本部分主要在矩阵奇异值分解(Singular Value Decomposition )U SVD =的基础之上,从理论上分析降维之后信息到底损失了多少,以及为什么要选取奇异值最大的那部分矩阵块;紧接着,举个例子来展示取不同奇异值的情况下,信息损失了多少,让大家进一步直观地理解其中的机理。
2.1 矩阵U 的奇异值分解:U SVD =设矩阵m nU R⨯∈()m n >,奇异值分解为:U SVD =;其中,m m S R ⨯∈,m nV R ⨯∈,n n D R ⨯∈,如下式所示:111121111121111212212222212222122212121200000000m m n m m n nn n n mn m m mm n n nn v u u u s s s d d d v u u u s s s d d d v u u u s s s d d d ⎡⎤⎢⎥⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⨯⨯⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦⎢⎥⎣⎦其中,矩阵S 和D 都是正交矩阵,即T m S S I =,T m SS I =,T n DD I =,T n D D I =,矩阵S和D的行之间相互正交,列之间也相互正交,且行向量为单位向量,列向量也为单位向量。
奇异值分解过程如图5所示。
图5. U=SVD矩阵U奇异值分解之后,矩阵V可以分成两块,一个n阶的对角矩阵(对角元素为U的n个奇异值)和一个全零矩阵;这样的话,通过矩阵分块理论,可以把奇异值分解简化,如图6所示。
图6. 矩阵分块简化奇异值分解注意,在这里,矩阵U 的奇异值分解我并没有强调V 矩阵的对角元素非要按照从大到小排列,可以是随意的。
因此,进一步对矩阵进行分块,将矩阵V 分解成两块对角矩阵,矩阵S 和D 作相应的分块,如图7所示。
数学形式如下:111222[,]V O D U S S O V D ⎡⎤⎡⎤=⎢⎥⎢⎥⎣⎦⎣⎦111211222[,]D S V S O S O S V D ⎡⎤=++⎢⎥⎣⎦111222[,]D S V S V D ⎡⎤=⎢⎥⎣⎦111222S V D S V D =+图7. 矩阵分块变换奇异值分解形式因1S 和2S 的列向量相互正交,且为单位向量,故有(1,2)Ti i S S I i ==;同理,1D 和2D 的行向量相互正交,且为单位向量,故有(1,2)T i i D D I i ==。
2.2矩阵U 的近似奇异值分解:111U S V D ≈在实际应用中,往往通过矩阵的近似分解来达到降维的目的,从而可以进行数据压缩。
这样,一方面节省了存储空间,另一方面也将节省计算资源;最重要的一点,在某些应用(如信息检索,文本分类聚类)中,可以挖掘数据中潜在的语义结构,继而更深一步探讨事物的本质是什么。
但是,矩阵的近似分解会丢失掉一部分信息,怎样分解才能使得信息量丢失的最少同时又有降维的目的呢?定量层面上又丢失多少呢?下面我们来从理论上分析下这些问题。
上面已经给出了矩阵U 的奇异值分解形式以及分块后的变形形式(如图7所示)。
假设将其降到r 维空间下,则有:111U S V D ≈如图7所示,矩阵U 近似成左边三个矩阵1S ,1V 和1D 的乘积了,具体如图8所示。
图8. 111U S V D ≈这样的话,就损失了最右边的三个矩阵乘积部分,即222S V D 。
那么损失的信息量怎么计算呢?一般可以用矩阵的F-范数来表示。
因此,111U S V D ≈之后损失的信息量为2222||||F S V D 。
2222222222||||[()()]TF S V D tr S V D S V D =222222()T T Ttr S V D D V S =2222()T T tr S V V S =2222()TT tr S S V V =22()T tr V V =22211r r n λλλ++=+++因此,可以看到,损失的信息量即为被“抛弃的奇异值的平方和”!我们知道,奇异值分解后,矩阵V 就是奇异值的“对角矩阵”;如果我们按照奇异值从大到小排列,取前r 个奇异值以及对应的S 和D 矩阵,那么我们就能最大程度上保留原来的信息量,从而减少了信息的损失量。
这就是为什么以前总是提“按照奇异值从大到小排列,取前r 个,这样得到的矩阵近似分解信息损失的最小”的说法了,在这里得到了分析和验证。
下面我们在看看矩阵原始的信息量是多少?如果猜想一下的话,对,就是所有的奇异值的平方和就是总的信息量!22||||||||[()()]TF F U SVD tr SVD SVD ==()T T T tr SVDD V S =()T T tr SVV S =()T T tr S SVV =()T tr VV =22211n λλλ=+++因此,111U S V D ≈的信息损失量为22211r r n λλλ+++++ ,占总信息量的2221122211r r n n λλλλλλ++++++++ 。
2.3 例子演示此部分主要是随机举个例子来展示下奇异值分解的结果,以及取不同奇异值的情况下信息的损失情况,看看是不是和理论上推导的结论相一致?理论与例子相结合,进一步加深大家对奇异值分解及其近似的理解。
下面随机举个数据矩阵(12,9)data ,12行9列,如下所示:100100000101000000110000000011010000011200000010010000010010000001100000010000001000001110000000111000000011data ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦Matlab 中奇异值分解命令:[S,V,D]=svd(data)奇异值分解简化命令:[S,V,D]=svd(data,0)下面通过Matlab代码来展示每当“抛弃”一个奇异值后,其损失量是多少?Matlab代码:svd_sample.m% 清屏及变量clc;clear;% 数据data=[ 1 0 0 1 0 0 0 0 01 0 1 0 0 0 0 0 01 1 0 0 0 0 0 0 00 1 1 0 1 0 0 0 00 1 1 2 0 0 0 0 00 1 0 0 1 0 0 0 00 1 0 0 1 0 0 0 00 0 1 1 0 0 0 0 00 1 0 0 0 0 0 0 10 0 0 0 0 1 1 1 00 0 0 0 0 0 1 1 10 0 0 0 0 0 0 1 1];% 数据大小[m,n]=size(data)% 奇异值分解[S,V,D]=svd(data,0)% 矩阵分解近似优化len=min(m,n)% 损失信息量记录loss=[]% 对应的奇异值的平方compare=[]% 奇异值对角化namda=diag(V)fori=1:lenloss=[loss,trace(S(:,i)*D(i,:)*D(i,:)'*S(:,i)')*namda(i)^2]; compare=[compare,namda(i)^2];end% 输出信息量损失loss% 输出奇异值平方compare% 判断信息损失量是否等于奇异值的平方norm(loss-compare,2)运行结果:loss =11.1615 6.4602 5.5411 2.7045 2.2645 1.7066 0.71560.3138 0.1323compare =11.1615 6.4602 5.5411 2.7045 2.2645 1.7066 0.71560.3138 0.1323ans =8.9841e-015显然,理论分析的结论在例子中得到了验证。