主要内容

dsp.HighpassFilter

FIR または IIR ハイパス フィルター

説明

dsp.HighpassFilterSystem object™ は、指定された設計仕様を使用して、経時的に入力の各チャネルを個別にフィルター処理します。dsp.HighpassFilterFilterTypeプロパティを'FIR'または'IIR'に設定することで、このオブジェクトを FIR または IIR ハイパス フィルターとして実装できます。

入力の各チャネルをフィルター処理するには、次を行います。

  1. dsp.HighpassFilterオブジェクトを作成し、そのプロパティを設定します。

  2. 関数と同様に、引数を指定してオブジェクトを呼び出します。

System object の機能の詳細については、System object とはを参照してください。

作成

説明

既定のフィルター設定を使用する場合、HPF= dsp.HighpassFilterは、最小次数の FIR ハイパス フィルターHPFを返します。既定のプロパティ設定を使用してこのオブジェクトを呼び出すと、阻止帯域周波数8kHz、通過周波数帯域12kHz、阻止帯域の減衰量80dB、通過帯域リップル0.1dB を基準に入力データがフィルター処理されます。

HPF= dsp.HighpassFilter(Name,Value)は、1 つ以上のName,Valueペアの引数で指定された追加のプロパティを持つハイパス フィルターを返します。Nameはプロパティ名で、Valueは対応する値です。Nameは一重引用符 (' ') で囲む必要があります。Name1,Value1,...,NameN,ValueNのように、複数の名前と値のペアの引数を任意の順番で指定できます。

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能"です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数releaseを使用します。

プロパティが "調整可能"の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。

入力のサンプル レート (Hz 単位)。'SampleRate'と正の実数のスカラーからなるコンマ区切りのペアとして指定します。

データ型:single|double

フィルターの種類。次のいずれかとして指定します。

  • 'FIR'— このオブジェクトは FIR ハイパス フィルターを設計します。

  • 'IIR'— このオブジェクトは IIR ハイパス (双二次) フィルターを設計します。

最小次数フィルター設計。'DesignForMinimumOrder'と論理値からなるコンマ区切りのペアとして指定します。このプロパティをtrueに設定すると、dsp.HighpassFilterは、通過帯域周波数、阻止帯域周波数、通過帯域リップル、阻止帯域の減衰量の仕様を満たす最小次数でフィルターを設計します。これらの仕様は、対応するプロパティを使用して設定します。このプロパティをfalseに設定すると、このオブジェクトはFilterOrderプロパティで指定されている次数でフィルターを設計します。このフィルター設計は、通過帯域周波数、通過帯域リップル、阻止帯域の減衰量の各プロパティを使用して設定した仕様を満たします。

FIR または IIR フィルターの次数。'FilterOrder'と正の整数スカラーからなるコンマ区切りペアとして指定します。

依存関係

フィルター次数の指定が有効になるのは、'DesignForMinimumOrder'の値がfalseに設定されている場合のみです。

データ型:single|double|int8|int16|int32|int64|uint8|uint16|uint32|uint64

フィルター阻止帯域エッジ周波数 (Hz 単位)。'StopbandFrequency'と実数の正のスカラーからなるコンマ区切りのペアとして指定します。阻止帯域エッジ周波数の値 (Hz 単位) は、通過帯域周波数より小さくなければなりません。

依存関係

阻止帯域エッジ周波数を指定できるのは、'DesignForMinimumOrder'の値がtrueに設定されている場合のみです。

データ型:single|double|int8|int16|int32|int64|uint8|uint16|uint32|uint64

フィルター通過帯域エッジ周波数 (Hz 単位)。'PassbandFrequency'と実数の正のスカラーからなるコンマ区切りのペアとして指定します。通過帯域エッジ周波数の値 (Hz 単位) は、SampleRateの半分より小さく、StopbandFrequencyより大きくなければなりません。

データ型:single|double|int8|int16|int32|int64|uint8|uint16|uint32|uint64

阻止帯域での最小減衰量 (dB 単位)。'StopbandAttenuation'と実数の正のスカラーからなるコンマ区切りペアとして指定します。既定では、阻止帯域での最小減衰量は80dB に設定されます。

データ型:single|double|int8|int16|int32|int64|uint8|uint16|uint32|uint64

通過帯域でのフィルター応答の最大リップル (dB 単位)。'PassbandRipple'と実数の正のスカラーからなるコンマ区切りペアとして指定します。既定では、フィルター応答の最大リップルは0.1dB に設定されます。

データ型:single|double|int8|int16|int32|int64|uint8|uint16|uint32|uint64

固定小数点プロパティ

固定小数点演算出力の丸め手法。文字ベクトルとして指定します。丸め手法の詳細については、精度と範囲を参照してください。

係数の語長と小数部の長さ。numerictypeオブジェクトとして指定します。可能な限り最高の精度になるよう、numerictype(1,16)は既定で、16 ビットの係数および係数の値に基づいて決定された小数部の長さをもつ符号付き数値型オブジェクトに対応します。

このプロパティを調整することはできません。

出力の語長は入力の語長と同じです。出力の小数部の長さは、出力のダイナミック レンジ全体をオーバーフローせずに表現できるように計算されます。出力の小数部の長さを計算する方法の詳細については、Fixed-Point Precision Rules for Avoiding Overflow in FIR Filtersを参照してください。

使用法

構文

説明

y= HPF(x)ハイパス フィルターは入力信号xをフィルター処理します。yは、xにハイパス フィルターを適用したバージョンです。

入力引数

すべて展開する

ノイズを含むデータ入力。ベクトルまたは行列として指定します。入力信号が行列の場合、行列の各列は独立したチャネルとして扱われます。入力信号の行数はチャネル長を表します。このオブジェクトは可変サイズの入力を受け入れます。オブジェクトがロックされると、各入力チャネルのサイズは変更できますが、チャネルの数は変更できません。

データ型:single|double|int8|int16|int32|int64|uint8|uint16|uint32|uint64|fi
複素数のサポート:あり

出力引数

すべて展開する

フィルター処理された出力。ベクトルまたは行列として返されます。出力は入力と同じサイズ、データ型および実数/複素数の特性をもちます。

データ型:single|double|int8|int16|int32|int64|uint8|uint16|uint32|uint64|fi
複素数のサポート:あり

オブジェクト関数

オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、objという名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

freqz 離散時間フィルターSystem objectの周波数応答
fvtool DSP フィルターの周波数応答の可視化
impz 離散時間フィルターSystem objectのインパルス応答
info Information about filterSystem object
coeffs フィルターSystem object係数を構造に返します。
cost Estimate cost of implementing filterSystem object
grpdelay 離散時間フィルターSystem objectの群遅延応答
generatehdl Generate HDL code for quantized DSP filter (requiresFilter Design HDL Coder)
measure Measure frequency response characteristics of filterSystem object
step System objectのアルゴリズムの実行
release リソースを解放し、System objectのプロパティ値と入力特性の変更を可能にします。
reset System objectの内部状態のリセット

すべて折りたたむ

44.1 kHzでサンプリングされるデータに対する、最小次数の FIR ハイパス フィルターを作成します。12 kHz の通過帯域周波数、8 kHz の阻止帯域周波数、0.1 dB の通過帯域リップル、80 dB の阻止帯域の減衰量を指定します。

Fs = 44.1e3; filtertype ='FIR'; Fpass = 12e3; Fstop = 8e3; Rp = 0.1; Astop = 80; FIRHPF = dsp.HighpassFilter('SampleRate',Fs,...'FilterType',filtertype,...'PassbandFrequency',Fpass,...'StopbandFrequency',Fstop,...'PassbandRipple',Rp,...'StopbandAttenuation',Astop);

冷杉ハイパスフィルターと同じプロパティを設定した、最小次数の IIR ハイパス フィルター設計します。cloneを使用して、FIR ハイパス フィルターと同じプロパティをもつ System object を作成します。複製したフィルターのFilterTypeプロパティをIIRに変更します。

IIRHPF = clone(FIRHPF); IIRHPF.FilterType ='IIR';

冷杉ハイパスフィルターのインパルス応答をプロットします。ゼロ次係数は、19 サンプル分遅延されます。これは、フィルターの群遅延と等価です。FIR ハイパス フィルターは因果性 FIR フィルターです。

fvtool(FIRHPF,'Analysis','impulse')

Figure Impulse Response contains an axes object. The axes object with title Impulse Response contains an object of type stem.

IIR ハイパス フィルターのインパルス応答をプロットします。

fvtool(IIRHPF,'Analysis','impulse')

Figure Impulse Response contains an axes object. The axes object with title Impulse Response contains an object of type stem.

冷杉ハイパスフィルターの振幅および位相応答をプロットします。

fvtool(FIRHPF,'Analysis','freq')

Figure Magnitude Response (dB) and Phase Response contains an axes object. The axes object with title Magnitude Response (dB) and Phase Response contains an object of type line.

IIR ハイパス フィルターの振幅および位相応答をプロットします。

fvtool(IIRHPF,'Analysis','freq')

Figure Magnitude Response (dB) and Phase Response contains an axes object. The axes object with title Magnitude Response (dB) and Phase Response contains an object of type line.

冷杉ハイパスフィルターの実装コストを計算します。

cost(FIRHPF)
ans =struct with fields:NumCoefficients: 39 NumStates: 38 MultiplicationsPerInputSample: 39 AdditionsPerInputSample: 38

IIR ハイパス フィルターの実装コストを計算します。IIR フィルターのほうが FIR の場合よりも効率的な実装になります。

cost(IIRHPF)
ans =struct with fields:NumCoefficients: 18 NumStates: 14 MultiplicationsPerInputSample: 18 AdditionsPerInputSample: 14

冷杉ハイパスフィルターの群遅延を計算します。

grpdelay(FIRHPF)

Figure Group delay contains an axes object. The axes object with title Group delay contains an object of type line.

IIR ハイパス フィルターの群遅延を計算します。FIR フィルターの群遅延は一定 (線形位相) である一方、IIR の群遅延は一定ではありません。

grpdelay(IIRHPF)

Figure Group delay contains an axes object. The axes object with title Group delay contains an object of type line.

メモ: R2016a 以前のリリースを使用している場合、それぞれのオブジェクトの呼び出しを等価な step 構文で置き換えてください。たとえば、obj(x)step(obj,x)になります。

IIR ハイパス フィルターを設定します。ホワイト ガウス ノイズのサンプリング レートは 44,100 Hz です。フィルターの通過帯域周波数は 12 kHz、阻止帯域周波数は 8 kHz、通過帯域リップルは 0.1 dB、阻止帯域の減衰量は 80 dB です。

Fs = 44.1e3; filtertype ='IIR'; Fpass = 12e3; Fstop = 8e3; Rp = 0.1; Astop = 80; hpf = dsp.HighpassFilter('SampleRate',Fs,...'FilterType',filtertype,...'PassbandFrequency',Fpass,...'StopbandFrequency',Fstop,...'PassbandRipple',Rp,...'StopbandAttenuation',Astop);

ハイパス フィルターの振幅応答を表示します。

fvtool(hpf)

Figure Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB) contains 2 objects of type line.

スペクトル アナライザー オブジェクトを作成します。

sa = spectrumAnalyzer('SampleRate',44.1e3,...'PlotAsTwoSidedSpectrum',false,'ShowLegend',true,'YLimits',...[-150 30],...'Title',...'Input Signal and Output Signal of IIR Highpass Filter'); sa.ChannelNames = {'Input','Output'};

ホワイト ガウス ノイズ入力信号をフィルター処理します。スペクトル アナライザーを使用して、入力信号と出力信号を確認します。

fork = 1:100 Input = randn(1024,1); Output = hpf(Input); sa([Input,Output]);end

ハイパス フィルターの周波数応答特性を測定します。既定のプロパティを使用してdsp.HighpassFilterSystem object を作成します。フィルターの周波数応答特性を測定します。

HPF = dsp.HighpassFilter
HPF = dsp.HighpassFilter with properties: FilterType: 'FIR' DesignForMinimumOrder: true StopbandFrequency: 8000 PassbandFrequency: 12000 StopbandAttenuation: 80 PassbandRipple: 0.1000 SampleRate: 44100 Show all properties
HPFMeas = measure(HPF)
HPFMeas = Sample Rate : 44.1 kHz Stopband Edge : 8 kHz 6-dB Point : 10.418 kHz 3-dB Point : 10.8594 kHz Passband Edge : 12 kHz Stopband Atten. : 81.8558 dB Passband Ripple : 0.08066 dB Transition Width : 4 kHz

アルゴリズム

すべて展開する

参照

[1] Shpak, D.J., and A. Antoniou. "A generalized Remez method for the design of FIR digital filters." IEEE®Transactions on Circuits and Systems. Vol. 37, Issue 2, Feb. 1990, pp. 161–174.

[2] Selesnick, I.W., and C. S. Burrus. "Exchange algorithms that complement the Parks-McClellan algorithm for linear-phase FIR filter design." IEEE Transactions on Circuits and Systems. Vol. 44, Issue 2, Feb. 1997, pp. 137–143.

拡張機能

バージョン履歴

R2015a で導入