Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

butter

バタワース IIR デジタル フィルターの設計

説明

butterFilter = butter(designSpecs,SystemObject=true) は、オブジェクト designSpecs 内の仕様を使用して、バタワース IIR デジタル フィルターを設計します。

フィルター仕様オブジェクト designSpecs に応じて、butter 設計法が無効になる場合があります。フィルター仕様オブジェクトと designmethods を使用して、バタワース IIR デジタル フィルターの設計が可能かどうかを判断します。

designmethods(designSpecs,SystemObject=true)

butterFilter = butter(designSpecs,designoption=value,... SystemObject=true) は、指定された 1 つ以上の設計オプションおよび対応する値を使用して、バタワース 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: {4x1 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: [1x1 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: [13x3 double]
          Denominator: [13x3 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]

  Use get to show all properties

設計したフィルターの周波数応答を可視化します。

fvtool(lpFilter)

Figure Figure 1: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB), xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Magnitude (dB) contains 2 objects of type line.

ハイパス フィルター

fdesign.highpass を使用して、ハイパス フィルター設計仕様オブジェクトを作成します。次数が 7、3 dB 周波数が 0.6π ラジアン/サンプルになるように指定します。

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

          Specification: 'N,F3dB'
               Response: 'Highpass'
            Description: {2x1 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: [1x1 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: {2x1 cell}
    AllpassCoefficients2: {2x1 cell}
                   Gain1: '-1'
                   Gain2: '1'

ハイパス周波数応答を可視化します。

fvtool(hpFilter)

Figure Figure 2: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB), xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Magnitude (dB) contains 2 objects of type line.

入力引数

すべて折りたたむ

出力引数

すべて折りたたむ

バタワース IIR フィルター。フィルター System object として返されます。この System object およびそのプロパティの値は、入力された designSpecs オブジェクトと、関数に対して指定された他の設計オプションによって変化します。

バージョン履歴

R2011a で導入

すべて展開する