当前位置: 首页 > news >正文

【Python 算法】信号处理通过陷波滤波器准确去除工频干扰

对于一个信号来说通常汇入工频噪声往往是因为交流电产生的电泳,影响了我们信号采集导致信号上存在工频干扰。
那么matlab去除工频干扰可以通过陷波滤波器实现。

通常使用scipy.signal实现信号的处理。
Scipy的信号处理模块(scipy.signal)来创建自定义的陷波滤波器。陷波滤波器通常用于去除特定频率上的噪声或干扰,比如电源线干扰。

import numpy as np
from scipy import signal
import matplotlib.pyplot as plt# 生成示例数据,包括噪声和带有干扰的信号
fs = 1000  # 采样频率
t = np.arange(0, 1, 1/fs)
noise = 0.5 * np.sin(2 * np.pi * 50 * t)  # 50 Hz噪声
signal_with_noise = np.sin(2 * np.pi * 5 * t) + noise  # 5 Hz信号 + 50 Hz噪声# 设计陷波滤波器来去除50 Hz干扰
f0 = 50.0  # 噪声的中心频率
Q = 30.0  # 带宽
b, a = signal.iirnotch(f0, Q, fs)# 使用滤波器来去除噪声
filtered_signal = signal.lfilter(b, a, signal_with_noise)# 绘制原始信号和去噪后的信号
plt.figure()
plt.subplot(2, 1, 1)
plt.plot(t, signal_with_noise, 'b', label='带噪声的信号')
plt.legend()
plt.subplot(2, 1, 2)
plt.plot(t, filtered_signal, 'g', label='去噪后的信号')
plt.legend()
plt.tight_layout()
plt.show()

上述示例中,signal.iirnotch函数用于设计陷波滤波器的系数,然后使用signal.lfilter来应用该滤波器。这可以帮助去除信号中指定频率的噪声或干扰。
在这里插入图片描述
上图中蓝色的线条是,5Hz正弦波,和50Hz干扰正弦波的求和。

绿色的线,是我们规定去irrnotch函数中心频率为50Hz,带宽Q为30进行处理。

实际上说,原始信号有一个正弦信号5Hz。
在这里插入图片描述
但是为什么滤波之后原始信号不是光滑的呢?
需要考虑陷波滤波器中心频率的带宽。

在陷波滤波器中,带宽Q(Quality Factor)表示滤波器的调制深度或选择性。它是一个无单位的参数,通常用于定义陷波滤波器的性能。

带宽Q的值越大,滤波器的选择性越高,也就是滤除特定频率附近的信号时,对该频率的抑制会更强。带宽Q的值越小,滤波器的选择性越低,也就是滤除特定频率附近的信号时,对该频率的抑制会较弱。

具体来说,对于陷波滤波器,Q的计算公式通常如下:

Q = f0 / Δf

Q是带宽Q。
f0是你希望去除的频率的中心点。
Δf是带宽,表示你希望保留的频率范围。
Q的值越大,带宽越小,滤波器越窄,抑制特定频率的效果越强。Q的值越小,带宽越大,滤波器越宽,抑制效果越弱。选择Q值的大小通常取决于你的应用和数据中噪声或干扰的性质。常见的Q值范围通常在10到100之间。

在陷波滤波器设计中,选择适当的Q值对于有效地去除特定频率的干扰非常重要。你需要根据具体的应用和数据特点来调整Q值,以获得最佳的滤波效果。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过对比四个不同的带宽q=1,10,50,100。我们可以观察波形得到结果。
当q=1的时候最接近原始期望得到的5Hz正弦波。但是产生了导数超调,在开始的位置有一个小翘起,那说明就是并不是理想的滤波器。或者说很难得到理想的滤波效果。信号的起始端和结束端都会产生该结果。
在信号处理中,滤波操作可能会引入一些边界效应,特别是在信号的开始和结束段,这种现象通常被称为"边界效应"或"边界伪像"。这是由于滤波器的有限长度以及信号的截断所引起的。
那为什么滤波结束开始端会产生波动,但是信号的结尾段不会产生波动?
边界效应的主要原因包括以下几点:

信号截断:通常,你对一个连续的信号进行离散采样,然后在有限长度的窗口内进行滤波。这会导致信号在开始和结束时被截断,因此,信号在这些边界处可能不连续。

**滤波器的有限长度:**滤波器通常是有限长度的,而不是无限长度。这意味着滤波器本身在时间或频率上也存在截断。当你将有限长度的滤波器应用于信号时,它会影响信号的边界处,引入额外的波动。

**初始条件和阶跃响应:**在滤波器的应用过程中,初始条件和滤波器的阶跃响应可能会导致边界效应。这些效应在滤波器开始和结束时可能会更为显著。

通常情况下,信号处理中的边界效应是不可避免的,并且可能因滤波器类型、信号特性和截断方式而异。为了减轻这些效应,你可以考虑以下方法:

使用合适的边界处理:一种方法是在信号的开始和结束时应用边界处理技术**,如零填充**、周期延拓或反射延拓,以减少边界效应的影响。

使用长滤波器:使用更长的滤波器可以减少滤波器的有限长度效应,但也会增加计算成本。

谨慎选择滤波器类型:不同类型的滤波器在边界效应方面有不同的性质,因此根据具体应用的需要选择适当的滤波器类型。

考虑后处理:在滤波后,对信号的边界段进行后处理,以减小边界效应的影响。
综上所述,边界效应是信号处理中的常见问题,可以通过适当的处理方法和滤波器选择来减轻其影响。

为了最终得到完美的滤波器,我们可以考虑零相位滤波器,简单来说就是这种滤波器进行双向滤波一定程度上减少了边界效应。

直接上代码和结果

# 开发时间:2023/10/25 22:22
# 开发内容:
# 运行环境:
# 备注内容:
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt# 生成示例数据,包括噪声和带有干扰的信号
fs = 1000  # 采样频率
t = np.arange(0, 1, 1/fs)
fs =1000
t =np.arange(0,1,1/fs)noise = 0.5 * np.sin(2 * np.pi * 50 * t)  # 50 Hz噪声
signal_with_noise = np.sin(2 * np.pi * 5 * t) + noise  # 5 Hz信号 + 50 Hz噪声# 设计陷波滤波器来去除50 Hz干扰
f0 = 50.0  # 噪声的中心频率
Q = 0.2# 带宽-------------------------------------------修改之处
b, a = signal.iirnotch(f0, Q, fs)# 使用滤波器来去除噪声--------------------------------------修改之处
filtered_signal = signal.filtfilt(b, a, signal_with_noise)# 绘制原始信号和去噪后的信号
plt.figure(1)
plt.subplot(2, 1, 1)
plt.plot(t, signal_with_noise, 'b', label='带噪声的信号')
plt.legend()
plt.subplot(2, 1, 2)
plt.plot(t, filtered_signal, 'g', label='q=100')
plt.legend()
plt.tight_layout()
plt.show()fs=1000
t =np.arange(0,1,1/fs)signalwave =np.sin(2*np.pi*5*t)
plt.figure(2)
plt.plot(signalwave,label="5Hz-sin")
plt.legend()
plt.show()

在这里插入图片描述
效果已经很好那么我们要是使用截断法,可以截断尾部的信号。而且我们这个滤波之后的信号不存在相位移动。。

相关文章:

【Python 算法】信号处理通过陷波滤波器准确去除工频干扰

对于一个信号来说通常汇入工频噪声往往是因为交流电产生的电泳,影响了我们信号采集导致信号上存在工频干扰。 那么matlab去除工频干扰可以通过陷波滤波器实现。 通常使用scipy.signal实现信号的处理。 Scipy的信号处理模块(scipy.signal)来创…...

Redis(08)| 线程模型

一、redis 的线程模型 redis 内部使用文件事件处理器 file event handler,它是单线程的,所以redis才叫做单线程模型。它采用IO多路复用机制同时监听多个 socket,将产生事件的 socket 压入内存队列中,事件分派器根据 socket 上的事…...

Java14-16新特性

目录 一、Java14新特性 1、instanceof模式匹配 2、友好的空指针(NullPointerException)提示 3、record类型 二、Java15新特性 1、Sealed Classes 2、CharSequence新增方法 3、TreeMap新增方法 4、文本块 5、无需配置环境变量 三、Java16新特性 1、包装类构造方法的…...

中兴再推爆款,双2.5G网口的巡天AX3000Pro+仅需299元

10月30日消息,中兴新款路由器中兴巡天AX3000Pro将于10月31日20:00正式开售,当前可在天猫、京东及红魔商城进行预约,首发价格299元。 据了解,中兴巡天AX3000Pro是中兴智慧家庭推出的巡天系列新品,也是当前市场上唯一一款300元价位内配备双2.5G网口的路由器。 中兴巡天AX3000Pro…...

【系统架构】架构风格专题

目录 1、定义 2、通用架构风格分类 3、架构风格比较 4、示例:管道-过滤 VS 数据仓库)比较因素分析 1、定义 架构风格:描述某一特定应用领域中系统组织方式的惯用模式,反映了领域中众多系统所共有的结构和语义特性&#xff0c…...

【Qt】盒子布局、网格布局、表单布局和堆栈布局

盒子布局 QBoxLayout可以在水平方向或垂直方向上排列控件,分别派生了QHBoxLayout、QVBoxLayout子类。 QHBoxLayout:水平布局,在水平方向上排列控件,即:左右排列。QVBoxLayout:垂直布局,在垂直…...

GO语言,半自动打怪

仅供学习参考,切勿用于商业用途 package mainimport ("fmt""github.com/go-vgo/robotgo""math/rand""time" )const (taskNum 7 )type Task struct {Name stringSleepTime1 intSleepTime2 intFunc func() }fu…...

【Java 进阶篇】Java登录案例详解

登录是Web应用程序中常见的功能,它允许用户提供凭证(通常是用户名和密码)以验证其身份。本文将详细介绍如何使用Java创建一个简单的登录功能,并解释登录的工作原理。我们将覆盖以下内容: 登录的基本概念创建一个简单的…...

Vue 菜单导航栏,轮播图

导航菜单栏结构和样式代码实现 一级导航栏 views/HomeView.vue <template><div><Shortcut></Shortcut><Header></Header><div class"inner"><Navigation></Navigation></div><div>我是主页&l…...

讲述为什么要学习Adobe XD以及 Adobe XD下载安装

首先 我们要了解 Adobe XD 是个什么东西 XD是Adobe公司专门开发出来面向交互、界面设计的矢量绘图工具。 然后是 他可以做什么&#xff1f; 最基本的 可以做UI界面设置 所有 手机 平板 电脑等设备的UI界面 我们都可以通过XD完成 还有就是原型设置 我们可以做各种界面图 还有…...

Netty复习:(1)Http server: hello world

一、加依赖 <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.72.Final</version></dependency>二、创建自定义的handler package cn.edu.tju.handler;import io.netty.buffer.ByteB…...

【Python 千题 —— 基础篇】加法计算

题目描述 题目描述 编写一个程序&#xff0c;接受用户输入的两个数字&#xff0c;然后计算这两个数字的和&#xff0c;并输出结果。 输入描述 输入两个数字&#xff0c;用回车隔开两个数字。 输出描述 程序将计算这两个数字的和&#xff0c;并输出结果。 示例 示例 ① …...

基于纵横交叉算法的无人机航迹规划-附代码

基于纵横交叉算法的无人机航迹规划 文章目录 基于纵横交叉算法的无人机航迹规划1.纵横交叉搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用纵横交叉算法来优化无人机航迹规划。 …...

D-Bus:数据类型

D-Bus中描述接口的属性和方法,有其自己定义的一套签名描述方式: 数据类型描述符号对应C++数据类型avector/array数组, ai表示的是vector<int32_t>bboolddouble双精度浮点数iint32_t,32位有符号整数nint16_t,16位有符号整数oobject_path对象路径quint16_t,16位无符号…...

BI零售数据分析,告别拖延症,及时掌握一线信息

在日常的零售数据分析中&#xff0c;经常会因为数据量太大&#xff0c;分析指标太多且计算组合多变而导致数据分析报表难产&#xff0c;零售运营决策被迫拖延症。随着BI数据可视化分析技术的发展&#xff0c;智能化、可视化、自助分析的BI数据分析逐渐成熟&#xff0c;形成一套…...

[BUUCTF NewStarCTF 2023 公开赛道] week4 crypto/pwn

再补完这个就基本上完了. crypto RSA Variation II Schmidt-Samoa密码系统看上去很像RSA,其中Npqq, 给的eN给了d from secret import flag from Crypto.Util.number import *p getPrime(1024) q getPrime(1024)N p*p*qd inverse(N, (p-1)*(q-1)//GCD(p-1, q-1))m bytes…...

论文范文:论基于架构的软件设计方法及应用

注意:范文只适用于帮助大家打开写作思路,并不能作为素材直接用于平时练习、考试中。考试中直接使用范文的素材,会有被认定为雷同卷的风险。 摘要: 2022年4月,本人所在单位计划研发生态集装箱管理控制平台项目。该平台主要用于与现有公司生态集装箱产品做对接,达到远程控制…...

C语言 指针进阶笔记

p和*p: 如图&#xff0c;p是指针&#xff0c;指针存放着地址&#xff0c;打印出来应该是数组的值 *p是指针里里面的元素 #include<stdio.h> int main() {int a1;int b2;int c3;int p[3]{a,b,c};printf("%d",*p); return 0; } 那么现在的打印结果应该为数组的…...

数据库认证 | Oracle OCP好考吗

数据库对于很多技术人员来说都不陌生&#xff0c;但是你想深入了解的话&#xff0c;那么考个证书也许就是一个不错的选择。 如果能考个Oracle OCP认证的话&#xff0c;那也确实不错。那么Oracle OCP好考吗&#xff1f;下面我们就来了解一下吧。 01 Oracle OCP好考吗 OCP考试还…...

处理大数据的基础架构,OLTP和OLAP的区别,数据库与Hadoop、Spark、Hive和Flink大数据技术

处理大数据的基础架构&#xff0c;OLTP和OLAP的区别&#xff0c;数据库与Hadoop、Spark、Hive和Flink大数据技术 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&am…...

ArtnetnodeWifi:WiFi嵌入式Art-Net DMX节点实现

1. ArtnetnodeWifi 项目概述ArtnetnodeWifi 是一个面向嵌入式平台的轻量级 Art-Net 协议实现库&#xff0c;专为 WiFi 连接的微控制器设计。其核心目标是将 ESP8266、ESP32、MKR1000&#xff08;WiFi101&#xff09;、Nano 33 IoT&#xff08;WiFiNINA&#xff09;等具备 WiFi …...

【具身智能实战】从零部署LeRobot-ALOHA:仿真环境搭建、机械臂标定与GPU高效训练避坑指南

1. 环境准备与基础配置 第一次接触LeRobot-ALOHA项目时&#xff0c;最头疼的就是环境配置。这个开源项目依赖的库版本非常新&#xff0c;和很多现有环境存在兼容性问题。我花了三天时间反复折腾&#xff0c;总结出一套稳定可靠的配置方案。 首先需要准备Ubuntu 20.04或22.04系统…...

线性代数小白必看:孔祥仁网课笔记整理(附二阶到n阶行列式详解)

线性代数入门&#xff1a;从二阶行列式到n阶行列式的完整指南 第一次接触线性代数时&#xff0c;行列式这个概念就像一堵高墙挡在面前。记得我大一时&#xff0c;光是理解二阶行列式的几何意义就花了整整一周时间。直到后来遇到一位好老师&#xff0c;用简单的例子帮我打通了任…...

C语言回调函数原理与实战应用指南

C语言回调函数深度解析与实践应用1. 函数指针基础1.1 函数指针概念函数指针是指向函数的指针变量&#xff0c;与普通指针变量不同&#xff0c;它指向的是代码区而非数据区。标准定义形式为&#xff1a;返回值类型 (*指针变量名)(参数类型列表);关键特征&#xff1a;指针变量名必…...

基于carsim Simulink联合仿真和预瞄PID算法的轨迹跟踪模型】车辆路径跟踪包括主车...

基于carsim Simulink联合仿真和预瞄PID算法的轨迹跟踪模型】车辆路径跟踪包括主车的纵向和横向运动控制&#xff0c;纵向控制是通过调整轮毂电机的扭矩&#xff0c;使得车辆以期望的速度行驶&#xff1b;横向控制是通过调整主车的转向&#xff0c;使主车沿预期的轨迹行驶。 本模…...

解决NextCloud无法挂载SMB/CIFS共享:smbclient缺失的完整安装指南

1. 为什么NextCloud需要smbclient支持 如果你正在使用NextCloud搭建私有云存储&#xff0c;可能会遇到一个常见问题&#xff1a;无法挂载SMB/CIFS共享存储。这个问题通常会在管理后台的"外部存储"设置页面出现错误提示&#xff0c;核心原因就是缺少smbclient组件。 S…...

Mac用户必看:Homebrew换源提速全攻略(附清华镜像最新配置)

Mac开发者必备&#xff1a;Homebrew国内镜像加速终极指南 每次打开终端准备用Homebrew安装新工具时&#xff0c;那个缓慢的下载进度条是否让你抓狂&#xff1f;作为Mac生态中最受欢迎的包管理工具&#xff0c;Homebrew的默认服务器位于海外&#xff0c;国内用户常遭遇下载速度以…...

51单片机外部中断实战:电平与边沿触发的按键检测优化方案

1. 51单片机外部中断基础入门 第一次接触51单片机外部中断时&#xff0c;我完全被那些专业术语搞晕了。什么电平触发、边沿触发&#xff0c;听起来就像天书一样。但实际用起来才发现&#xff0c;这其实是单片机最实用的功能之一。想象一下&#xff0c;你正在用单片机做一个智能…...

CentOS 7 无线网卡“失踪”排查指南:从驱动到NetworkManager的全面诊断

1. 无线网卡消失的常见症状与初步检查 当你打开CentOS 7准备连接Wi-Fi时&#xff0c;突然发现系统提示"No Wi-Fi Adapter found"&#xff0c;这种突如其来的网络"失踪"问题确实让人头疼。作为系统管理员&#xff0c;我遇到过太多次类似情况&#xff0c;有时…...

清单来了:2026年公认好用的专业AI论文网站

2026年AI论文写作工具已从“内容生成”进化为多维度学术支持系统&#xff0c;核心差异体现在文献真实性、格式合规性、长文本逻辑、查重降重、AIGC合规五大维度。本次测评覆盖6款主流工具&#xff0c;涵盖中文/英文、全流程/专项、免费/付费场景&#xff0c;让你高效筛选适合自…...