小波降噪基础-python版本

2024-04-04 15:12
文章标签 python 基础 版本 降噪

本文主要是介绍小波降噪基础-python版本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这篇小文将使用小波多分辨分析对一个简单信号进行降噪,主要是降噪流程,为以后的小波更复杂的降噪算法打下良好的基础。降噪算法流程大致如下:

(1)去趋势项(如直流电流),并将数据归一化到区[0, 1];

(2)进行多级小波分解;

(3)使用步骤 (2)中的细节系数 cD 确定合适的阈值,给出5种不同的方法确定阈值;

(4)将简单的软阈值或硬阈值方法应用于细节系数;

(5)重建信号。

阈值确定方法,更多的细节请查看相关论文,很多

1. universal

在这种情况下,阈值由公式 MAD x sqrt{2 x log(m)} 给出,其中 MAD 是中值绝对偏差,m 是信号的长度。

2. sqtwolog

和universal一样,只是不使用MAD。

3. energy

在这种情况下,阈值算法估计细节系数的能量,并使用它们来估计最佳阈值。

4. stein

此方法实现了 Stein 的无偏风险估计。

5. heurstein

这是 Stein 的无偏风险估计的启发式实现。

首先导入相关模块

import numpy as np
import pandas as pd
import matplotlib.pylab as plt
from scipy.signal import butter, filtfilt
from scipy.signal import spectrogram
from denoising import WaveletDenoising

写个函数用于绘制所有小波分解的系数

def plot_coeffs_distribution(coeffs):fig = plt.figure()size_ = int(len(coeffs) // 2) + 1if size_ % 2 != 0:size_ = size_+1for i in range(len(coeffs)):ax = fig.add_subplot(size_, 2, i+1)ax.hist(coeffs[i], bins=50)def pretty_plot(data, titles, palet, fs=1, length=100, nperseg=256):fig = plt.figure(figsize=(13, 13))fig.subplots_adjust(hspace=0.5, wspace=0.5)index = 1for i, d in enumerate(data):ax = fig.add_subplot(8, 2, index)ax.plot(d[:length], color=palet[i])ax.set_title(titles[i])ax = fig.add_subplot(8, 2, index+1)f, t, Sxx = spectrogram(d, fs=fs, nperseg=nperseg)ax.pcolormesh(t, f, Sxx, shading='auto')index += 2

5种阈值方法的计算函数

def run_experiment(data, level=2, fs=1, nperseg=256, length=100):titles = ['Original data','Universal Method','SURE Method','Energy Method','SQTWOLOG Method','Heursure Method']experiment = ['universal','stein','energy','sqtwolog','heurstein']wd = WaveletDenoising(normalize=False,wavelet='db3',level=level,thr_mode='soft',selected_level=level,method="universal",resolution=100,energy_perc=0.90)res = [data]for i, e in enumerate(experiment):wd.method = experiment[i]res.append(wd.fit(data))palet = ['r', 'b', 'k', 'm', 'c', 'orange', 'g', 'y']pretty_plot(res,titles,palet,fs=fs,length=length,nperseg=nperseg)

搞个最简单的数据,以便于初级分析

if __name__ == '__main__':data = np.zeros((128,))data[:16] = 4data += np.random.normal(0, 1, (128,))run_experiment(data, level=3, length=100, nperseg=32)plt.show()

各阈值的计算没有列出,本文只是讲个小波降噪的大体流程。

完整代码:
小波降噪基础-python版本

工学博士,担任《Mechanical System and Signal Processing》审稿专家,担任《中国电机工程学报》优秀审稿专家,《控制与决策》,《系统工程与电子技术》,《电力系统保护与控制》,《宇航学报》等EI期刊审稿专家。

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

这篇关于小波降噪基础-python版本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

使用Python实现网页表格转换为markdown

《使用Python实现网页表格转换为markdown》在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,本文将使用Python编写一个网页表格转Markdown工具,需... 在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,以便在文档、邮件或

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

Python实现pdf电子发票信息提取到excel表格

《Python实现pdf电子发票信息提取到excel表格》这篇文章主要为大家详细介绍了如何使用Python实现pdf电子发票信息提取并保存到excel表格,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录应用场景详细代码步骤总结优化应用场景电子发票信息提取系统主要应用于以下场景:企业财务部门:需

基于Python实现智能天气提醒助手

《基于Python实现智能天气提醒助手》这篇文章主要来和大家分享一个实用的Python天气提醒助手开发方案,这个工具可以方便地集成到青龙面板或其他调度框架中使用,有需要的小伙伴可以参考一下... 目录项目概述核心功能技术实现1. 天气API集成2. AI建议生成3. 消息推送环境配置使用方法完整代码项目特点

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

Python中合并列表(list)的六种方法小结

《Python中合并列表(list)的六种方法小结》本文主要介绍了Python中合并列表(list)的六种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、直接用 + 合并列表二、用 extend() js方法三、用 zip() 函数交叉合并四、用

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

Python处理大量Excel文件的十个技巧分享

《Python处理大量Excel文件的十个技巧分享》每天被大量Excel文件折磨的你看过来!这是一份Python程序员整理的实用技巧,不说废话,直接上干货,文章通过代码示例讲解的非常详细,需要的朋友可... 目录一、批量读取多个Excel文件二、选择性读取工作表和列三、自动调整格式和样式四、智能数据清洗五、