# 滤波器可视化工具
显示和分析滤波器响应以及系数
# 描述
滤波器可视化工具(以下简称为 FVTool)是一个能够显示和分析滤波器响应以及系数的交互式应用程序。
通过此应用程序,您可以查看:
幅值响应
相位响应
群延迟响应
相位延迟响应
冲激响应
阶跃响应
零极点图
滤波器系数
有关各滤波器响应类型的详细信息,请参见分析类型。
FVTool 的具体功能说明请参见滤波器可视化工具快速入门。
# 启动方式
FVTool 可以使用编程使用中描述的任意一种方法以指令方式启动。
提示
相比于单机版滤波器可视化工具,Online 版滤波器可视化工具暂不支持输入复数类型的滤波器系数。
# 语法
import TyFVTool; TyFVTool.fvtool(b, a)
import TyFVTool; TyFVTool.fvtool(b1, a1, b2, a2, ..., bN, aN)
import TyFVTool; TyFVTool.fvtool(sos)
import TyFVTool; TyFVTool.fvtool(sos1, sos2, ..., sosN)
import TyFVTool; TyFVTool.fvtool(Hd)
import TyFVTool; TyFVTool.fvtool(___; Name = Value)
# 编程使用
fvtool(b,a)
fvtool(b,a) 启动 FVTool 并显示分子 b 和分母 a 所定义的数字滤波器的幅值响应。指定的系数 b 和 a 以 z-1 的幂次升序排列。
fvtool(sos)
fvtool(sos) 启动 FVTool 并显示由 L 乘 6 的二阶节矩阵定义的数字滤波器的幅值响应。节数 L 必须大于或等于 2 。如果节数小于 2, FVTool 会将输入认定为一个分子向量。
fvtool(Hd)
fvtool(Hd) 启动 FVTool 并显示滤波器对象 Hd 所定义的数字滤波器的幅值响应。当前支持 TyDSPSystem.dsp_FIRFilter、TyDSPSystem.dsp_BiquadFilter、TyDSPSystem.dsp_IIRFilter、TyDSPSystem.dsp_SOSFilter、TyDSPSystem.dsp_CICCompensationDecimator、TyDSPSystem.dsp_CICCompensationInterpolator、TyDSPSystem.dsp_CICDecimator、TyDSPSystem.dsp_CICInterpolator 八种类型的滤波器对象,暂不支持传入多个模型绘制。
fvtool(b1, a1, b2, a2, ..., bN,aN)
fvtool(b1, a1, b2, a2, ..., bN, aN) 启动 FVTool 并显示分子为 b1, b2, ..., bN 分母为 a1, a2, ..., aN 的多个数字滤波器的幅值响应。
fvtool(sos1, sos2 , ..., sosN)
fvtool(sos1, sos2, ..., sosN) 启动 FVTool 并显示以二阶节矩阵 sos1,sos2, ..., sosN 所定义的多个数字滤波器的幅值响应。
fvtool(___; Name = Value)
fvtool(___; Name = Value) 指定一个或多个附加名称值参数,关键字参数 Analysis 可指定默认显示的滤波器响应,详细信息,请参见初始化绘图;关键字参数 Fs 可指定启动滤波器可视化工具时采用的默认采样率。
# 示例
椭圆滤波器的幅值响应
设计一个 6 阶椭圆滤波器,其通带波纹为 3 dB,阻带衰减为 50 dB,采样率为 1 kHz,归一化通带边缘为 300 Hz。显示该滤波器的幅值响应。
using TySignalProcessing
import TyFVTool
b, a = ellip(6, 3, 50, 300 / 500)
TyFVTool.fvtool(b, a)

低通切比雪夫 I 型滤波器
设计一个 6 阶低通 Chebyshev I 型滤波器,通带纹波为 10 dB,通带边缘为 300 Hz,并将其转化为二阶节形式。绘制该滤波器的幅值响应。
using TySignalProcessing
import TyFVTool
Fc = 300
Fs = 1000
b, a = cheby1(6, 10, Fc / (Fs / 2))
sos = tf2sos(b, a; g_flag = false)
TyFVTool.fvtool(sos)

高通最小阶 Butterworth 滤波器对象
using TyDSPSystem
import TyFVTool
Fs = 48000
Fstop = 9600
Fpass = 12000
Astop = 80
Apass = 1
match = "stopband"
h = fdesign_highpass(Fstop, Fpass, Astop, Apass, Fs)
Hd = design(h, "butter", "MatchExactly", match, "SystemObject", true)
TyFVTool.fvtool(Hd; Analysis = "freq")

# 通过 GUI 控制 FVTool
通过工具栏上的按钮显示和分析一个或多个数字滤波器的响应。
默认情况下,FVTool 显示一个数字滤波器的幅值响应。要更改显示,请从菜单栏或工具栏的分析部分的按钮中选择对应选项;
如需调整视图设置、分析参数或指定采样频率,请使用菜单栏或工具栏上相应按钮。此外您还可以切换图例和网格的显示状态。
# 分析类型
FVTool 有以下分析类型:
| 分析 | 描述 |
|---|---|
| 幅值响应 | 要查看零相位响应,在分析参数界面中,将幅度显示选择为零相位; 详细信息,请参见 freqz 和 zerophase。 |
| 相位响应 | 详细信息请参见 phasez。 |
| 幅值响应和相位响应 | 将幅值响应和相位响应相互叠加; 详细信息,请参见 freqz 和 phasez。 |
| 组延迟响应 | 群延迟响应反映滤波器的平均延迟; 详细信息请参见 grpdelay。 |
| 相位延迟响应 | 相位延迟响应反映滤波器加在输入信号各分量上的时间延迟; 详细信息,请参见 phasedelay。 |
| 冲激响应 | 冲激响应是滤波器对脉冲输入的响应; 详细信息,请参见 impz。 |
| 阶跃响应 | 阶跃响应是滤波器对阶跃输入的响应; 详细信息,请参见 stepz。 |
| 零极点图 | 零极点图显示了滤波器在 z 平面上极点和零点的位置; 详细信息,请参见 zplane。 |
| 滤波器系数 | 系数取决于滤波器结构; 该应用程序在文本框中显示滤波器系数。对于二阶节形式的滤波器将会对其每一节做单独显示。 |