主要内容

butter

巴特沃斯 IIR 数字滤波器设计

说明

butterFilter = butter(designSpecs,SystemObject=true) 使用对象 designSpecs 中的设定设计巴特沃斯 IIR 数字滤波器。

根据滤波器设定对象 designSpecsbutter 设计方法可能无效。将 designmethods 与滤波器设定对象结合使用来判断巴特沃斯 IIR 数字滤波器设计是否可行。

designmethods(designSpecs,SystemObject=true)

butterFilter = butter(designSpecs,designoption=value,... SystemObject=true) 返回具有一个或多个指定的设计选项及对应值的巴特沃斯 IIR 滤波器。

要查看可用设计选项的列表,请对设定对象运行 designoptions 函数。该函数还会列出滤波器使用的默认设计选项。

designoptions(designSpecs,'butter')

butterFilter = design(designSpecs,'butter',SystemObject=true) 是设计巴特沃斯 IIR 数字滤波器的备选语法。

有关对设定对象 designSpecs 使用 butter 设计方法的完整帮助,请在 MATLAB® 命令提示符下输入以下命令。

help(designSpecs,'butter')

示例

示例

全部折叠

设计一个具有低通和高通频率响应的巴特沃斯滤波器。滤波器设计过程如下:

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

  2. 选取 designmethods 函数提供的一种设计方法。

  3. 要确定可选的设计选项,请使用 designoptions 函数。

  4. 使用 design 函数设计滤波器。

低通滤波器

使用 fdesign.lowpass 构造一个默认低通滤波器设计设定对象。

designSpecs = fdesign.lowpass
designSpecs = 
  lowpass with properties:

               Response: 'Lowpass'
          Specification: 'Fp,Fst,Ap,Ast'
            Description: {4×1 cell}
    NormalizedFrequency: 1
                  Fpass: 0.4500
                  Fstop: 0.5500
                  Apass: 1
                  Astop: 60

使用 designmethods 函数确定可用的设计方法。要设计巴特沃斯滤波器,请选取 butter

designmethods(designSpecs,SystemObject=true)
Design Methods that support System objects for class fdesign.lowpass (Fp,Fst,Ap,Ast):


butter
cheby1
cheby2
ellip
equiripple
ifir
kaiserwin
multistage

在设计滤波器时,您可以指定其他设计选项。使用 designoptions 函数查看选项列表。此函数还会显示滤波器使用的默认设计选项。

designoptions(designSpecs,'butter',SystemObject=true)
ans = struct with fields:
           FilterStructure: {'df1sos'  'df2sos'  'df1tsos'  'df2tsos'  'cascadeallpass'  'cascadewdfallpass'}
              SOSScaleNorm: 'ustring'
              SOSScaleOpts: 'fdopts.sosscaling'
              MatchExactly: {'passband'  'stopband'}
    DefaultFilterStructure: 'df2sos'
       DefaultMatchExactly: 'stopband'
       DefaultSOSScaleNorm: ''
       DefaultSOSScaleOpts: [1×1 fdopts.sosscaling]

使用 design 函数设计滤波器。将 'butter' 和变量 designSpecs 给定的设定作为输入参量传递。将 'matchexactly' 设计选项指定为 'passband'

lpFilter = design(designSpecs,'butter',matchexactly='passband',SystemObject=true)
lpFilter = 
  dsp.SOSFilter with properties:

            Structure: 'Direct form II'
    CoefficientSource: 'Property'
            Numerator: [13×3 double]
          Denominator: [13×3 double]
       HasScaleValues: true
          ScaleValues: [0.4095 0.3669 0.3330 0.3059 0.2841 0.2666 0.2525 0.2414 0.2328 0.2263 0.2219 0.2193 0.4674 1]

  Show all properties

可视化所设计滤波器的频率响应。

filterAnalyzer(lpFilter)

高通滤波器

使用 fdesign.highpass 构造一个高通滤波器设计设定对象。将阶数指定为 7,3 dB 频率为 0.6π 弧度/采样点。

designSpecs = fdesign.highpass('N,F3dB',7,.6)
designSpecs = 
  highpass with properties:

          Specification: 'N,F3dB'
               Response: 'Highpass'
            Description: {2×1 cell}
    NormalizedFrequency: 1
            FilterOrder: 7
                   F3dB: 0.6000

确定可用的设计方法。要设计巴特沃斯滤波器,请选取 butter

designmethods(designSpecs,SystemObject=true)
Design Methods that support System objects for class fdesign.highpass (N,F3dB):


butter
maxflat

在设计滤波器时,您可以指定其他设计选项。使用 designoptions 函数查看选项列表。此函数还会显示滤波器使用的默认设计选项。

designoptions(designSpecs,'butter',SystemObject=true)
ans = struct with fields:
           FilterStructure: {'df1sos'  'df2sos'  'df1tsos'  'df2tsos'  'cascadeallpass'  'cascadewdfallpass'}
              SOSScaleNorm: 'ustring'
              SOSScaleOpts: 'fdopts.sosscaling'
    DefaultFilterStructure: 'df2sos'
       DefaultSOSScaleNorm: ''
       DefaultSOSScaleOpts: [1×1 fdopts.sosscaling]

要设计巴特沃斯滤波器,请使用 design 函数并将 'butter' 指定为输入。将 'FilterStructure' 设置为 'cascadeallpass'

hpFilter = design(designSpecs,'butter',FilterStructure='cascadeallpass',SystemObject=true)
hpFilter = 
  dsp.CoupledAllpassFilter with properties:

               Structure: 'Minimum multiplier'
         PureDelayBranch: 0
    AllpassCoefficients1: {2×1 cell}
    AllpassCoefficients2: {2×1 cell}
                   Gain1: '-1'
                   Gain2: '1'

可视化高通频率响应。

filterAnalyzer(hpFilter)

输出参量

全部折叠

巴特沃斯 IIR 滤波器,以滤波器 System object 形式返回。System object 及其属性值取决于输入 designSpecs 对象及为函数指定的其他设计选项。

版本历史记录

在 R2011a 中推出

全部展开