用PCA(主成分分析法)进行信号滤波
用PCA(主成分分析法)进行信号滤波
此文章从我之前的C博客上导入,代码什么的可以参考matlab官方帮助文档
现在网上大多是通过PCA对数据进行降维,其实PCA还有一个用处就是可以进行信号滤波。网上对此的介绍比较少,正好最近研究了一下,所以把自己的理解记录下来。
对于PCA原理的介绍网上已经有很多帖子,我比较喜欢的是这个:PCA的数学原理。文章把PCA降维定性和数学理解分析得生动且透彻,这里不再重复。
直接上干货吧,简单一个例子:
给定信号:
其中有用信号为三个频率不同且幅值相位不相同的余弦函数之和,我把它设为20,30,50HZ,幅值分别为1,2,3。噪声信号u(t)为高斯白噪声,我们现在要用主成分分析将高斯白噪声从x(t)中滤掉。
取100个样本x(t),每个样本的采样点数为1000,也就是1000维(我们可以将维度理解成采样点数,至于为什么维度跟采样点数有关,也许只是正好在数学带入上呈现出相同的形式)。将这100个样本组合成100×1000的矩阵D。这100个样本中间,包含着有用信号与噪声信号两个成分。我们可以把有用信号理解为我们的主要维度A,它的“能量”是比较大的,且可以用方差表示。而噪声信号可以理解成其他维度,与有用信号彼此不是很相关,但是还是有那么一丝的相关性。我们要做的滤波,也就是去噪,就是让他们彼此之间的维度不相关,然后去掉多余的维度,只留下有用信号。
PCA的实现过程是比较规范化的:首先,求矩阵D的协方差矩阵B,协方差矩阵是个很有用的东西,他的对角线上表示的是各样本的方差,也可以理解为各维度的能量,对角线之外的元素表示不同维度之间的内积,也可以理解为相关程度。
然后,我们要讲不同维度的相关程度置0,这里可以用协方差矩阵的对角化得到。这样,我们得到的新维度两两之间就没有相关性了。然后,我们将得到的对角矩阵的特征值从大到小排列,刚才说了,对角线上特征值的大小表示相应维度的能量,表示不同维度对原信号的贡献率。
可以看到,第一主成分,也可以说在这个维度下,它的贡献率(特征值、方差、能量)最高,所以我们可以把它理解为这个主成分包含最多的有用信号。而其他维度分别以很小的,彼此不相关的形式存在着,恰恰跟高斯白噪声的性质很像,所以其他主成分我们可以在滤波中把他们去掉。
这跟降维还是有一定区别的。降维是指累计贡献率达到某个阈值,将阈值之内的主成分(维度)用来还原原始信号(有用信号+噪声信号),他更多的强调一种信号的降维还原。而滤波主要是将原来与有用信号中不相关的部分滤掉,不是一种单纯的无损还原。
所以,我们取第一主成分就够了嘛,是不是!还原出来的信号如下图:
感觉还是不错的,然后我又跟FIR滤波器对比了一下,下面是他们分别的频域图:
还是可以看出明显区别的,因为FIR滤波只能滤除截止频率之外的频率分量,而PCA可以把与主成分没关系的量统统滤除。但是,PCA的局限性也就突显出来:他只能滤出与有用信号不相关的信号,对于相关或略有相关的信号,PCA显得就比较吃力了。
用PCA(主成分分析法)进行信号滤波的更多相关文章
- 特征脸(Eigenface)理论基础-PCA(主成分分析法)
在之前的博客 人脸识别经典算法一:特征脸方法(Eigenface) 里面介绍了特征脸方法的原理,但是并没有对它用到的理论基础PCA做介绍,现在做补充.请将这两篇博文结合起来阅读.以下内容大部分参考 ...
- 【机器学习】主成分分析法 PCA (II)
主成分分析法(PAC)的优化——选择主成分的数量 根据上一讲,我们知道协方差为① 而训练集的方差为②. 我们希望在方差尽可能小的情况下选择尽可能小的K值. 也就是说我们需要找到k值使得①/②的值尽可能 ...
- 降维之主成分分析法(PCA)
一.主成分分析法的思想 我们在研究某些问题时,需要处理带有很多变量的数据,比如研究房价的影响因素,需要考虑的变量有物价水平.土地价格.利率.就业率.城市化率等.变量和数据很多,但是可能存在噪音和冗余, ...
- 【转载】主成分分析法(PCA)
https://www.jisilu.cn/question/252942 进行维数约减(Dimensionality Reduction),目前最常用的算法是主成分分析法 (Principal Co ...
- 吴恩达机器学习笔记(八) —— 降维与主成分分析法(PCA)
主要内容: 一.降维与PCA 二.PCA算法过程 三.PCA之恢复 四.如何选取维数K 五.PCA的作用与适用场合 一.降维与PCA 1.所谓降维,就是将数据由原来的n个特征(feature)缩减为k ...
- 机器学习回顾篇(14):主成分分析法(PCA)
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
- 主成分分析法(PCA)原理和步骤
主成分分析法(PCA)原理和步骤 主成分分析(Principal Component Analysis,PCA)是一种多变量统计方法,它是最常用的降维方法之一,通过正交变换将一组可能存在相关性的变量数 ...
- 【笔记】主成分分析法PCA的原理及计算
主成分分析法PCA的原理及计算 主成分分析法 主成分分析法(Principal Component Analysis),简称PCA,其是一种统计方法,是数据降维,简化数据集的一种常用的方法 它本身是一 ...
- (数据科学学习手札22)主成分分析法在Python与R中的基本功能实现
上一篇中我们详细介绍推导了主成分分析法的原理,并基于Python通过自编函数实现了挑选主成分的过程,而在Python与R中都有比较成熟的主成分分析函数,本篇我们就对这些方法进行介绍: R 在R的基础函 ...
随机推荐
- Delphi 项目总结
Delphi 项目总结 随着项目的失败,这些天一直在总结失败的原因,到底是为什么? 一.技术层面 1.少用指针类型,多用类. 虽然指针类型能有效的节约内 ...
- P1352 没有上司的舞会
题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri, ...
- redis资源未释放引发的问题
一.redis资源未释放的起因: N年前,在修改一个古老程序时,不小心把redis释放的这块给干掉了, if (jedis != null) { if (!isInProcess) { jedis.d ...
- JSF-使用JSF标记
使用JSF标记 基于Facelets技术的JSF页面是一个 XHTML页面,文件扩展名为 .xhtml 1)JSF页面可用html标记,但必须满足: ①所有标记都必须闭合.如<p>开始,& ...
- oracle数据库语句积累
1.从一个表选出数据更新另一个表(后面的exists一定要加) update jqhdzt set shid = (select shid from v_plat_userjqinfo t where ...
- 落入绝地求生的Python神仙,实现绝地求生无后座!
叙述 绝地求生已经出来那么久了,大家应该都晓得如今的游戏情形很是差 .特别在高端局,神仙满天飞 搞得很多人类玩家很是没有游戏体验! 由于绝地求生的火爆,繁衍出许多外挂流传于各个地方.飞机上.网吧内,各 ...
- vue目录结构
构建新的项目后生成目录结构如下图: 1.build目录下: 最终发布de代码存放的位置 2.config 配置目录,包括端口号等.我们初学可以使用默认的 3.node_modules npm加载的项目 ...
- PAT1132: Cut Integer
1132. Cut Integer (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Cutting a ...
- grub rescue 主引导修复
使用windows 和 ubuntu 双系统的人,很有可能碰到重装某一个系统,或者另外添加分区,导致系统重启出现 : GRUB loading error:unknow filesystem grub ...
- Python3实现ICMP远控后门(下)之“Boss”出场
ICMP后门 前言 第一篇:Python3实现ICMP远控后门(上) 第二篇:Python3实现ICMP远控后门(上)_补充篇 第三篇:Python3实现ICMP远控后门(中)之"嗅探&qu ...