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

电路笔记(信号):Python 滤波器设计分析工具pyfda

目录

  • 滤波器设置(3步实现滤波器设计)
  • 数据分析与使用
    • pyfda功能界面
    • 数字滤波器数学表示
    • 线性相位
      • 线性相位的定义
      • 线性相位的特性
    • 冲击响应
    • quartus数据加载
  • CG

滤波器设置(3步实现滤波器设计)

    1. pip install pyfda #安装python依赖,详见https://pyfda.readthedocs.io/en/latest/manual/index.html
    1. pyfdax #运行pyfdax桌面程序
    1. 设置参数,点击“DESIGN FILTER”:
    • N (滤波器阶数):滤波器最终点的个数
    • F P B F_{PB} FPB(拐角频率、截止频率): 显著衰减频率点,一般对应极点,信号的功率衰减到其最大值的一半,幅度-3dB、每十倍频程(如从1 kHz 到 10 kHz)-20dB幅度变化和-0到-90°相位变化。
    • F S B F_{SB} FSB(阻带区间频率)
    • F P B F_{PB} FPB& F S B F_{SB} FSB(波动权重) : ripple weights(通带和阻带的波动权重)是指用于控制滤波器在通带(Passband)和阻带(Stopband)内允许的最大波动量或误差的标准。这些权重通常出现在优化问题中,用来平衡通带和阻带之间的性能要求,确保滤波器满足特定的应用需求。
      在这里插入图片描述

数据分析与使用

pyfda功能界面

在这里插入图片描述

数字滤波器数学表示

数字滤波器通常用差分方程来表示,而这个差分方程可以通过Z变换转换成更易于分析的形式。一个常见的线性时不变(LTI)数字滤波器可以用下面的差分方程来描述:

y [ n ] = ∑ k = 0 M b k x [ n − k ] − ∑ k = 1 N a k y [ n − k ] y[n] = \sum_{k=0}^{M} b_k x[n-k] - \sum_{k=1}^{N} a_k y[n-k] y[n]=k=0Mbkx[nk]k=1Naky[nk]

其中:

  • y [ n ] y[n] y[n] 是输出信号在时间点 n n n的值。
  • x [ n ] x[n] x[n] 是输入信号在时间点 n n n的值。
  • b k b_k bk a k a_k ak 分别是滤波器的前向路径系数和反馈路径系数。
  • M M M N N N 分别是前向路径和反馈路径的最大延迟(阶数)。

该差分方程也可以通过Z变换表示为传递函数的形式:

H ( z ) = ∑ k = 0 M b k z − k 1 + ∑ k = 1 N a k z − k H(z) = \frac{\sum_{k=0}^{M} b_k z^{-k}}{1 + \sum_{k=1}^{N} a_k z^{-k}} H(z)=1+k=1Nakzkk=0Mbkzk

线性相位

在这里插入图片描述

线性相位的定义

一个系统或滤波器如果具有线性相位特性,则其相频响应 ϕ ( ω ) \phi(\omega) ϕ(ω)可以表示为:

ϕ ( ω ) = − τ ω + constant \phi(\omega) = -\tau \omega + \text{constant} ϕ(ω)=τω+constant

其中:

  • ω \omega ω是角频率。

  • τ \tau τ是常数,代表群延迟(Group Delay),即所有频率成分经历的相同时间延迟。

  • “constant” 是一个与频率无关的相移量,通常可以忽略不计,因为它不会影响群延迟。

线性相位的特性

  • 保持波形形状:线性相位确保不同频率成分以相同的速度传播,从而避免了相位失真。这对于脉冲信号、调制信号和语音信号尤为重要,因为这些信号的波形形状携带了重要信息。

  • 最小化相位失真:非线性相位会导致不同频率成分之间的相对时间延迟发生变化,进而引起相位失真。线性相位滤波器可以有效避免这种情况。

冲击响应

在这里插入图片描述

quartus数据加载

  • FIR(有限脉冲响应)滤波器:只包含前向路径,没有反馈路径,因此它的差分方程只包含输入项,即 y [ n ] = ∑ k = 0 M b k x [ n − k ] y[n] = \sum_{k=0}^{M} b_k x[n-k] y[n]=k=0Mbkx[nk],滤波器系数只有 b k b_k bk
  • 保存的csv文件是竖向排列的,为方便quartus加载转为一行:-0.008714744830464442,-0.054112502607988215,-0.03324360937210303,0.02861503411936945,0.14232499893478073,0.2530416744141692,0.29926671053557363,0.2530416744141692,0.14232499893478073,0.02861503411936945,-0.03324360937210303,-0.054112502607988215,-0.00871474483
  • 加载之后quartus会自动量化转换
    在这里插入图片描述

CG

  • 相关工具:MATLAB的滤波器设计工具箱filterDesigner(fdatool),支持导出C头文件、XILINX参数文件(COE)等功能

http://www.kler.cn/a/508268.html

相关文章:

  • 黑马Java面试教程_P1_导学与准备篇
  • LoadBalancer负载均衡服务调用
  • 栈和队列(数据结构初阶)
  • U盘被格式化后的数据救赎与防范策略
  • IEEE RAL 中科院发表混合式巡检机器人高效轨迹规划方法
  • 聚铭网络6款产品入选CCIA《网络安全专用产品指南》
  • python 利用 ddddocr包 ocr识别图片码
  • RabbitMQ实现延迟消息发送——实战篇
  • IDEA 中配置启动Tomcat
  • 码云gitee 新建仓库 添加公钥
  • 2019-腾讯Android面试精选题——谈一谈Binder的原理和实现一次拷贝的流程
  • 【MySQL】复合查询+表的内外连接
  • YOLO系列代码
  • 英文单词remix的意思:二创,改编,混剪
  • 3DDFA-V2 :Towards fast, accurate and stable 3d dense face alignment
  • vue2配置跨域后请求的是本机
  • 【python因果库实战20】causallib 评估图表概述3
  • Ant Design Vue --- select组件静态实现模糊搜索
  • 运维作业二
  • 【王树森推荐系统】概要03:推荐系统的AB测试