基于主成分分析PCA的一维时间序列信号降噪方法(Python)

news2024/9/22 21:13:02

主成分分析PCA是面向模式分类的特征提取最典型的工具,是满足上述映射准则的一种数据压缩的方法。作为经典的特征提取方法,是在不减少原始数据所包含的内在信息前提下,将原始数据集转化为由维数较少的“有效”特征成分来表示,使其在统计均方意义下达到方差最优的目的。许多学者对算法进行深入研究,已经在经典算法的基础上形成了很多改进算法,被广泛应用于不同领域。

PCA是一种基于统计意义下最小均方误差的特征提取方法,其所提取出的新特征能维持原模式类中的大部分本质信息,去除掉的维数很大可能是由噪声带来的结果,在多数情况下把这些维数剔除,可以达到降噪的目的,改善数据的表示。据此我们可以把主成分分析看作是数据降噪的一个过程。利用PCA及其改进算法对图像进行降噪处理是模式识别中特征提取的一个典型应用,对图像的降噪可以看作是一种识别,学习识别出无噪图像的主要特征,利用这些主要特征对有噪图像进行去噪。现如今存在的各种去噪方法中,PCA算法凭借其优良的特征提取性能被广泛应用。利用及其改进算法能够提取数据的有效特征,舍弃由噪声引起的成分,达到降噪的效果。鉴于此,采用PCA对一维时间序列进行降噪,运行环境为Python。

import matplotlib.pyplot as plt
import matplotlib.image as mpimg 
import numpy as np
from scipy.linalg import svd
from scipy.linalg import hankel


n_elements = 5
fname='example_wave.csv'


#open file
myFile = np.genfromtxt(fname, delimiter=',')


#define matrix
A = np.array(myFile)


nt=len(myFile)


#get hankel matrix and trim
B = hankel(A)
C = B[0:int(nt/2)]
D = C[:,0:int(nt/2)]


#SVD
U, s, VT = svd(D)


# create m x n Sigma matrix
Sigma = np.zeros((D.shape[0], D.shape[1]))


# populate Sigma with n x n diagonal matrix
Sigma[:D.shape[0], :D.shape[0]] = np.diag(s)


# select
Sigma = Sigma[:, :n_elements]
VT = VT[:n_elements, :]


# reconstruct
Q = U.dot(Sigma.dot(VT))


aa = Q[:,0]
bb = Q[:,499]


AA = np.concatenate([ aa, bb])


f, axarr = plt.subplots(2, sharex=True)
axarr[0].set_title('Original Signal')
axarr[0].plot(A)
axarr[1].set_title('De-Noised Signal')
axarr[1].plot(AA)
axarr[1].set_xlabel('Time')


np.savetxt(fname+'_denoised',AA, delimiter=',')
plt.show()

  • 知乎学术咨询:
    https://www.zhihu.com/consult/people/792359672131756032?isMe=1

    擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1915817.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

极狐Gitlab使用(1)

目录 续接上篇:极狐Gitlab安装部署-CSDN博客 1. 关闭注册功能 2. 创建群组 3. 创建用户 5. 邀请成员到群组 6. 设置导入导出项目源 7. 通过gitee导入库 8. 通过仓库URL导入 9. 自创建项目 10. 默认分支main的权限 11. 使用普通用户进入自建库 12. 创建用…

深入理解 go map

什么是 map 维基百科里这样定义 map: In computer science, an associative array, map, symbol table, or dictionary is an abstract data type composed of a collection of (key, value) pairs, such that each possible key appears at most once in the collection. 简单…

前端挑战:Tkinter布局与设计【三种布局】

前端挑战:Tkinter布局与设计【三种布局】 文章目录 前端挑战:Tkinter布局与设计【三种布局】前言Frame 窗口组件代码效果Tkinter的布局grid 网格布局效果展示:代码讲解pack 布局基本使用左右布局place 布局代码预览前言 作为一个前端开发,习惯性的用HTML去解决客户端的问题…

【Linux 线程】线程的基本概念、LWP的理解

文章目录 一、ps -L 指令🍎二、线程控制 一、ps -L 指令🍎 🐧 使用 ps -L 命令查看轻量级进程信息;🐧 pthread_self() 用于获取用户态线程的 tid,而并非轻量级进程ID;🐧 getpid() 用…

卡尔曼滤波中dx更新公式

卡尔曼滤波是一种有效的递归滤波器,用于估计线性动态系统的状态。在标准的卡尔曼滤波中,系统和观测模型都是线性的,而在扩展卡尔曼滤波(EKF)和迭代卡尔曼滤波(IKF)中,系统或观测模型…

最受老板欢迎的监控员工电脑软件推荐!(6款真实测评)

你有没有遇到以下这种情况: 早晨刚到公司打开电脑,老板对着旁边同事大发雷霆突然发问: 小丽,你昨天上班期间刷抖音了? 你吓得瑟瑟发抖,老板咋知道的呢? 跟其他同事讨论才晓得,原…

【人生苦短,我学 Python】(12)函数(下)

Python 所有文章传送门【Python】所有文章传送门 目录 简述 / 前言1. 函数的返回值2. 变量2.1 局部变量2.2. 全局变量2.3 局部与全局变量混合使用 4. 匿名函数(Lamda表达式)5. 函数装饰器6. 递归函数7. 函数注释(文档字符串)与注解…

Linux下的misc设备驱动

文章目录 前言一、misc是什么?二、调用API1.注册2.注销 三、驱动框架总结 前言 misc设备即杂项设备,Linux系统中类似按键、触摸屏都有专门框架处理,类似adc、蜂鸣器等设备无法明确其属于什么类型,一般就归属于杂项设备&#xff0…

Databend 开源周报第 152 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend。 支持内置 UDFs …

WPF 制作一个文字漂浮提示框

WPF好像没有自带的文字提示漂浮&#xff0c;我们可以定制一个。 效果如下&#xff1a; xaml xaml如下&#xff1a; <Window x:Class"GroupServer.MsgTip"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://sc…

Spring源码二十一:Bean实例化流程四

上一篇Spring源码二十&#xff1a;Bean实例化流程三中&#xff0c;我们主要讨论了单例Bean创建对象的主要方法getSingleton的内部方法createBean&#xff0c;createBean方法中的resolveBeanClase方法与prepareMethodOverrides方法处理了lookup-method属性与repliace-method配置…

设计模式之外观模式(Facade)

Facade设计模式&#xff0c;也称为外观模式&#xff0c;是一种结构型设计模式&#xff0c;它主要用于为子系统中的一组接口提供一个统一的高层接口&#xff0c;从而使得子系统更加容易使用。以下是关于Facade设计模式的详细介绍&#xff1a; 一、定义 Facade模式为多个复杂的…

TTT架构超越Transformer,ML模型替代RNN隐藏状态!

目录 01 算法原理 02 骨干架构 03 实验结果 一种崭新的大语言模型&#xff08;LLM&#xff09;架构有望取代当前主导 AI 领域的 Transformer&#xff0c;并在性能上超越 Mamba。 论文地址&#xff1a;https://arxiv.org/abs/2407.04620 本周一&#xff0c;关于 Test-Time Tr…

ur5e机械臂末端添加dh_ag95夹爪(ubuntu20.04+ROSnoetic)

一、从官网上下载UR5e机械臂 mkdir -p catkin_ws cd catkin_ws git clone https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git src/Universal_Robots_ROS_Driver git clone -b calibration_devel https://github.com/fmauch/universal_robot.git src/fmauch…

Vue3入门之创建vue3的单页应用(vite+vue)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

电机学-绪论

绪论 电机&#xff1a;根据电磁感应定律和电磁力定律实现机电能量转换和信号传递与转换的电磁机械装置。 电磁感应定律&#xff1a; BiliBili: 法拉第电磁感应定律 BiliBili: 楞次定律 BiliBili: 左手定则、右手定则、右手螺旋定则

GOLLIE : ANNOTATION GUIDELINES IMPROVE ZERO-SHOT INFORMATION-EXTRACTION

文章目录 题目摘要引言方法实验消融 题目 Gollie&#xff1a;注释指南改进零样本信息提取 论文地址&#xff1a;https://arxiv.org/abs/2310.03668 摘要 大型语言模型 (LLM) 与指令调优相结合&#xff0c;在泛化到未见过的任务时取得了重大进展。然而&#xff0c;它们在信息提…

【昇思25天学习打卡营打卡指南-第十八天】基于MobileNetv2的垃圾分类

基于MobileNetv2的垃圾分类 MobileNetv2模型原理介绍 MobileNet网络是由Google团队于2017年提出的专注于移动端、嵌入式或IoT设备的轻量级CNN网络&#xff0c;相比于传统的卷积神经网络&#xff0c;MobileNet网络使用深度可分离卷积&#xff08;Depthwise Separable Convolut…

玩机社区系统源码 | 2024年最美社区源码 全开源 带后端

简介&#xff1a; 玩机社区系统源码 | 2024年最美社区源码 全开源 带后端 图片&#xff1a; 点击下载

“Pandas数据处理与分析:实用技巧与应用“

目录 # 开篇 1. pandas的series的了解 1.1 pd.Series 创建 1.2 pd.series 的索引使用 1.3 pd.series 之字典/索引 1.4 pandas 转换数据类型 1.5 pandas 通过索引或者通过位置来取值 1.6 pandas 指定行取值 1.7 pands之Series 切片和索引 1.8 pands之Series 的索引和值…