Main Content

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

fdesign.lowpass

ローパス フィルターの仕様オブジェクト

メモ

関数 fdesign.lowpass および design を使用した多段フィルター設計では、結果として得られる設計がカスケードではなく単一ステージ フィルターである場合を除き、SystemObject フラグを true に設定しなければならなくなりました。この設定では、mfilt.cascade オブジェクトの代わりに dsp.FilterCascade オブジェクトが生成されます。

詳細については、互換性の考慮事項を参照してください。

構文

D = fdesign.lowpass
D = fdesign.lowpass(SPEC)
D = fdesign.lowpass(SPEC,specvalue1,specvalue2,...)
D = fdesign.lowpass(specvalue1,specvalue2,specvalue3,specvalue4)
D = fdesign.lowpass(...,Fs)
D = fdesign.lowpass(...,MAGUNITS)

説明

D = fdesign.lowpass は、ローパス フィルターの仕様オブジェクト D を作成し、既定の仕様オプション 'Fp,Fst,Ap,Ast' に既定値を適用します。

D = fdesign.lowpass(SPEC) は、D オブジェクトを作成し、その Specification プロパティを SPEC のエントリに設定します。SPEC のエントリは、フィルター次数などの、フィルター設計を左右するさまざまなフィルター応答の機能を表します。SPEC の有効な値を以下に示します。オプションでは、大文字と小文字は区別されません。

メモ

アスタリスク付きの仕様オプションには、DSP System Toolbox™ ソフトウェアが必要です。

  • 'Fp,Fst,Ap,Ast' (既定のオプション)

  • 'N,F3db'

  • 'N,F3db,Ap' *

  • 'N,F3db,Ap,Ast' *

  • 'N,F3db,Ast' *

  • 'N,F3db,Fst' *

  • 'N,Fc'

  • 'N,Fc,Ap,Ast'

  • 'N,Fp,Ap'

  • 'N,Fp,Ap,Ast'

  • 'N,Fp,Fst,Ap' *

  • 'N,Fp,F3db' *

  • 'N,Fp,Fst'

  • 'N,Fp,Fst,Ast' *

  • 'N,Fst,Ap,Ast' *

  • 'N,Fst,Ast'

  • 'Nb,Na,Fp,Fst' *

フィルター仕様は次のように定義されます。

  • Ap — 通過帯域内で許容されるデシベル単位 (既定の単位) のリップル量。Apass とも呼ばれます。

  • Ast — 阻止帯域でのデシベル単位 (既定の単位) の減衰量。Astop とも呼ばれます。

  • F3db — 通過帯域値より 3 dB 低い位置でのカットオフ周波数。正規化周波数単位で指定されます。

  • Fc — 通過帯域値より 6 dB 低い位置でのカットオフ周波数。正規化周波数単位で指定されます。

  • Fp — 通過帯域の終了位置での周波数。正規化周波数単位で指定されます。Fpass とも呼ばれます。

  • Fst — 阻止帯域の開始位置での周波数。正規化周波数単位で指定されます。Fstop とも呼ばれます。

  • N — フィルター次数

  • Na および Nb は分子と分母の次数です。

フィルターの仕様を図で表すと、次のようになります。

FpFst 間などの仕様値が指定されていない領域は、フィルター応答が明示的に定義されていない遷移領域です。

D = fdesign.lowpass(SPEC,specvalue1,specvalue2,...) は、D オブジェクトを作成し、作成時に SPEC のすべての仕様変数に specvalue1specvalue2 などを使用して仕様値を設定します。

D = fdesign.lowpass(specvalue1,specvalue2,specvalue3,specvalue4) は、オブジェクト D を作成し、これは指定された仕様を入力引数 specvalue1,specvalue2,specvalue3,specvalue4 として使用する既定の Specification プロパティ 'Fp,Fst,Ap,Ast' をもちます。

D = fdesign.lowpass(...,Fs) は、引数 Fs を Hz で追加し、使用するサンプリング周波数を定義します。この場合は、仕様内のすべての周波数も Hz です。

D = fdesign.lowpass(...,MAGUNITS) は、入力引数で指定する振幅仕様の単位を指定します。MAGUNITS は、以下のいずれかです。

  • 'linear' — 振幅を線形単位で指定

  • 'dB' — 振幅を dB (デシベル) 単位で指定

  • 'squared' — 振幅をパワー単位で指定

MAGNUNITS 引数の指定を省略すると、fdesign はすべての振幅をデシベル単位として扱います。fdesign は振幅をどのように指定したかにかかわらず、すべての振幅を (必要に応じて変換して) デシベル単位で格納します。

すべて折りたたむ

ローパスおよびハイパス周波数応答をもつバタワース フィルターを設計します。フィルターの設計手順は、次のようになります。

  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.

ローパス フィルターを使用して、2 つの正弦波から構成される離散時間信号をフィルター処理します。

ローパス フィルター仕様オブジェクトを作成します。通過帯域周波数が 0.15π ラジアン/サンプル、阻止帯域周波数が 0.25π ラジアン/サンプルになるように指定します。許容通過帯域リップルを 1 dB に、阻止帯域の減衰量を 60 dB に指定します。

d = fdesign.lowpass("Fp,Fst,Ap,Ast",0.15,0.25,1,60);

フィルター仕様オブジェクト d に有効な設計法を照会します。

designmethods(d)
Design Methods for class fdesign.lowpass (Fp,Fst,Ap,Ast):


butter
cheby1
cheby2
ellip
equiripple
ifir
kaiserwin
multistage

FIR 等リップル フィルターを作成し、フィルターの周波数応答を表示します。

Hd = design(d,"equiripple");
freqz(Hd.Numerator,1)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Magnitude (dB) contains an object of type line.

それぞれの周波数が π/8 および π/4 ラジアン/サンプル、振幅が 1 および 0.25 である 2 つの離散時間正弦波の和から構成される信号を作成します。FIR 等リップル フィルター オブジェクト Hd で離散時間信号をフィルター処理します。

n = 0:159;
x = (0.25*cos((pi/8)*n)+sin((pi/4)*n));
y = filter(Hd,x);

ハミング ウィンドウを使用して、元の信号とフィルター処理した信号の修正ピリオドグラムを計算します。高周波数成分がフィルターで除外されていることを確認します。

periodogram([x;y]',hamming(length(x)),1024)
legend("Original Signal","Filtered Signal")

Figure contains an axes object. The axes object with title Periodogram Power Spectral Density Estimate, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Power/frequency (dB/(rad/sample)) contains 2 objects of type line. These objects represent Original Signal, Filtered Signal.

9.6 kHz の 6 dB 周波数でサンプリング周波数を 48 kHz として、10 次のフィルターを作成します。使用できる設計法を確認します。

d = fdesign.lowpass('N,Fc',10,9600,48000);
designmethods(d)
Design Methods for class fdesign.lowpass (N,Fc):


window

有効な設計法は FIR ウィンドウ法のみです。フィルターを設計します。

Hd = design(d);

フィルターの振幅応答を表示します。予想どおり -6 dB の点が 9.6 kHz です。

fvtool(Hd)

Figure Figure 1: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB), xlabel Frequency (kHz), ylabel Magnitude (dB) contains 2 objects of type line.

通過帯域周波数が 0.2π ラジアン/サンプル、阻止帯域周波数が 0.25π ラジアン/サンプル、通過帯域リップルが 1 dB、阻止帯域の減衰量が 60 dB である FIR 等リップル フィルターを作成します。20 dB ラジアン/サンプルの線形阻止帯域をもつフィルターを設計します。

D = fdesign.lowpass('Fp,Fst,Ap,Ast',0.2,0.25,1,60);
Hd = design(D,'equiripple','StopbandShape','linear','StopbandDecay',20);

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

fvtool(Hd)

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.

バージョン履歴

R2009a で導入

すべて展開する