メインコンテンツ

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

fdesign.highpass

R2026a

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

構文

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

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

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

ハイパス フィルター仕様オブジェクトに適用されるフィルター設計法は、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: {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.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 等リップル フィルターを作成し、フィルターの振幅応答を表示します。

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

周波数が π/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 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);
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.

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

異なる線形阻止帯域傾きをもつ 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,SystemObject=true);
Hd2 = design(D,'equiripple',StopBandShape='linear',...
    StopBandDecay=40,SystemObject=true);

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

hvft = filterAnalyzer(Hd1,Hd2);
setLegendStrings(hvft,["20 dB/(rad/sample)","40 dB/(rad/sample)"])

バージョン履歴

R2009a で導入