Main Content

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

fdesign.highpass

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

構文

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

説明

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

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

メモ

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

  • 'Fst,Fp,Ast,Ap' (既定の spec)

  • 'N,F3db'

  • 'N,F3db,Ap' *

  • 'N,F3db,Ast' *

  • 'N,F3db,Ast,Ap' *

  • 'N,F3db,Fp *

  • 'N,Fc'

  • 'N,Fc,Ast,Ap'

  • 'N,Fp,Ap'

  • 'N,Fp,Ast,Ap'

  • 'N,Fst,Ast'

  • 'N,Fst,Ast,Ap'

  • 'N,Fst,F3db' *

  • 'N,Fst,Fp'

  • 'N,Fst,Fp,Ap' *

  • 'N,Fst,Fp,Ast' *

  • 'Nb,Na,Fst,Fp' *

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

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

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

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

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

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

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

  • N — フィルター次数

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

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

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

ハイパス フィルター仕様オブジェクトに適用されるフィルター設計法は、Specification により異なります。オブジェクトと仕様に適用する設計法を決定するには、designmethods を使用します。

特定の設計法で有効な設計オプションの確認には、designopts を使用します。特定の設計法 METHOD に対する設計オプションの詳細を表示するには、MATLAB® コマンド ラインで「help(D,METHOD)」と入力します。

D = fdesign.highpass(SPEC,specvalue1,specvalue2,...) はオブジェクト d を作成し、同時にその仕様値を設定します。

D = fdesign.highpass(specvalue1,specvalue2,specvalue3,
specvalue4)
は、既定の Specification プロパティと specvalue1,specvalue2,... への入力値をもつ D オブジェクトを作成します。

D = fdesign.highpass(...,Fs) は、フィルター仕様オブジェクトのサンプリング周波数を示します。Fs は Hz 単位のスカラーで、他のすべての数値入力に続けて指定されなければなりません。サンプリング周波数を指定する場合、その他のすべての周波数仕様の単位は Hz です。

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

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

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

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

MAGUNITS 引数の指定を省略すると、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.25π ラジアン/サンプルに指定し、阻止帯域周波数を 0.15π ラジアン/サンプルに指定します。許容通過帯域リップルを 1 dB に、阻止帯域の減衰量を 60 dB に指定します。

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

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

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


butter
cheby1
cheby2
ellip
equiripple
ifir
kaiserwin

FIR 等リップル フィルターを作成し、FVTool を使用して振幅応答を表示します。

Hd = design(d,'equiripple');
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.

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

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

周波数領域で元の信号とフィルター処理信号をプロットします。

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

plot(freq/pi,abs(xdft(1:length(x)/2+1)))
hold on
plot(freq/pi,abs(ydft(1:length(y)/2+1)),'r','linewidth',2)
hold off
legend('Original Signal','Lowpass Signal','Location','NorthEast')
ylabel('Magnitude')
xlabel('Normalized Frequency (\times\pi rad/sample)')

Figure contains an axes object. The axes object with xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Magnitude contains 2 objects of type line. These objects represent Original Signal, Lowpass Signal.

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

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


window

使用できる設計法は FIR ウィンドウ法のみです。フィルターを設計し、その振幅応答を表示します。

Hd = design(d);

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.

阻止帯域の形状と減衰率を指定できます。

異なる線形阻止帯域勾配をもつ FIR 等リップル フィルターを 2 つ作成します。通過帯域周波数を 0.3π ラジアン/サンプルに指定し、阻止帯域周波数を 0.35π ラジアン/サンプルに指定します。許容通過帯域リップルを 1 dB に、阻止帯域の減衰量を 60 dB に指定します。20 dB (ラジアン/サンプル) の阻止帯域の勾配をもつフィルターと、40 dB (ラジアン/サンプル) の阻止帯域の勾配をもつフィルターを設計します。

D = fdesign.highpass('Fst,Fp,Ast,Ap',0.3,0.35,60,1);
Hd1 = design(D,'equiripple','StopBandShape','linear','StopBandDecay',20);
Hd2 = design(D,'equiripple','StopBandShape','linear','StopBandDecay',40);

フィルターの振幅応答を可視化します。

hfvt = fvtool([Hd1 Hd2]);
legend(hfvt,'20 dB/rad/sample','40 dB/rad/sample')

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 3 objects of type line. These objects represent 20 dB/rad/sample, 40 dB/rad/sample.

バージョン履歴

R2009a で導入