SVD分解

 定义:设A为m*n阶矩阵,AHAn个特征值的非负平方根叫作A的奇异值。记为σi(A)>如果把AHA的特征值记为λi(A),则σi(A)λi(AHA)^(1/2)
>>

奇异值分解是线性代数中一种重要的矩阵分解,在信号处理、统计学等领域有重要应用。


定理
(奇异值分解)设Am*n阶复矩阵,则存在m阶酉阵Un阶酉阵V,使得:>>

A = U*S*V’>>

其中S=diag(σi,σ2,……,σr),σi>0 (i=1,…,r)r=rank(A)


推论:
Am*n阶实矩阵,则存在m阶正交阵Un阶正交阵V,使得>>

A = U*S*V’>>

其中S=diag(σi,σ2,……,σr),σi>0 (i=1,…,r)r=rank(A)


说明:>>

1、        奇异值分解非常有用,对于矩阵A(m*n),存在U(m*m)V(n*n)S(m*n),满足A = U*S*V’UV中分别是A的奇异向量,而SA的奇异值。AA'的正交单位特征向量组成U,特征值组成S'SA'A的正交单位特征向量组成V,特征值(与AA'相同)组成SS'。因此,奇异值分解和特征值问题紧密联系。 >>

2、        奇异值分解提供了一些关于A的信息,例如非零奇异值的数目(S的阶数)和A的秩相同,一旦秩r确定,那么U的前r列构成了A的列向量空间的正交基。
>>



matlab
奇异值分解
>>


函数  svd>>

格式  s = svd (A)    %返回矩阵A的奇异值向量>>

[U,S,V] = svd(A)  %返回一个与A同大小的对角矩阵S,两个酉矩阵UV,且满足= U*S*V'。若Am×n阵,则Um×m阵,Vn×n阵。奇异值在S的对角线上,非负且按降序排列。>>

[U1,S1,V1]=svd(X,0) %产生A的“经济型”分解,只计算出矩阵U的前n列和n×n阶的S
>>


说明:>>

1.经济型”分解节省存储空间。>>

2. U*S*V'U1*S1*V1'>>

你可能感兴趣的:(matlab,存储)