2026a

# 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 数字滤波器的可选择语法。

# 示例

设计巴特沃斯滤波器

设计一个具有低通和高通频率响应的巴特沃斯滤波器。滤波器的设计步骤为:

  1. 使用 fdesign 函数指定滤波器的设计规格。

  2. 选择一个由 designmethods 函数提供的设计方法。

  3. 要确定可供选择的设计方案,请使用 designoptions 函数。

  4. 使用 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