用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. javaScript(5)---运算符

    学习要点: 1.什么是表达式 2.一元运算符 3.算术运算符 4.关系运算符 5.逻辑运算符 6.*位运算符   7.赋值运算符  8.其他运算符      9.运算符优先级 ECMA-262描述了一 ...

  2. Java反射之修改常量值

    1. 通过反射修改常量的值 package com.blueStarWei.invoke; import java.lang.reflect.Field; public class ModifyFin ...

  3. Angular5的new feature

    https://blog.angular.io/version-5-0-0-of-angular-now-available-37e414935ced Version 5.0.0 of Angular ...

  4. Ubuntu设置代理的方法

    用过Linux的都知道,众多的PROXY配置,让人应接不暇,本文列出常见的一些PROXY的配置 1.apt-get proxy 的配置sudo gedit /etc/apt/apt.conf NOTE ...

  5. PyCharm中HTML页面CSS class名称自动完成功能失效的问题

    如果这个HTML页面带有style元素的CSS定义,那class name自动完成功能就失效了 Pycharm Version:5.03

  6. Manacher算法解析

    Manacher算法 Manachar算法主要是处理字符串中关于回文串的问题的,它可以在 O(n) 的时间处理出以字符串中每一个字符为中心的回文串半径,由于将原字符串处理成两倍长度的新串,在每两个字符 ...

  7. 保证你能看懂的KMP字符串匹配算法

    文章转载自一位大牛: 阮一峰原网址http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm ...

  8. Go语言开发区块链只需180行代码

    区块链开发用什么语言?通过本文你将使用Go语言开发自己的区块链(或者说用go语言搭建区块链).理解哈希函数是如何保持区块链的完整性.掌握如何用Go语言编程创造并添加新的块.实现多个节点通过竞争生成块. ...

  9. 代码质量管理平台SonarQube的安装、配置与使用

    SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误,下面将会介绍一下这个工具的安装.配置以及使用. 准备工作: 1.jdk(不再介绍) 2.sonarqube:ht ...

  10. AUTOSAR - 标准文档下载

    官网 https://www.autosar.org/ 文档分类 按功能分 按类型分 CLASSIC PLATFORM The AUTOSAR Classic Platform architectur ...