数字滤波器(5)—FIR连续采样分段卷积时域重叠相加法
此前,我们提到了FIR系统在时域的分段卷积中使用“重叠保留(Overlap-Save)”的处理方式,本文我们说明一下数字滤波器(5)—FIR连续采样分段卷积时域“重叠相加(Overlap-Add)”的处理方式。
信号处理在时域和频域中处理是有差异的。
说得通俗一点就是:时域中处理是直接用采集到的信号进行计算;而频域中则要用离散傅里叶变换(DFT)/离散傅里叶反变换(IDFT)对采集到的信号进行转换到频域,然后再从频域转回时域处理。
在我们看到的参考文档[1]中,描述的是在频域进行DFT,然后由IDFT转回时域处理的过程。如下图所示。大概的过程是:
每次处理的数据长度为L,然后在每分段的尾部添加(M-1)个0之后,让每次处理的数据序列长度N=L+M-1,通常N为2的幂次倍;
同时对于滤波器,也需要将原来长度为b的序列,通过填0的方式增加到长度为N;
由DFT将两个数列分别转换到频域,相乘后,再IDFT转回时域,就得到N=(L+M-1)的时域卷积结果;
保留每次操作的所有数据,然后在下一次操作结束后,将最新数据的最前面的(M-1)个结果数据和上一次结果数据的最后(M-1)个数据顺序相加......持续直至结束。
FIR频域的重叠相加示意图
我们看看时域的卷积应该怎么操作。
FIR时域重叠相加操作示意图
如上图所示:
每次读取长为L的数据序列,然后与长度为M的滤波器进行卷积,生成一个(L+M-1)的卷积结果序列;
保留每次操作的所有数据,然后在下一次操作结束后,将最新数据的最前面的(M-1)个结果数据和上一次结果数据的最后(M-1)个数据顺序相加......持续直至结束。
两个过程看起来略有差异,甚至会觉得时域的处理更简单省事,会不会更省时?其实频域看起来费时,但数据规模到了一定程度之后,频域的处理速度就具有优势了。然而对于一般的应用,直接卷积操作还是可以接受的。
还记得上次我们提到Python中卷积函数np.convolve的三种模式吧?该函数对卷积是在时域中进行的。
在Python中,卷积函数np.convolve(data_segment, b, mode)对指定长度的数据data_segment(长度L),和FIR滤波器系数序列b(长度M)进行卷积。输出的结果序列则分为以下三种:
full: 结果长度=M+L-1
same: 结果长度=max(M,L)
valid: 结果长度=max(M,L)-min(M,L)+1=L-(M-1)
在这里,我们需要选用full模式,这样就获取每段卷积一个不落的所有数据(L+M-1)。先看模拟效果后看Python代码。
故事情节设定:50Hz的信号中,夹杂300,450Hz的干扰。滤除干扰。
FIR选频滤波器的幅频响应
FIR系统重叠相加的滤波结果示意图
这里要特别说明一点:卷积后的数据长度,最终会比原来的数多出(M-1)个,所以输出到图的时候,需要有意控制长度。
滤波过程中要经历“热身”,所以最开始阶段有(M-1)个数据也是可以剔除的。同样,如果我们看卷积最终结果尾部不处理,也有(M-1)个无效数据的输出需要截取。
卷积后尾部无效数据(M-1)
上代码,我们自己在代码中划重点,并调整输出结果的有效长度范围:
import numpy as npimport matplotlib.pyplot as pltfrom scipy import signalfrom scipy.fft import fftimport math
# 创建带通滤波器f1 = 40f2 = 60filter_len = 80 # 滤波器长度fs = 1600 # 采样频率维持不变
b = signal.firwin(filter_len, [f1, f2], pass_zero=False, fs=fs)
# 设置数据长度seg_filter_len = 256 # filter output length of each segment datasegment_len = seg_filter_len - filter_len + 1 # 分段数据目标长度 seg_filter_len = segment_len + filter_len - 1target_length = segment_len * 50 # 总数据长度
# 而新的时间序列的上限 bbspace = target_length / fs
# 生成的时间序列为L的整数倍,模拟每次采样的数据的长度t = np.arange(0, bspace, 1/fs)
# 产生一个含有300Hz,450Hz和50Hz信号的模拟信号x = np.sin(2 * np.pi * 50 * t) + 0.5 * np.sin(2 * np.pi * 300 * t) + 0.5 * np.sin(2 * np.pi * 450 * t)
segments = []for i in range(0, len(x), segment_len): segments.append(x[i:i+segment_len])
# Filtering & Overlap-Add processing# Total outputput buffer, len = target_length + filter_len - 1filtered_signals = np.zeros(target_length + filter_len - 1) for i in range(len(segments)): filtered_segment = np.convolve(segments[i], b, mode='full') # full模式用于保留所有卷积结果 N = L + M -1 filtered_signals[i*segment_len:i*segment_len+len(filtered_segment)] += filtered_segment # 叠加过程
filtered_signals = filtered_signals#[:target_length] # 保留和原信号等长的部分
# Filter Freq Responsew, h = signal.freqz(b, 1, fs=fs)plt.figure()plt.plot(w, abs(h))plt.title('Filter Freq Response')plt.grid()plt.xlabel('f[Hz]')plt.ylabel('Amplitude')
# Signal Before filtering & Spectrumn = len(x)freq = np.fft.fftfreq(n, 1/fs)y = np.fft.fft(x)
plt.figure()plt.subplot(221)plt.plot(t[:500], x[:500])plt.title('Original Signal')plt.subplot(222)plt.plot(freq[:n//2], np.abs(y[:n//2]*2/n)) # 标幺,绘制前一半plt.title('Spectrum of Orginal Signal')plt.grid()
# Signal After filtering & Spectrumn = len(x)y = np.fft.fft(filtered_signals)
plt.subplot(223)# 1. Normal outputplt.plot(t[:500], filtered_signals[:500])plt.title('Filtered Signal')plt.subplot(224)plt.plot(freq[:n//2], np.abs(y[:n//2]*2/n)) # 标幺,绘制前一半plt.title('Spectrum of Filtered Signal')plt.grid()
plt.tight_layout()
plt.show()
# 2. End of convolution without end cutoff: for test purposeplt.figure()temp = t[8000:8850]s = filtered_signals[8079:8929]plt.plot(temp, s)plt.title('Filtered Signal')plt.grid()plt.show()
- |
- +1 赞 0
- 收藏
- 评论 0
本文由小妮转载自Amphenol Sensors(安费诺传感器学堂公众号),原文标题为:数字滤波器(5)—FIR连续采样分段卷积时域重叠相加法,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关研发服务和供应服务
相关推荐
解析数字滤波器(1)——陷波滤波器
有鉴于数字信号处理涉及的面太多,我们必须要把话题收缩。数字滤波的种类也是五花八门,因此再选一个小的类型,AMPHENOL SENSORS将围绕离散线性时不变系统来简单讨论一下陷波滤波器(Notch Filter)和梳状滤波器(Comb Filter),通过代码的演示和输出,我们可以比较一下这两类滤波器的特点。在本文中先以陷波滤波器为题来讨论相关的内容。
技术探讨 发布时间 : 2024-07-25
解析数字滤波器(2)——梳状滤波器及相关话题
本文AMPHENOL SENSORS将围绕但不限于梳状滤波器进行展开。其中,梳状滤波器,一方面可以滤除特定的频率(尤其是特定频率的谐波),另一方面也可以在信号中对指定频率及其倍频的信号进行拣选。例如图-1所示的滤除指定谐波成分的梳状滤波器的幅频图。
技术探讨 发布时间 : 2024-07-25
数字滤波器(4)—IIR/FIR系统对连续采集数据的滤波处理和模拟仿真
在之前我们的博文中,所提到的数据的滤波处理和仿真分析,其实都是围着一段固定长度的模拟数据展开的,除了知道滤波器的幅频、相频响应特性之外,也直观地看到了滤波的效果会是怎么样的。实际应用会怎么样?需要怎么处理?
技术探讨 发布时间 : 2024-08-27
数字滤波器(6)—FIR频域连续滤波“重叠相加法”C++源码
传感器和信号处理仅一线之隔,信号的前后端合理搭配,是我们更准确地感知这个世界的一种基本态度和方式。FIR频域重叠相加法还记得我们(此处有重复之嫌)之前的发文《FIR连续采样分段卷积时域重叠相加法》?不过那是在时域处理的模拟和仿真。这次我们的内容是用C++在频域实现的滤波卷积法,仍然是重叠相加法,届时大家可以比较一下两种方式的差异。基本是通过两个处理过程。
设计经验 发布时间 : 2024-07-03
数字滤波器C语言的模拟及验证
本文通过一个带通滤波器的Python验证,再转换到C++代码模拟验证的实现过程说明数字滤波器是如何工作的。我们先通过Python测试验证,并生成滤波器的参数数据。然后将获取的参数用到C程序中重现滤波器。
设计经验 发布时间 : 2024-06-29
Amphenol Sensors(安费诺)/Thermometrics 温度传感器选型指南
目录- 温度传感器产品介绍及应用领域 NTC热敏电阻/PTC热敏电阻 探针和组件 其他技术和附件
型号- T5D,HM,YA,YB,YC,P60,YD,YF,P65,YG,YH,RL40,YK,YL,YP,YR,EC95,GC32,YS,RL45,GC16,B35,UD20,RL30,3006,AB6,MELF,JA,YS4019,JB,JTC,JC,JD,RL35,JE,JF,MF65,SP85,JS2945,JI,B43,JL,JM,JP,FP10,JR,JTR,CTR100,FP14,P85,JW,M,NDK,T,NDM,CTR65,NDL,ZTP,BB07,PT1000,0706,BB05,NDP,YS4020,NDU,YSM 4021,CL,CTR85,BR16,KU,BR14,KY,BR11,TC,FP07,1403,NHQM,YSM,TH,R100,TM,MA400,PTSM,TP,1803,BB11,EVAP,P100,MA100,DK,SC30,R60,BR23,P20,R65,HVAC,P25,YM120,PT200,EVAPA1450,MS,DKM,MT,CTR60,P30,RL1004,BR32,A1447-A1450,ND,PTA,NK,EVAPA1447,1703,PTE,PTD,SP100,PTF,DC95,PTH,B05,B07,PTO,EVAP A1424,SC50,R85,BR42,C100,2006,JYA,NHQ,NHQMM,GC11,GC14,GE,RL20,M2000,B10,PT100,B14,GT,BR55,MC65,SP60,TK95,SP65,RL14,RL060628,RL10
EV Battery Pack Water Detection Sensor from Amphenol Sensors
With the sharp growth of electric vehicles, many OEMs are using a water cooling system for the EV battery system. When water escapes the system and leaks into the battery pack, dangerous conditions are created. Amphenol Advanced Sensors‘ Water Detection Sensor monitors for water leakage by constantly checking resistance values. If a leak is detected in the EV battery pack, this sensor technology provides immediate notification.
产品 发布时间 : 2024-10-30
Amphenol Sensors(安费诺)温度传感器/MEMS压力传感器/C〇2、湿度、灰尘传感器选型指南
目录- Sensors Temperature Sensors Pressure Sensors CO2, Humidity & Dust Sensors
型号- DK SERIES,NDP SERIES,NHQ SERIES,AAS-AQS-UNO-RH-CO2,RL40,T5D SERIES,FMA SERIES,GC32,EC95,AB6 SERIES,RL45,GC16,GT SERIES,DKM SERIES,CTP65,M SERIES,UD20,S SERIES,CTP60,RL30,AIT SERIES,GE-1935,TH SERIES,NDL SERIES,3006,MELF,YS4019,RL35,HM SERIES,GE-2102,GE-2103,JS2945,T6715,T6613-X,AAS-AQS-UNO,TM SERIES,R85 SERIES,SM-UART-04L,YSM SERIES,FP10,NPI-15,T6715-X,FP14,NPC-120,HS12SP,NPI-19,B35 SERIES,T6713,BB07,SUF SERIES,NK SERIES,BB05,YS4020,T6703,YSM 4021,YR SERIES,BR16,A-1737,BR14,T6700,BR11,T SERIES,FP07,1403,NHQM,P85 SERIES,ZTP SERIES,JF SERIES,NDK SERIES,JS8741,NPH SERIES,JS8746,R100,JR SERIES,PTSM,MA400,SM-PWM-01C,JB SERIES,1803,BB11,B05 SERIES,T6616,EVAP,YF SERIES,JA SERIES,P100,YD SERIES,YH SERIES,MF65 SERIES,YG SERIES,MA100,JIC SERIES,YB SERIES,B43 SERIES,T9602,NPC-100,YA SERIES,YC SERIES,SC30,CTP100,BR23,T6613,PTD SERIES,PTE SERIES,YM120,HVAC,JTC SERIES,JTR SERIES,MS SERIES,YK SERIES,WTF083B001,P30 SERIES,YL SERIES,YP SERIES,PTA SERIES,PTH SERIES,ND SERIES,B07 SERIES,PTF SERIES,PTO SERIES,P60 SERIES,JM SERIES,YS SERIES,T6600,RL1004,BR32,JS6780,JI SERIES,HS30P,JW SERIES,A1447-A1450,JS SERIES,TP SERIES,JE SERIES,JC SERIES,GE-1856,1703,B14 SERIES,T6615-X,GE SERIES,R65 SERIES,DC95,JYA SERIES,T3000,EVAP A1424,SC50,BR42,A-1266,C100,GE-1923,NPP-301,706 SERIES,2006,NKA SERIES,AS SERIES,B10 SERIES,P25 SERIES,NHQMM,GC11,RL20,CL SERIES,P20 SERIES,GC14,GE-1920,NPC-1220,JP SERIES,P65 SERIES,ES SERIES,CTP85,T6713-X SERIES,BR55,MC65,KU SERIES,TK95,NDM SERIES,R60 SERIES,NDU SERIES,NPC-1210,TC SERIES,JL SERIES,RL14,JD SERIES,RL060628,RL10
Amphenol Sensors(安费诺)/All Sensors 压力传感器选型指南(简版)
目录- 传感器解决方案及产品优势介绍 传感器技术介绍 单芯片压力传感器 双芯电路交叉耦合补偿压力传感器 双芯电路和气路交叉耦合补偿压力传感器 传感器应用领域介绍 压力单位换算 传感器通用名词解释
型号- DLH,ADCX,ACPC-C,AXCA,ACPC,BLV,DLV,ACPC-H,AXCA-PRIME,AXCA-MIDDLE,MAMP,MLV,SAMP,ACPC-P,BLC,ADUX,BLVR,MAMP-/P,ADCA,DLH,DLVR,DLVR,BLCR,MAMP-P,MDCX,ADO,BLV,AXCX-PRIME-INCH,DLHR,DLHR,AXCX,MLV,AXCA-MIL,BLC,DLC,ADO-MIL
AMPHENOL SENSORS(安费诺)温度传感器选型表
AMPHENOL SENSORS(安费诺)温度传感器选型表。25°C 时阻值:5Ω~1.3MΩ,B25/85:2983K~4793K。
产品型号
|
品类
|
25°C 时阻值(Ω)
|
电阻容差
|
B25/85
|
工作温度(℃)
|
长度-引线(inch、mm)
|
安装类型
|
封装/外壳
|
AL03006-5818-97-G1
|
温度传感器
|
10k
|
±10%
|
3992K
|
-50°C ~ 204°C
|
1.15"(29.20mm)
|
通孔
|
DO-204AH,DO-35,轴向
|
选型表 - AMPHENOL SENSORS 立即选型
Amphenol Sensors(安费诺)建筑及工业应用传感器选型指南
目录- Chip Cap 2完全校准的温湿度传感器 Telaire Ventostat®T8700壁挂式温湿度变送器 Telaire Ventostat®T8031 CO2小型风管式C02传感器 Telaire®T8041/T8042 分管式C02传感器 Telaire T8100-R系列挂壁式C02和温度变送器(带继电器) Telaire®7000室内空气品质监测器 Telaire VaporstatTM 9002红外露点变送器 Telaire®配件 Telaire HumiTrac™温湿度变送器 T9602湿度与温度传感器 AAS-53系列水管型温度变送器 ADT/AOT/AIT温湿度变送器使用说明书
型号- P40250128,CC2D265,P40250129,P40250126,P40250127,P40250125,P40250122,P40250123,DC95F302W,P40250120,P40250121,T8031,CC2D255,EHR-4,T8100-D-R,P40250139,K53,T8700,CC2A23,PT1000A,AIT,PT1000B,CC2A25,P40250133,P40250131,T2075NG,P40250130,T804K0-10V,T1508,T8200-D-5P,T8042-5VI0-5V,T9602-5-A-1,NI1000,9002,T9602-3-A-1,T5100,P40250149,CC2A35,T8700-E-D,P40250147,0-5000PPM,P40250144,PT100A,T7001I,P40250145,PT100B,P40250142,P40250143,T8100,S4B-EH,CC2A33,P40250141,CC2D235,CC2D355,T7001,PT1000,T2072,T7001D,CC2D25,T9602-3-A,T8042I0-10V,CC2D23,P40250156,T8041,T8100-R,P40250151,T8042,P40250150,T9602-3-D,NTC10K,CC2025,7000,T9602-3-D-1,CC2D35,T9602,CC2D33,ADT,NTC15K,T8200,CC2D335,CHIPCAP 2,NTC10K-II,T2090,T1551,T1552,MPNT3D03750M4,NTC20K,T2007,T8700-D,T8700-E,T8100,T2080,T8100-EC,P40250109,PA0250118,T8100-E-D-GN-5P-R,PA0250115,T1505,P40254275,P40254276,P40254277,P40250189,P40250186,P40250184,P40250185,T8300,P40250182,P40250183,P40250181,AAS-53,8000,PT100,T7001SK,P40250119,NTC10K-A,AOT,P40250117,T9602-5-A,P40250113,P40250114,P40250111,P40250112,DC95F103W,T2076NG,P40250110,P40250193,T9602-5-D,T8001,P40250191,7001D,P40250192,T8002,T9602-5-D-1,MPNV12R30M 16004616,B4B-EH-A,P40250190,T8041-5VI0-5V,RS485,NTC10K-III
【选型】Amphenol Sensors(安费诺)/SGX Sensortech 红外/半导体/电化学/气体传感器传感器选型指南
目录- 安费诺公司介绍 工业安全气体传感器 环境监测产品 半导体 红外输出产品 催化CH4 红外HC 红外CO2 电化学
型号- MICS-4514,IR12EJ,IR22BD,SGX-4H2S,MICS-2614,VQ546MR,INIR12PR-1.4%,VQ24,VQ25,VQ548ZD,IR12EM,SGX-7H2S,IR21GM,IR34BC,IR11BD,IR21GJ,SGX-40X,SGX-7OX,IR604/1,VQ542R,IR25TT-M,IR11BR,IR604/3,IR604/2,SGX4NH3,SGX-SURECO,VQ21TSB,IR12GJ,SGX-4DT,IR11EJ,IR21BD,MICS-2714,INIR12,VQ41,INIR11,SGX-7NH3,IR12GM,IR11EM,IR15TT,IR14BD,VQ21TB,IR33BC,IR15TT-M,SGX-70X,SGX-4CO,IR603/2,VQ31,VQ548ZD/W,IR603/1,VQ21TS,VQ35,IR15TT-R,IR603/3,V025,IR25TT,IR11GJ,MP7217,IR11GM,MICS-5524,MP7214,MP7217TC,IR81BB,VQ547TS,VQ542ZD,VQ548MP,VQ542RD,4系列,SGX-7CO,IR13BD,IR22EJ,IR32BC,MICS-5914,IR602/3,IR602/2,IR602/1,INIR12PR-1.7%,VQ21T,VQ546M,IR23BD,IR31CE,IR42BC,MICS-OZ-47,VQ2,VQ545ZD,VQ1,VQ549ZD,IR12BD,IR22GJ,IR21EJ,7系列,IR31BC,SGX-4OX,IR601/3,IR601/2,IR601/1,IR31SE,IR31SC,IR21EM,VQ549ZD/W
Amphenol Sensors(安费诺) 汽车传感器选型指南
目录- 汽车传感器解决方案介绍 车厢空气质量系列传感器 排放处理系列传感器 新能源汽车传感器应用 测量汽车应用中最为关键的参数
型号- SM-UART-01L,PT200,T6703,TPMS,DPS,G-CAP2,SM-UART-01D,A2103,NPI-19,T6713,A-2102,EGR,A-2103,NPP-301,GE-1935,A-2121,ZTP,DPF,SM-UART-01L+,SM-PWM-01C,NPX1
电子商城
服务
可定制板装式压力传感器支持产品量程从5inch水柱到100 psi气压;数字输出压力传感器压力范围0.5~60inH2O,温度补偿范围-20~85ºС;模拟和数字低压传感器可以直接与微控制器通信,具备多种小型SIP和DIP封装可选择。
提交需求>
可定制温度范围-230℃~1150℃、精度可达±0.1°C;支持NTC传感器、PTC传感器、数字式温度传感器、热电堆温度传感器的额定量程和输出/外形尺寸/工作温度范围等参数定制。
提交需求>
登录 | 立即注册
提交评论