0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍一下FIR滤波器的使用

冬至子 来源:振动信号研究所 作者:一只小绿豆 2023-05-26 15:13 次阅读

1. 滤波的目的

信号实时处理中,滤波是十分必要的,因为信号中难免会由于各种原因混入噪声,干扰我们对信号进行分析。

这里强调了“实时”,是因为在一些场景中,我们可能需要对信号进行离线的、交互式的分析,此时仅仅是对原始信号进行采集即可,无需软件 进行滤波,只需要硬件在采集信号时做一下抗混叠滤波即可,这种场景不是本文所关心的。

在更多的场景下,比如我们的运动手表、手环在处理ppg信号计算心率时,是会进行实时计算的,那么就会进行实时滤波处理:因为大多数人的心率频率在0.7~3.6Hz范围内,至少在这之外的频率会在计算心率之前滤除掉。

2. 信号模拟

比如我们要处理一个信号,但是我们仅仅关心信号100Hz以下的频段,这时我们就需要一个低通滤波器了,此时我们先模拟出一个包含5Hz和3000Hz频率成分的信号,假设信号采样频率为8192,采样时间为1秒,共计8192个点。信号生成和展示的代码如下:

import numpy as np
from numpy import cos
import matplotlib.pyplot as plt

pi = np.pi
t = 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低通滤波器,步骤如下:

  1. 打开matlab;
  2. 点击"APP";
  3. 找到滤波器设计工具,并点击;
  4. 选择响应类型、设计方法、阶数等。

图片

辅助设计界面

  1. 点击“文件” 、“导出”、“系数文件”,导出系数文件,我把导出的系数(FIR低通滤波系数仅有分子)画出来后如下图:

图片

系数波形图

3. FIR滤波原理

采用FIR进行滤波,从操作上看是进行卷积操作,对上述滤波器的系数进行FFT变换即可窥见一斑:

import numpy as np
import matplotlib.pyplot as plt
# b = [......] 101个系数组成的列表,此处省略
delta_f = 1
plt.plot([delta_f * i for i in range(4097)], abs(np.fft.rfft(b, 8192)))  # 单边FFT
plt.show()

图片

系数的傅里叶变换

这里得到的就是滤波器的幅频响应曲线,和滤波器辅助设计工具中所展示的幅频响应曲线是一致的。

4. 滤波计算代码与结果

把第二步生成的信号中高于100Hz的频率成分(即3000Hz的成分)滤除,得到的结果如下图所示,在结果的开头和结尾产生了失真,这是因为在卷积运算过程中,在刚开始和结尾计算时有效信息不足进行了补零操作导致的。

图片

滤波的结果

这一步的运算代码如下:

import numpy as np
from numpy import cos
import matplotlib.pyplot as plt
from filter_coeff import b
pi = np.pi

t = 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 < fir_len:
        data = (fir_len-i) * [0] + signal[0:i].tolist()
    elif 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()
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 滤波器
    +关注

    关注

    158

    文章

    7332

    浏览量

    174784
  • 低通滤波器
    +关注

    关注

    13

    文章

    448

    浏览量

    46925
  • FIR
    FIR
    +关注

    关注

    4

    文章

    137

    浏览量

    32724
  • FFT变换
    +关注

    关注

    2

    文章

    10

    浏览量

    8718
收藏 人收藏

    评论

    相关推荐

    关于FIR滤波器点疑问

    请问:1.FIR滤波器的边界效应是怎么回事?2.FIR的边界效应是由于信号的相位移位产生的吗?3.用全相位方法设计滤波器是不是可以消除这种影响?4.能不能帮忙编写几个程序来对比
    发表于 05-09 16:59

    求助关于全相位FIR滤波器和传统方法设计的滤波器

    最近在学习全相位滤波器,请问有人做过全相位FIR滤波器吗?能不能用matlab程序来比较一下全相位FIR
    发表于 05-10 15:34

    FIR滤波器FAQ原理简述

      1、FIR 滤波器是在数字信号处理(DSP)中经常使用的两种基本的滤波器,另个为IIR滤波器
    发表于 09-24 16:05

    FIR滤波器与IIR滤波器的区别与特点

    本帖最后由 xie0517 于 2016-8-8 08:52 编辑 FIR是有限冲击响应;IIR是无限冲击响应。 FIR和IIR滤波器个主要区别:
    发表于 08-08 08:49

    第37章 FIR滤波器的实现

    转dsp系列教程 本章节讲解FIR滤波器的低通,高通,带通和带阻滤波器的实现。 37.1 FIR滤波器
    发表于 09-29 08:32

    如何设计低通FIR滤波器

    此示例显示如何设计低通FIR滤波器。这里介绍的许多概念可以扩展到其他响应,如高通,带通等。FIR滤波器被广泛使用,因为它们具有强大的设计算法
    发表于 08-23 10:00

    IIR滤波器FIR滤波器的对比分析介绍

    ,它具有线性相位、容易设计的优点。这也就说明,IIR滤波器具有相位不线性,不容易设计的缺点。而另方面,IIR却拥有FIR所不具有的缺点,那就是设计同样参数的滤波器
    发表于 06-26 06:15

    怎么设计高阶FIR滤波器

    相对无限冲击响应(IIR)滤波器,有限冲击响应(FIR)能够在满足滤波器幅频响应的同时获得严格的线性相位特性,而数据通信、语音信号处理等领域往往要求信号在传输过程中不能有明显的相位失真,所以F
    发表于 08-23 06:39

    并行FIR滤波器Verilog设计

    本文将简单介绍FIR滤波器的原理,详细介绍使用Verilog HDL设计并行FIR滤波器的流程和
    发表于 09-25 17:44

    如何设计个脉动阵列结构的FIR滤波器

    本文首先介绍FIR滤波器和脉动阵列的原理,然后设计了脉动阵列结构的FIR滤波器,画出电路的结构框图,并进行了时序分析,最后在FPGA上进行
    发表于 04-20 07:23

    FIR滤波器的特性是什么

    数字滤波器的类型有FIR(有限长冲击与IIR(无限长。离散数字系统中,滤波器的表述为差分方程。FIRFIR基本特性:FIR 滤波器永远是稳定
    发表于 08-17 06:19

    fir滤波器的设计和实现

    使用iir滤波器相对fir滤波器可以在使用更小的阶数的情况实现更好的效果。实验证明,可能20阶的iir效果堪比500阶左右的fir
    发表于 12-22 08:29

    什么是fir数字滤波器 什么叫FIR滤波器

    什么是fir数字滤波器 Part 1: Basics1.1 什么是FIR滤波器?FIR 滤波器
    发表于 01-16 09:42 1.6w次阅读

    FIR滤波器与IIR滤波器到底有什么区别

    你知道FIR滤波器与IIR滤波器的不同点吗?它有有什么特点?滤波器是工程师工作中必不可少的器件,滤波器分为很多种,本文详细
    发表于 08-09 14:15 3.2w次阅读
    <b class='flag-5'>FIR</b><b class='flag-5'>滤波器</b>与IIR<b class='flag-5'>滤波器</b>到底有什么区别

    IIR滤波器FIR滤波器的区别

    数字滤波器是数字信号处理中最常用的一种技术,可以对数字信号进行滤波、降噪、增强等处理,其中最常见的两种数字滤波器是IIR滤波器FIR
    的头像 发表于 06-03 10:21 1.5w次阅读