Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

fdesign.lowpass

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

構文

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: {1x6 cell}
              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);

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

fvtool(lpFilter)

ハイパス フィルター

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

designSpecs = fdesign.highpass('N,F3dB',7,.6); 

使用可能な設計法を調べます。バタワース フィルターを設計するため、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: {1x6 cell}
              SOSScaleNorm: 'ustring'
              SOSScaleOpts: 'fdopts.sosscaling'
    DefaultFilterStructure: 'df2sos'
       DefaultSOSScaleNorm: ''
       DefaultSOSScaleOpts: [1x1 fdopts.sosscaling]

バタワース フィルターを設計するため、関数 design を使用し、入力として 'butter' を指定します。'FilterStructure''cascadeallpass' に設定します。

hpFilter = design(designSpecs,'butter','FilterStructure','cascadeallpass','SystemObject',true);

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

fvtool(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 等リップル フィルターを作成し、fvtool を使用して振幅応答を表示します。

Hd = design(d,'equiripple');
fvtool(Hd)

それぞれの周波数が π/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);

元の信号とフィルター処理した信号のフーリエ変換を計算します。高周波数成分がフィルターで除外されていることを確認します。

freq = 0:(2*pi)/160:pi;
xdft = fft(x);
ydft = fft(y);

figure
plot(freq/pi,abs(xdft(1:length(x)/2+1)))
hold on
plot(freq/pi,abs(ydft(1:length(y)/2+1)))
hold off

legend('Original Signal','Filtered Signal')
ylabel('Magnitude')
xlabel('Normalized Frequency (\times\pi rad/sample)')

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)

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

R2009a で導入