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

主成分分析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等。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

34 超级数据查看器 关联图片

超级数据查看器app(excel工具,数据库软件,表格app) 关联图片讲解 点击 打开该讲的视频 点击访问app下载页面 豌豆荚 下载地址 大家好,今天我们讲一下超级数据查看器的关联图片功能 这个功能能让表中的每一条信息&…

NodeJS餐厅点餐系统-计算机毕业设计源码71834

摘要 随着移动互联网技术的迅猛发展,微信小程序因其便捷性和即用即走的特性,成为了连接用户与服务的新桥梁。Node.js作为一种高效、轻量级的后端技术,为开发者提供了快速构建服务器端应用的能力。本文介绍了一个基于微信小程序和Node.js的餐厅…

【数组、特殊矩阵的压缩存储】

目录 一、数组1.1、一维数组1.1.1 、一维数组的定义方式1.1.2、一维数组的数组名 1.2、二维数组1.2.1、二维数组的定义方式1.2.2、二维数组的数组名 二、对称矩阵的压缩存储三、三角矩阵的压缩存储四、三对角矩阵的压缩存储五、稀疏矩阵的压缩存储 一、数组 概述:数…

在Android Jetpack Compose中实现夜间模式

在Android Jetpack Compose中实现夜间模式 随着用户对夜间模式需求的增加,Android开发者需要掌握如何在应用中实现这一功能。Jetpack Compose作为现代Android UI工具包,提供了简便且灵活的方式来实现夜间模式。本文将详细介绍如何在Jetpack Compose中实现夜间模式,包括配置…

智能指针的认识和应用

众所周知,大家在写代码时,常常会去malloc或者new指针,但是常常忘记了释放这些不再使用的资源,虽然这些资源很少,但是计算机中资源也是有限的。如此反复下去,计算机就会很卡,因为没有资源。 如何…

第一次参加数学建模竞赛新手小白备赛经验贴

2024年暑假已经来临,下半年的数学建模竞赛非常多,许多同学可能是第一次参赛,对于如何准备感到迷茫和无从下手。在这种情况下,我们将分享一些备赛的小技巧,帮助大家在这个暑假更好的入门,即便是零基础的小白…

AI Earth——2020年中国建筑物高度CNBH数据产品(10m)

数据介绍: 复旦大学生命科学学院GC3S团队(吴万本博士、赵斌教授等)利用多源地球观测数据和机器学习技术,构建了中国第一个10米分辨率的建筑高度估计模型(CNBH-10m)。基于此模型建立了中国10米分辨率的建筑高度数据集。此数据集基于全天候地球观测(雷达、光学和夜光图像)…

前端面试代码题

本文总结面试过程中遇到的代码题。 1. 变量提升 2. 数组相关的方法 注意返回true值是保留不是过滤,别记反。没啥,就是gap半年在面不写会忘的。。。 arr.filter((item, index, current) > {return arr.indexOf(item) index});。可以去重 filter本质…

前端 js 单引号,双引号、斜杠, 表格 tr input、checkbox、、、、

直接上代码 var target (leftOrRight LEFT ? $("#left") : $("#right"));target.empty();// let tbody $("resultRight tbody");// tbody.empty();for (var i 0; i < items.length; i) {debugger// target.append("<option valu…

【数据结构】线性表----队列详解

1. 队列的基本概念 话不多说&#xff0c;直接开始&#xff01; 队列是一种线性数据结构&#xff0c;同栈类似但又不同&#xff0c;遵循先进先出&#xff08;FIFO, First In First Out&#xff09;的原则。换句话说&#xff0c;最先进入队列的元素会最先被移除。这样的特点使得…

【Spring Cloud精英指南】深度探索与实战:网关Gateway的高级应用与最佳实践

1. 前言 Spring Cloud Gateway提供了一个在Spring生态系统之上构建的API网关&#xff0c;包括&#xff1a;Spring 5&#xff0c;Spring Boot 2和Project Reactor。Spring Cloud Gateway旨在提供一种简单而有效的路由方式&#xff0c;并为它们提供一些网关基本功能&#xff0c;…

IntelliJ IDEA 2024.1.4最新教程!!直接2099!!爽到飞起!!

IntelliJ IDEA 2024.1.4最新破解教程&#xff01;&#xff01;直接2099&#xff01;&#xff01;爽到飞起&#xff01;&#xff01;【资源在末尾】安装馆长为各位看官准备了多个版本&#xff0c;看官可根据自己的需求进行下载和选择安装。https://mp.weixin.qq.com/s/Tic1iR_Xc…

C语言-顺序表

&#x1f3af;引言 欢迎来到HanLop博客的C语言数据结构初阶系列。在这个系列中&#xff0c;我们将深入探讨各种基本的数据结构和算法&#xff0c;帮助您打下坚实的编程基础。本次我将为你讲解。顺序表&#xff08;也称为数组&#xff09;是一种线性表&#xff0c;因其简单易用…

常用录屏软件,分享这四款宝藏软件!

在数字化时代&#xff0c;录屏软件已经成为我们日常工作、学习和娱乐中不可或缺的工具。无论你是需要录制教学视频、游戏过程&#xff0c;还是进行产品演示&#xff0c;一款高效、易用的录屏软件都能让你的工作事半功倍。今天&#xff0c;就为大家揭秘四款宝藏级录屏软件&#…

Ajax从零到实战

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

性价比高充电宝有哪些?充电宝十大最佳品牌大盘点!

在如今这个高度数字化的时代&#xff0c;我们的生活离不开各种电子设备&#xff0c;而充电宝作为保障电子设备续航的重要工具&#xff0c;其地位日益凸显。然而&#xff0c;面对市场上琳琅满目的充电宝品牌和产品&#xff0c;要挑选到一款性价比高的充电宝并非易事。在这篇盘点…

java使用easypoi模版导出word详细步骤

文章目录 第一步、引入pom依赖第二步、新建导出工具类WordUtil第三步、创建模版word4.编写接口代码5.导出结果示例 第一步、引入pom依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><…

element-ui操作表格行内容如何获取当前行索引?

需求&#xff1a; 根据每个用户的提交次数、撤回次数&#xff0c;动态计算出实际次数&#xff0c;并且提交次数不能小于撤回次数 <template><div><el-table:data"tableData"style"width: 80%"border><el-table-columnprop"date&…

【IOS】React Native之HelloWorld

RN搭建开发环境 rvm 安装3.2.2 brew install node18 brew install watchman# 使用nrm工具切换淘宝源 npx nrm use taobao# 如果之后需要切换回官方源可使用 npx nrm use npmnpm install -g yarnbrew install cocoapodsnpm uninstall -g react-native-cli react-native-communi…