# butter
巴特沃斯 IIR 数字滤波器设计
函数库: TyDSPSystem
# 语法
butterFilter = butter(designSpecs, "SystemObject", true)
butterFilter = butter(designSpecs, designoption, value, ..., "SystemObject", true)
butterFilter = design(designSpecs, "butter", "SystemObject", true)
# 说明
butterFilter = butter(designSpecs, "SystemObject", true) 使用对象 designSpecs 中的规格设计一个巴特沃斯 IIR 数字滤波器。
根据滤波器规格对象 designSpecs 的不同,butter 设计方法可能是无效的。使用 designmethods 和滤波器规格对象来确定是否可以设计一个 butterworth IIR 数字滤波器。
butterFilter = butter(designSpecs,designoption, value, ..., "SystemObject", true) 返回一个具有一个或多个指定设计选项的巴特沃斯 IIR 滤波器和相应的值。
要查看可用的设计选项的列表,请在规格对象上运行 designoptions 函数。该函数还列出了滤波器使用的默认设计选项。
butterFilter = design(designSpecs, "butter", "SystemObject", true) 是一种设计巴特沃斯 IIR 数字滤波器的可选择语法。
# 示例
设计巴特沃斯滤波器
设计一个具有低通和高通频率响应的巴特沃斯滤波器。滤波器的设计步骤为:
使用 fdesign 函数指定滤波器的设计规格。
选择一个由 designmethods 函数提供的设计方法。
要确定可供选择的设计方案,请使用 designoptions 函数。
使用 design 函数设计滤波器。
低通滤波器
使用 fdesign_lowpass 构建一个默认的低通滤波器设计规格对象。
using TyDSPSystem
designSpecs = fdesign_lowpass()
lowpass - Property:
Response: Lowpass
Specification: "Fp,Fst,Ap,Ast"
Description: 4×1 Tuple
NormalizedFrequency: true
Fpass: 0.45
Fstop: 0.55
Apass: 1.0
Astop: 60.0
使用 designmethods 函数确定可用的设计方法。要设计一个巴特沃斯滤波器,选择 butter。
designmethods(designSpecs, "SystemObject", true)
8-element Vector{String}:
"butter"
"cheby1"
"cheby2"
"ellip"
"equiripple"
"ifir"
"kaiserwin"
"multistage"
在设计滤波器时,你可以指定额外的设计选项。使用 designoptions 函数查看这些选项的列表。这个函数也显示滤波器使用的默认设计选项。
designoptions(designSpecs, "butter", "SystemObject", true)
Dict{Any, Any} with 8 entries:
"DefaultSOSScaleNorm" => ""
"DefaultSOSScaleOpts" => fdopts_sosscaling("auto", 2, "none", "wrap", "unit", "Not used", nothing, nothing)
"SOSScaleNorm" => "String"
"SOSScaleOpts" => "fdopts_sosscaling"
"DefaultMatchExactly" => "stopband"
"FilterStructure" => ["df1sos", "df2sos", "df1tsos", "df2tsos", "cascadeallpass", "cascadewdfallpass"]
"MatchExactly" => ["passband", "stopband"]
"DefaultFilterStructure" => "df2sos"
使用 design 函数来设计滤波器。传递 "butter" 和变量 designSpecs 给出的规格,作为输入参数。指定 "matchexactly" 设计选项为 "passband"。
lpFilter = design(designSpecs, "butter", "MatchExactly", "passband", "SystemObject", true)
观察所设计的滤波器的频率响应。
fvtool(lpFilter.SOSMatrix)

# 输入参数
designSpecs - 滤波器规格对象对象
滤波器规格对象,目前仅支持 fdesign_lowpass( )。
# 输出参数
butterFilter - 巴特沃斯 IIR 滤波器系统对象
巴特沃斯 IIR 滤波器,作为一个滤波器系统对象返回。系统对象和它的属性值取决于输入的 designSpecs 对象和指定给函数的其他设计选项。
# 另请参阅
design | designmethods | designoptions | fdesign_response struct