用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(主成分分析法)进行信号滤波的更多相关文章

  1. 特征脸(Eigenface)理论基础-PCA(主成分分析法)

    在之前的博客  人脸识别经典算法一:特征脸方法(Eigenface)  里面介绍了特征脸方法的原理,但是并没有对它用到的理论基础PCA做介绍,现在做补充.请将这两篇博文结合起来阅读.以下内容大部分参考 ...

  2. 【机器学习】主成分分析法 PCA (II)

    主成分分析法(PAC)的优化——选择主成分的数量 根据上一讲,我们知道协方差为① 而训练集的方差为②. 我们希望在方差尽可能小的情况下选择尽可能小的K值. 也就是说我们需要找到k值使得①/②的值尽可能 ...

  3. 降维之主成分分析法(PCA)

    一.主成分分析法的思想 我们在研究某些问题时,需要处理带有很多变量的数据,比如研究房价的影响因素,需要考虑的变量有物价水平.土地价格.利率.就业率.城市化率等.变量和数据很多,但是可能存在噪音和冗余, ...

  4. 【转载】主成分分析法(PCA)

    https://www.jisilu.cn/question/252942 进行维数约减(Dimensionality Reduction),目前最常用的算法是主成分分析法 (Principal Co ...

  5. 吴恩达机器学习笔记(八) —— 降维与主成分分析法(PCA)

    主要内容: 一.降维与PCA 二.PCA算法过程 三.PCA之恢复 四.如何选取维数K 五.PCA的作用与适用场合 一.降维与PCA 1.所谓降维,就是将数据由原来的n个特征(feature)缩减为k ...

  6. 机器学习回顾篇(14):主成分分析法(PCA)

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  7. 主成分分析法(PCA)原理和步骤

    主成分分析法(PCA)原理和步骤 主成分分析(Principal Component Analysis,PCA)是一种多变量统计方法,它是最常用的降维方法之一,通过正交变换将一组可能存在相关性的变量数 ...

  8. 【笔记】主成分分析法PCA的原理及计算

    主成分分析法PCA的原理及计算 主成分分析法 主成分分析法(Principal Component Analysis),简称PCA,其是一种统计方法,是数据降维,简化数据集的一种常用的方法 它本身是一 ...

  9. (数据科学学习手札22)主成分分析法在Python与R中的基本功能实现

    上一篇中我们详细介绍推导了主成分分析法的原理,并基于Python通过自编函数实现了挑选主成分的过程,而在Python与R中都有比较成熟的主成分分析函数,本篇我们就对这些方法进行介绍: R 在R的基础函 ...

随机推荐

  1. java并发包小结(一)

    java.util.concurrent 包含许多线程安全.高性能的并发构建块.换句话讲,创建 java.util.concurrent 的目的就是要实现 Collection 框架对数据结构所执行的 ...

  2. Day2_元组_字典_集合_字符编码_文件处理

    元组: 作用:存多个值,元组不可变,主要用来读 age=(11,22,33,44,55) print(age[2]) #取出元组内的值 print(age[1:4]) #取出元组内的某些值 print ...

  3. svn Server sent unexpected return value (403 Forbidden) in response to CHECKOUT

    今天,提交資料到公司svn服務器,但是一直提示 Server sent unexpected return value (403 Forbidden) in response to CHECKOUT ...

  4. 这就是我想要的 VSCode 插件!

    简评:VSCode 是一个开源的跨平台编辑器,是我最满意的 IDE 之一.本文介绍了几种使用的插件,确实解决了很多的痛点. Quokka.js Quokka.js 会在您键入代码编辑器中显示各种执行结 ...

  5. echarts实现中国地图数据展示

    在项目中运用到图形展示数据太常见了,echarts是一款使用率非常高的插件工具,很多大平台都是使用echarts: 一般运用到条形.折线.扇形图,今天说一说在中国地图上展示各地数据: 首先要准备中国地 ...

  6. 安装vmware tool时出错

    背景: 我想要在win10系统和vmware的ubuntu之间实现磁盘共享,从而实现文件共享.百度到可以通过安装vmware tools实现,所以着手安装vmware tools 问题: 安装vmwa ...

  7. Node笔记三

    global --类似与客户端javascript运行环境中的window process --用于获取当前node进程信息,一般用于获取环境变量之类的信息 console --node中内置的con ...

  8. 基于Cloudera Search设计数据灾备方案

    当实际项目上线到生产环境中,难以避免一些意外情况,如数据丢失.服务器停机等.对于系统的搜索服务来说,当遇到停机的情况意味着在停机这段时间内,用户都不能通过搜索的相关功能进行访问数据,停机意味着将这一段 ...

  9. ArcticCore重构-问题列表1

    基于官方arc-stable-9c57d86f66be,AUTOSAR版本3.1.5 基本问题 Arctic Core中的代码组织有很多有待改进的地方,这里先提出几点: 1. 头文件引用混乱,所有头文 ...

  10. 单片机开发——02工欲善其事必先利其器(Proteus软件安装破解)

    在单片机开发工程中,博主经常通过模拟软件Proteus进行模拟仿真,将编译生成的"HEX"文件下载在单片机芯片中,然后进行后期的debug工作,当模拟仿真完成之后,进行硬件测试部分 ...