介绍一下FIR滤波器的使用

1. 滤波的目的在信号的实时处理中,滤波是十分必要的,因为信号中难免会由于各种原因混入噪声,干扰我们对信号进行分析。
这里强调了“实时”,是因为在一些场景中,我们可能需要对信号进行离线的、交互式的分析,此时仅仅是对原始信号进行采集即可,无需软件 进行滤波,只需要硬件在采集信号时做一下抗混叠滤波即可,这种场景不是本文所关心的。
在更多的场景下,比如我们的运动手表、手环在处理ppg信号计算心率时,是会进行实时计算的,那么就会进行实时滤波处理:因为大多数人的心率频率在0.7~3.6hz范围内,至少在这之外的频率会在计算心率之前滤除掉。
2. 信号模拟比如我们要处理一个信号,但是我们仅仅关心信号100hz以下的频段,这时我们就需要一个低通滤波器了,此时我们先模拟出一个包含5hz和3000hz频率成分的信号,假设信号采样频率为8192,采样时间为1秒,共计8192个点。信号生成和展示的代码如下:
import numpy as npfrom numpy import cosimport matplotlib.pyplot as pltpi = np.pit = np.linspace(0, 1, 8192)signal = 3 * cos(2 * pi * 5 * t + pi/3) + 7 * cos(2 * np.pi * 3000 * t + 3/8*pi)plt.figure()plt.plot(t, signal)plt.show()我们生成了这样的一个信号:
生成的信号
3. fir滤波器系数生成这一步可以使用matlab进行辅助,本文仅仅是想要一个截止频率为10hz的fir低通滤波器,步骤如下:
打开matlab;点击app;找到滤波器设计工具,并点击;选择响应类型、设计方法、阶数等。
辅助设计界面
点击“文件” 、“导出”、“系数文件”,导出系数文件,我把导出的系数(fir低通滤波系数仅有分子)画出来后如下图:
系数波形图
3. fir滤波原理采用fir进行滤波,从操作上看是进行卷积操作,对上述滤波器的系数进行fft变换即可窥见一斑:
import numpy as npimport matplotlib.pyplot as plt# b = [......] 101个系数组成的列表,此处省略delta_f = 1plt.plot([delta_f * i for i in range(4097)], abs(np.fft.rfft(b, 8192))) # 单边fftplt.show()
系数的傅里叶变换
这里得到的就是滤波器的幅频响应曲线,和滤波器辅助设计工具中所展示的幅频响应曲线是一致的。
4. 滤波计算代码与结果把第二步生成的信号中高于100hz的频率成分(即3000hz的成分)滤除,得到的结果如下图所示,在结果的开头和结尾产生了失真,这是因为在卷积运算过程中,在刚开始和结尾计算时有效信息不足进行了补零操作导致的。
滤波的结果
这一步的运算代码如下:
import numpy as npfrom numpy import cosimport matplotlib.pyplot as pltfrom filter_coeff import bpi = np.pit = np.linspace(0, 1, 8192)signal = 3 * cos(2 * pi * 5 * t + pi/3) + 7 * cos(2 * np.pi * 3000 * t + 3/8*pi)fir_len = len(b)res = []for i in range(len(signal)): print(i) temp = 0 if i len(signal) - fir_len: data = signal[i:].tolist() + (fir_len - len(signal) + i) * [0] else: data = signal[i:i+fir_len] for j in range(fir_len): temp += b[j] * data[-j-1] res.append(temp)plt.figure()plt.plot(t, res)plt.show()

小型化微波陶瓷滤波器
带金属封装传感器装置的热式质量流量计的原理及设计
集编码器和测速电机于一体的雷恩模块式RCO444R
北京InfoComm China 2023成功举办,Valens为视频会议转型奠定基础
工业物联网解决方案:远程组态监控管理系统
介绍一下FIR滤波器的使用
医疗体温计领域,“禁汞”措施两难
TE发布全新智能激活(SA)功能的金属混合聚合物正温度系数器件
Palm智能小手机正式开启预售该机定位年轻人的时尚备机
PCB设计和制造过程中多种材料属性的重要性
三星电视携手京东开启618狂欢 创新科技助力焕新生活
CORIDC算法
标称阻值和允许误差
魅族魅蓝5s首销 18W快充口碑一鸣惊人
亚洲专业视听之世界音乐与爵士乐的现场扩声制作
buck电路交错并联开关管的电流会变小吗
灵动微电子产品定位
工信部公布征求意见稿,智能网联汽车发展驶上“快车道”
常见的高精度ADC芯片 adc芯片工作原理是什么
风河推出Android车载信息娱乐系统快速开发软件工具