传感数据分析——傅里叶滤波与小波滤波

news/2024/7/27 11:27:47/文章来源:https://blog.csdn.net/weixin_39753819/article/details/135477429

传感数据分析——傅里叶滤波与小波滤波

文章目录

  • 传感数据分析——傅里叶滤波与小波滤波
  • 前言
  • 一、运行环境
  • 二、Python实现
  • 总结


前言

傅里叶滤波的原理:
傅里叶滤波是基于傅里叶变换的一种信号处理方法,它的原理如下:
傅里叶变换: 将时域信号转换为频域信号。傅里叶变换将信号分解成一系列正弦和余弦函数的频谱成分,表示了信号在不同频率上的贡献。
频域滤波: 在频域中,可以通过滤波操作来去除或弱化不需要的频率分量。通常,通过设定一个截止频率,将高于该频率的分量置零,达到滤波的效果。这也被称为频域截断。
逆傅里叶变换: 将经过滤波后的频域信号转换回时域。逆傅里叶变换恢复了滤波后的信号,得到最终的处理结果。
傅里叶滤波的优点是简单易懂,而缺点包括对非平稳信号的处理不够灵活,可能导致频谱泄漏等问题。
小波滤波的原理:
小波滤波是基于小波变换的一种信号处理方法,其原理如下:
小波变换: 将信号分解成不同尺度和频带的小波系数。小波变换提供了信号在时域和频域上的局部信息,因此具有更好的时频分辨率。
阈值处理: 对小波系数进行阈值处理,通过将较小的系数置零来抑制噪声。阈值通常基于系数的能量或统计性质计算。
小波逆变换: 将处理后的小波系数反变换回原始信号。逆变换产生了去噪后的信号。
小波滤波的优点包括对非平稳信号的适应性强,能够更好地处理瞬态信号和局部特征。然而,小波滤波也可能需要更复杂的计算,并且对于不同的小波基和阈值方法,效果可能有所不同。
综合来看,傅里叶滤波更注重全局频域特性,而小波滤波更注重局部时频特性,选择其中一种方法通常取决于信号的特征和具体的应用需求。
本文将调用PyWavelets库对比傅里叶滤波与小波滤波方法。


本文正文内容

一、运行环境

系统: Windows 10 / Ubuntu 20.04
编程语言: Python 3.8
文本编译器: Vscode
所需库:matplotlib >= 2.2.2 , numpy >= 1.19.5, PyWavelets >= 1.4.1

二、Python实现

代码如下(示例):

# @copyright all reseved
# @author: Persist_Zhang
import numpy as np
import matplotlib.pyplot as plt
import pywtdef fourier_filter(signal, cutoff_frequency):# 进行傅里叶变换spectrum = np.fft.fft(signal)# 设定高频分量为零spectrum[int(cutoff_frequency):] = 0spectrum[:1] = 0  # 去除直流分量# 进行傅里叶逆变换filtered_signal = np.fft.ifft(spectrum)return filtered_signal.realdef wavelet_filter(signal, wavelet='db1', level=4, threshold_multiplier=0.1):# 进行小波变换coeffs = pywt.wavedec(signal, wavelet, level=level)# 计算阈值threshold = threshold_multiplier * np.sqrt(2 * np.log2(len(signal))) * np.median(np.abs(coeffs[-1]))# 应用阈值coeffs = [pywt.threshold(c, threshold, mode='soft') for c in coeffs]# 进行小波逆变换filtered_signal = pywt.waverec(coeffs, wavelet)return filtered_signalif __name__ == "__main__":# 生成含噪声的信号np.random.seed(42)t = np.linspace(0, 1, 1000, endpoint=False)signal = np.sin(2 * np.pi * 7 * t) + 0.5 * np.sin(2 * np.pi * 15 * t) + 0.1 * np.random.randn(1000)# 设定傅里叶滤波的截止频率cutoff_frequency = 20# 进行傅里叶滤波filtered_fourier = fourier_filter(signal, cutoff_frequency)# 进行小波滤波threshold_multiplier = 0.8  # 调整阈值以控制去噪程度filtered_wavelet = wavelet_filter(signal, threshold_multiplier=threshold_multiplier)# 绘制原始信号和滤波后的信号在同一张图上plt.figure(figsize=(10, 6))plt.plot(t, signal, label='Original Signal', color='blue')plt.plot(t, filtered_fourier, label='Filtered (Fourier)', color='green')plt.plot(t, filtered_wavelet, label=f'Filtered (Wavelet, Threshold Multiplier={threshold_multiplier})', color='orange')plt.legend()plt.title('Original Signal and Filtered Signals')plt.xlabel('Time')plt.ylabel('Amplitude')plt.savefig('./figure/Fourier_Wavelet_Filter.jpg')plt.show()

结果图
在这里插入图片描述
由图可知,傅里叶滤波更注重全局频域特性,滤波后展现趋势性,而小波滤波更注重局部时频特性,对局部跳变较大的数据滤波效果更佳。


总结

以上就是本文关于传感信号分析中傅里叶滤波与小波滤波的对比,全部代码见上,还望多多收藏点赞,后续将会更新与分享更多传感数据处理的代码。

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

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

相关文章

图像处理------亮度

from PIL import Imagedef change_brightness(img: Image, level: float) -> Image:"""按照给定的亮度等级&#xff0c;改变图片的亮度"""def brightness(c: int) -> float:return 128 level (c - 128)if not -255.0 < level < 25…

mysql从入门到放弃之数据库体系结构与管理

文章目录 前言一、体系结构1、mysql c/s结构介绍2、mysql实例组成3、mysqld程序运行原理3.1、mysqld守护进程结构3.2、 引入sql语句结构化的查询语言3.3、探索一条SQL语句的执行过程 二、mysql逻辑存储结构三、mysql物理存储结构3.1、innodb存储引擎的段、区、页之间的关系 四、…

CMU15-445-Spring-2023-Project #3 - Query Execution

前置知识&#xff0c;参考上一篇博客&#xff1a;CMU15-445-Spring-2023-Project #3 - 前置知识&#xff08;lec10-14 Parser&#xff1a;将SQL query转变为ASTBinder&#xff1a;将查询语句与数据库元数据进行绑定&#xff0c;验证查询的正确性和有效性Planner&#xff1a;为…

2024年美赛数学建模思路 - 案例:FPTree-频繁模式树算法

文章目录 算法介绍FP树表示法构建FP树实现代码 建模资料 ## 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法&#xff0c;就是频繁模式树算法&#xff0c…

每日一练:LeeCode-144、145、94.二叉树的前中后序遍历【二叉树】

本文是力扣LeeCode-144、145、94.二叉树的前中后序遍历 学习与理解过程&#xff0c;本文仅做学习之用&#xff0c;对本题感兴趣的小伙伴可以出门左拐LeeCode前序遍历、中序遍历、后序遍历。 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序遍历。 给定一个二叉树的根…

scrapy爬虫实战

scrapy爬虫实战 Scrapy 简介主要特性示例代码 安装scrapy&#xff0c;并创建项目运行单个脚本代码示例配置itemsetting 爬虫脚本 代码解析xpath基本语法&#xff1a;路径表达式示例&#xff1a;通配符和多路径&#xff1a;函数&#xff1a;示例&#xff1a; 批量运行附录1&…

从“精益思想“看机器人的开发与应用:一场科技与效率的完美融合

在科技飞速发展的今天&#xff0c;机器人已经深入到我们的生活和工作之中&#xff0c;成为了提高效率、提升质量的重要工具。然而&#xff0c;如何让机器人的开发和利用更有效率、更精细&#xff0c;这是摆在我们面前的一道难题。此时&#xff0c;"精益思想"的出现&a…

OpenCV C++ 图像处理实战 ——《多尺度自适应Gamma矫正的低照图像增强》

OpenCV C++ 图像处理实战 ——《多尺度自适应Gamma矫正的低照图像增强》 一、结果演示二、多尺度自适应Gamma矫正的低照度图像增强2.1HSI颜色空间2.1.1 功能源码2.2 自适应于直方图分布的 Gamma 矫正2.2.1 功能源码2.3 多尺度 Retinex 分解与明度增强2.3.1 功能源码三、源码测试…

统计学-R语言-3

文章目录 前言给直方图增加正态曲线的不恰当之处直方图与条形图的区别核密度图时间序列图洛伦茨曲线计算绘制洛伦茨曲线所需的各百分比数值绘制洛伦茨曲线 练习 前言 本篇文章是介绍对数据的部分图形可视化的图型展现。 给直方图增加正态曲线的不恰当之处 需要注意的是&#…

【生存技能】git操作

先下载git https://git-scm.com/downloads 我这里是win64&#xff0c;下载了相应的直接安装版本 64-bit Git for Windows Setup 打开git bash 设置用户名和邮箱 查看设置的配置信息 获取本地仓库 在git bash或powershell执行git init&#xff0c;初始化当前目录成为git仓库…

力扣labuladong一刷day61天动态规划最小下降路径

力扣labuladong一刷day61天动态规划最优子结构 一、931. 下降路径最小和 题目链接&#xff1a;https://leetcode.cn/problems/minimum-falling-path-sum/description/ 如下图所示&#xff0c;求最小下降路径&#xff0c;定义dp[i][j]表示从最上面那行的任意位置抵达到nums[i]…

Redis分布式锁--java实现

文章目录 Redis分布式锁方案&#xff1a;SETNX EXPIRE基本原理比较好的实现会产生四个问题 几种解决原子性的方案方案&#xff1a;SETNX value值是&#xff08;系统时间过期时间&#xff09;方案&#xff1a;使用Lua脚本(包含SETNX EXPIRE两条指令)方案&#xff1a;SET的扩展…

springcloud Alibaba中gateway和sentinel联合使用

看到这个文章相信你有一定的sentinel和gateway基础了吧。 官网的gateway和sentinel联合使用有些过时了&#xff0c;于是有了这个哈哈&#xff0c;给你看看官网的&#xff1a; 才sentinel1.6&#xff0c;现在都几了啊&#xff0c;所以有些过时。 下面开始讲解&#xff1a; 首先…

【Linux】自定义shell

👑作者主页:@安 度 因 🏠学习社区:安度因 📖专栏链接:Linux 文章目录 获取命令行前置字段命令行输入解析命令行普通指令的执行子进程执行命令指令类型判断 && 内建命令总结 &&a

【Maven】007-Maven 工程的继承和聚合关系

【Maven】007-Maven 工程的继承和聚合关系 文章目录 【Maven】007-Maven 工程的继承和聚合关系一、Maven 工程的继承关系1、继承的概念2、继承的作用3、继承的语法4、父工程统一管理依赖版本父工程声明依赖版本子工程继承以来版本 二、Maven 工程的聚合关系1、聚合的概念2、聚合…

VitePress-01-从零开始的项目创建(npm版)

说明 本文介绍一下 VitePress的项目创建的步骤。 主要用到的命令工具是 npm。 本文的操作步骤是从无到有的创建一个完整的基本的【VitePress】项目。 环境准备 根据官方文档的介绍&#xff0c;截止本文发稿时&#xff0c;需要使用node.js 18 的版本。 可以使用node -v 的命令查…

【MySQL】MySQL表的约束-空属性/默认值/列属性/zerofill/主键/自增长/唯一键/外键

文章目录 表的约束1.空属性 --null && not null2.默认值 -- default3.列描述4.zerofill5.主键6.自增长7.唯一键8.外键 表的约束 表的约束&#xff1a;表中一定要有各种约束&#xff0c;通过约束&#xff0c;让我们未来插入数据库表中的数据是符合预期的。约束的本质是…

【GCC】6 接收端实现:周期构造RTCP反馈包

基于m98代码。GCC涉及的代码,可能位于:webrtc/modules/remote_bitrate_estimator webrtc/modules/congestion_controller webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.cc webrtc 之 RemoteEstimatorProxy 对 remote_bitrate_estimator 的 RemoteEstimato…

Spark与HBase的集成与数据访问

Apache Spark和Apache HBase分别是大数据处理和分布式NoSQL数据库领域的两个重要工具。在本文中&#xff0c;将深入探讨如何在Spark中集成HBase&#xff0c;并演示如何通过Spark访问和操作HBase中的数据。将提供丰富的示例代码&#xff0c;以便更好地理解这一集成过程。 Spark…

【EI会议征稿通知】第四届图像处理与智能控制国际学术会议(IPIC 2024)

第四届图像处理与智能控制国际学术会议&#xff08;IPIC 2024&#xff09; 2024 4th International Conference on Image Processing and Intelligent Control 2024年第四届图像处理与智能控制国际学术会议&#xff08;IPIC 2024&#xff09;将于2024年5月3日-5日在吉隆坡举…