svd奇异值分解

本文详细介绍了奇异值分解(SVD)的原理,包括特征值与特征向量的推导,SVD的求解过程,以及奇异值的性质。通过Matlab代码实例展示了如何使用SVD进行数据降维和去噪。核心内容涵盖了SVD在信号处理中的关键作用。
摘要由CSDN通过智能技术生成

简介

奇异值分解是线性代数中重要的矩阵分解,奇异值分解则是特征分解在任意矩阵上的推广。在信号处理、统计学等领域有重要作用。

原理推导

特征值与特征向量

定义:
A x = λ x Ax = λx Ax=λx

符号含义
An*n的矩阵
xn维特征向量
λ矩阵A的特征值

将n个特征值、特征向量进行组合:
( x 1 x 2 ⋯ x n ) − 1 A ( x 1 x 2 ⋯ x n ) = [ λ 1 ⋯ 0 ⋮ ⋱ ⋮ 0 ⋯ λ n ] (x_1\quad x_2\cdots x_n )^{-1}A(x_1\quad x_2\cdots x_n ) = \begin{bmatrix} \lambda_1 & \cdots & 0 \\ \vdots & \ddots & \vdots \\ 0 & \cdots & \lambda_n \end{bmatrix} (x1x2xn)1A(x1x2xn)=λ100λn
一般我们会对x进行单位化,即:向量内积为1。W的n个特征向量为标准正交基,即:
W T W = E n W^TW = E_n WTW=En
W为酉矩阵(若酉矩阵所有元素为实数,即为正交矩阵),即:
W T = W − 1 W^T = W^{-1} WT=W1

即:
W − 1 A W = Λ ⇔ A = W Λ W − 1 W^{-1}AW = \Lambda\Leftrightarrow A = W\Lambda W^{-1} W1AW=ΛA=WΛW1

符号含义
Wn个特征向量组成n维方阵
\Lambdan个特征值组成的对角线方阵

这是对方阵A的分解原理,如果不是方阵就需要应用SVD。

SVD奇异值分解推导

  1. 假设一个矩阵M,大小为m*n。
    M T M 为 一 个 方 阵 且 方 阵 对 称 。 M^TM为一个方阵且方阵对称。 MTM

  2. 对于实对称矩阵,有一个性质就是存在正交矩阵Q,使得:

    Q T A Q = d i a g ( λ 1 , λ 2 . . . ) Q^TAQ = diag(\lambda_1,\lambda_2...) QTAQ=diag(λ1,λ2...)
    即存在:
    Q T M T M Q = d i a g ( λ 1 , λ 2 . . ) Q^TM^TMQ = diag(\lambda_1,\lambda_2..) QTMTMQ=diag(λ1,λ2..)

  3. 令 Σ = d i a g ( λ 1 , λ 2 . . ) , 即 Q T M T M Q = Σ 2 令\Sigma=\sqrt{diag(\lambda_1,\lambda_2..)} ,即Q^TM^TMQ = \Sigma^2 Σ=diag(λ1,λ2..) ,QTMTMQ=Σ2

  4. 令:
    P T = Q T M T / Σ P^T=Q^TM^T/\Sigma PT=QTMT/Σ
    则:
    P = M Q / Σ P=MQ/\Sigma P=MQ/Σ

  5. 由于
    P T P = Q T M T M Q / Σ 2 = E P^TP=Q^TM^TMQ/\Sigma^2=E PTP=QTMTMQ/Σ2=E
    所以P为正交矩阵。(P,Q都为正交矩阵)

  6. 因此
    M = P Σ Q T M=P\Sigma Q^T M=PΣQT

  7. 得出结论:我们可以把任意矩阵分解成两个正交矩阵和一个对角阵。

SVD中P和Q的求解

  1. 由于
    M T = Q Σ T P T M^T=Q\Sigma^TP^T MT=QΣTPT

    M T M = Q Σ T P T P Σ Q T = Q Σ 2 Q T ( 其 中 Σ 为 对 角 阵 , P 为 正 交 矩 阵 ) M^TM=Q\Sigma^TP^TP\Sigma Q^T=Q\Sigma^2Q^T(其中\Sigma为对角阵,P为正交矩阵) MTM=QΣTPTPΣQT=QΣ2QTΣP


  2. M T M = Q Σ 2 Q T , M T M x i = λ i x i M^TM=Q\Sigma^2 Q^T,M^TMx_i=\lambda_ix_i MTM=QΣ2QT,MTMxi=λixi

  3. 所 以 求 出 M T M 的 特 征 向 量 即 可 得 到 Q , 同 理 通 过 M M T 即 可 求 出 P 所以求出M^TM的特征向量即可得到Q,同理通过MM^T即可求出P MTMQMMTP

奇异值性质

  1. 奇异值在奇异值矩阵中是从大到小排列的。
  2. 奇异值的减小特别快。
  3. 常常用前几个奇异值和相应的左右向量取表述整个矩阵。如数据压缩,数据去噪,也可以用于推荐算法。

Matlab代码

filename='附件1.xls';
[num,txt,raw] = xlsread(filename,'gearbox00','B1:E29401');
x=1:1:29400;
plot(x,num(1:29400,4));
%奇异值分解,首先需要将数据处理成矩阵形式,矩阵形状应尽量接近方阵。
y1=reshape(num(1:29400,4),28,1050); %29400 = 28 *1050
[u,s,v]=svd(y1);
s1=s;
s(1:10,1:10)%输出奇异值,便是输出对角线元素
u1=u;v1=v;
%下面是滤波程序,假设我们要滤掉第二个奇异值之后的数值
s1(2:28,2:1050)=0;
for i=2:28
u1(i,i)=0;
end
for j=2:28
v1(j,j)=0;
end
%再将处理后的奇异值整合成数据集
y2=u1*s1*v1';
y2=reshape(y2,1,29400); 
%画图
figure();
subplot(2,1,1);
plot(x,num1(1:29400,4),'k');  grid on;             
title('a.原始信号'); 
subplot(2,1,2);
plot(x,y2,'k');grid on;              
title('e.SVD去掉的噪声的信号');

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值