メインコンテンツ

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

fdesign.lowpass

R2026a

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

メモ

関数 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 は分子と分母の次数です。

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

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

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

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: {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)

ローパス フィルターを使用して、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 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 です。

freqz(Hd)

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.

通過帯域周波数が 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);

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

freqz(Hd)

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.

バージョン履歴

R2009a で導入

すべて展開する