このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
dsp.HighpassFilter
FIR または IIR ハイパス フィルター
説明
dsp.HighpassFilter
System object™ は、指定された設計仕様を使用して、経時的に入力の各チャネルを個別にフィルター処理します。dsp.HighpassFilter
の FilterType
プロパティを 'FIR'
または 'IIR'
に設定することで、このオブジェクトを FIR または IIR ハイパス フィルターとして実装できます。
FilterType
プロパティが 'FIR'
に設定されている場合、このオブジェクトは、dsp.FIRFilter
と関数 firceqrip
および関数 firgr
を使用するための代替として使用できます。dsp.HighpassFilter
オブジェクトは 2 つの手順からなるプロセスを 1 つに凝縮します。measure
を使用して、設計が指定の仕様を満たすことを確認できます。
入力の各チャネルをフィルター処理するには、次を行います。
dsp.HighpassFilter
オブジェクトを作成し、そのプロパティを設定します。関数と同様に、引数を指定してオブジェクトを呼び出します。
System object の機能の詳細については、System object とはを参照してください。
このオブジェクトは、特定の条件下で C/C++ コード生成と SIMD コード生成をサポートします。このオブジェクトは、ARM® Cortex®-M プロセッサおよび ARM Cortex-A プロセッサ用のコード生成もサポートします。詳細については、コード生成を参照してください。
作成
説明
は、既定のフィルター設定では、最小次数の FIR ハイパス フィルター HPF
= dsp.HighpassFilterHPF
を返します。このオブジェクトを既定のプロパティ設定で呼び出すと、阻止帯域周波数 8
kHz、通過周波数帯域 12
kHz、阻止帯域の減衰量 80
dB、通過帯域リップル 0.1
dB を基準に入力データがフィルター処理されます。
は、1 つ以上の HPF
= dsp.HighpassFilter(Name=Value
)Name-Value
ペアの引数で指定された追加のプロパティをもつハイパス フィルターを返します。Name
はプロパティ名で、Value
は対応する値です。たとえば、StopbandFrequency=8000
は、フィルターの阻止帯域の周波数仕様を 8000 Hz に設定します。
プロパティ
特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release
を使用します。
プロパティが "調整可能" の場合、その値をいつでも変更できます。
プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。
FilterType
— フィルター タイプ
'FIR'
(既定値) | 'IIR'
フィルター タイプ。次のオプションのいずれかとして指定します。
'FIR'
— このオブジェクトは FIR ハイパス フィルターを設計します。'IIR'
— このオブジェクトは IIR ハイパス (双二次) フィルターを設計します。
DesignForMinimumOrder
— 最小次数フィルターを設計するためのフラグ
true
(既定値) | false
最小次数フィルターを設計するためのフラグ。次として指定します。
true
–– オブジェクトは、フィルター設計仕様を満たす最小次数のフィルターを設計します。false
–– オブジェクトは、FilterOrder
プロパティで指定された次数でフィルターを設計します。
FilterOrder
— FIR または IIR フィルターの次数
50
(既定値) | 正の整数
FIR または IIR フィルターの次数。正の整数として指定します。
依存関係
このプロパティを有効にするには、DesignForMinimumOrder
を false
に設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
StopbandFrequency
— フィルター阻止帯域エッジ周波数
8000
(既定値) | 実数の正のスカラー
フィルター阻止帯域エッジ周波数。正の実数のスカラー (Hz 単位または正規化周波数単位 (R2023a 以降)) として指定します。
NormalizedFrequency
プロパティを次のように設定した場合:
false
–– 阻止帯域エッジ周波数の値は Hz 単位です。値は、通過帯域エッジ周波数未満かつSampleRate
プロパティ値の半分未満でなければなりません。true
–– 阻止帯域エッジ周波数の値は正規化周波数単位です。値は、通過帯域エッジ周波数未満かつ1.0
未満の正のスカラーでなければなりません。
(R2023a 以降)
依存関係
このプロパティを有効にするには、DesignForMinimumOrder
プロパティを true
に設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
PassbandFrequency
— フィルター通過帯域エッジ周波数
12000
(既定値) | 実数の正のスカラー
フィルター通過帯域エッジ周波数。正の実数のスカラー (Hz 単位または正規化周波数単位 (R2023a 以降)) として指定します。
NormalizedFrequency
プロパティを次のように設定した場合:
false
–– 通過帯域エッジ周波数の値は Hz 単位です。値は、SampleRate
プロパティ値の半分未満かつStopbandFrequency
プロパティ値より大きくなければなりません。true
–– 通過帯域エッジ周波数の値は正規化周波数単位です。値は、1.0
未満かつStopbandFrequency
プロパティ値より大きい正のスカラーでなければなりません。
(R2023a 以降)
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
StopbandAttenuation
— 阻止帯域での最小減衰量
80
(既定値) | 実数の正のスカラー
阻止帯域での最小減衰量。正の実数のスカラー (dB 単位) として指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
PassbandRipple
— 通過帯域でのフィルター応答の最大リップル
0.1
(既定値) | 実数の正のスカラー
通過帯域でのフィルター応答の最大リップル。正の実数のスカラー (dB 単位) として指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
NormalizedFrequency
— 正規化単位で周波数を設定するフラグ
false
(既定値) | true
R2023a 以降
正規化単位で周波数を設定するフラグ。次の値のいずれかとして指定します。
true
–– 通過帯域エッジと阻止帯域エッジの周波数は、正規化周波数単位であり、1.0
未満でなければなりません。false
–– 通過帯域エッジと阻止帯域エッジの周波数は Hz 単位です。SampleRate
プロパティで入力サンプル レートを指定できます。
データ型: logical
SampleRate
— 入力サンプル レート
44100
(既定値) | 正の実数のスカラー
入力サンプル レート (Hz 単位)。正の実数スカラーとして指定します。
依存関係
このプロパティを有効にするには、NormalizedFrequency
を false
に設定します。 (R2023a 以降)
データ型: single
| double
RoundingMethod
— 固定小数点演算出力の丸め手法
'Floor'
(既定値) | 'Ceiling'
| 'Convergent'
| 'Nearest'
| 'Round'
| 'Simplest'
| 'Zero'
固定小数点演算出力の丸め手法。文字ベクトルとして指定します。丸め手法の詳細については、精度と範囲を参照してください。
CoefficientsDataType
— 係数の語長と小数部の長さ
numerictype([],16)
(既定値) | numerictype
オブジェクト
係数の語長と小数部の長さ。numerictype
オブジェクトとして指定します。可能な限り最高の精度になるよう、numerictype(1,16)
は既定で、16 ビットの係数および係数の値に基づいて決定された小数部の長さをもつ符号付き数値型オブジェクトに対応します。
このプロパティを調整することはできません。
出力の語長は入力の語長と同じです。出力の小数部の長さは、出力のダイナミック レンジ全体をオーバーフローせずに表現できるように計算されます。出力の小数部の長さを計算する方法の詳細については、Fixed-Point Precision Rules for Avoiding Overflow in FIR Filtersを参照してください。
使用法
入力引数
x
— ノイズを含むデータ入力
ベクトル | 行列
ノイズを含むデータ入力。ベクトルまたは行列として指定します。入力信号が行列の場合、行列の各列は独立したチャネルとして扱われます。入力信号の行数はチャネル長を表します。このオブジェクトは可変サイズの入力を受け入れます。オブジェクトがロックされると、各入力チャネルのサイズは変更できますが、チャネルの数は変更できません。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fi
複素数のサポート: あり
出力引数
y
— フィルター処理された出力
ベクトル | 行列
フィルター処理された出力。ベクトルまたは行列として返されます。出力は入力と同じサイズ、データ型および実数/複素数の特性をもちます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fi
複素数のサポート: あり
オブジェクト関数
オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj
という名前の System object のシステム リソースを解放するには、次の構文を使用します。
release(obj)
dsp.HighpassFilter
に固有
freqz | 離散時間フィルター System object の周波数応答 |
fvtool | DSP フィルターの周波数応答の可視化 |
impz | 離散時間フィルター System object のインパルス応答 |
info | Information about filter System object |
coeffs | フィルター System object 係数を構造に返します。 |
cost | Estimate cost of implementing filter System object |
grpdelay | 離散時間フィルター System object の群遅延応答 |
outputDelay | Determine output delay of single-rate or multirate filter |
generatehdl | Generate HDL code for quantized DSP filter (requires Filter Design HDL Coder) |
measure | Measure frequency response characteristics of filter System object |
例
FIR および IIR ハイパス フィルターのインパルス応答と周波数応答
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);
FIR ハイパス フィルターと同じプロパティを設定した、最小次数の IIR ハイパス フィルター設計します。clone
を使用して、FIR ハイパス フィルターと同じプロパティをもつ System object を作成します。クローンしたフィルターの FilterType
プロパティを IIR
に変更します。
IIRHPF = clone(FIRHPF);
IIRHPF.FilterType = 'IIR';
FIR ハイパス フィルターのインパルス応答をプロットします。ゼロ次係数は、19 サンプル分遅延されます。これは、フィルターの群遅延と等価です。FIR ハイパス フィルターは因果性 FIR フィルターです。
impz(FIRHPF)
IIR ハイパス フィルターのインパルス応答をプロットします。
impz(IIRHPF)
FIR ハイパス フィルターの振幅および位相応答をプロットします。
freqz(FIRHPF)
IIR ハイパス フィルターの振幅および位相応答をプロットします。
freqz(IIRHPF)
FIR ハイパス フィルターの実装コストを計算します。
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
FIR ハイパス フィルターの群遅延を計算します。
grpdelay(FIRHPF)
IIR ハイパス フィルターの群遅延を計算します。FIR フィルターの群遅延は一定 (線形位相) である一方、IIR の群遅延は一定ではありません。
grpdelay(IIRHPF)
FIR ハイパス フィルターを使用したホワイト ガウス ノイズ信号のフィルター処理
dsp.HighpassFilter
オブジェクトを使用してハイパス フィルターを作成します。NormalizedFrequency
プロパティを true
に設定すると、正規化周波数単位の周波数仕様をもつフィルターが設計されます。
LPF = dsp.HighpassFilter(NormalizedFrequency=true)
LPF = dsp.HighpassFilter with properties: FilterType: 'FIR' DesignForMinimumOrder: true StopbandFrequency: 0.3628 PassbandFrequency: 0.5442 StopbandAttenuation: 80 PassbandRipple: 0.1000 NormalizedFrequency: true Use get to show all properties
spectrumAnalyzer
オブジェクトを作成して、入力信号と出力信号のスペクトルを可視化します。サンプル レートが 44.1e3 Hz の場合、フィルターの阻止帯域周波数と通過帯域周波数はそれぞれ 8000 Hz と 12000 Hz に変換されます。
SA = spectrumAnalyzer(SampleRate=44.1e3,... PlotAsTwoSidedSpectrum=false,ShowLegend=true,... YLimits=[-150 30],... Title='Input Signal and Output Signal of Lowpass Filter'); SA.ChannelNames = {'Input','Output'};
ハイパス フィルターのアルゴリズムを実行して、ホワイト ガウス ノイズ入力信号をフィルター処理します。スペクトル アナライザーを使用して、入力信号と出力信号を確認します。
for k = 1:100 Input = randn(1024,1); Output = LPF(Input); SA([Input,Output]); end
IIR ハイパス フィルターを使用したホワイト ガウス ノイズのフィルター処理
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)
スペクトル アナライザー オブジェクトを作成します。
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'};
ホワイト ガウス ノイズ入力信号をフィルター処理します。スペクトル アナライザーを使用して、入力信号と出力信号を確認します。
for k = 1:100 Input = randn(1024,1); Output = hpf(Input); sa([Input,Output]); end
ハイパス フィルターの周波数応答特性の測定
ハイパス フィルターの周波数応答特性を測定します。既定のプロパティを使用して dsp.HighpassFilter
System object を作成します。フィルターの周波数応答特性を測定します。
HPF = dsp.HighpassFilter
HPF = dsp.HighpassFilter with properties: FilterType: 'FIR' DesignForMinimumOrder: true StopbandFrequency: 8000 PassbandFrequency: 12000 StopbandAttenuation: 80 PassbandRipple: 0.1000 NormalizedFrequency: false SampleRate: 44100 Use get to 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
アルゴリズム
FIR ハイパス フィルター
最小次数の設計では、このアルゴリズムは一般化された Remez FIR フィルター設計アルゴリズムを使用します。次数が指定された設計では、このアルゴリズムは制約付き等リップル FIR フィルター設計アルゴリズムを使用します。設計されたフィルターは、Direct form
構造体を持つタイプ 1 の線形位相フィルターとして実装されます。
IIR ハイパス フィルター
IIR 構成では、このアルゴリズムは楕円設計法を使用して、フィルター設計の仕様を満たすために必要な SOS およびスケール値を計算します。アルゴリズムは計算した SOS とスケール値を使用して Direct form I
双二次 IIR フィルターを設定します。このフィルターが、ハイパス フィルターの IIR バージョンの基礎を形成します。
参照
[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.
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
MATLAB コード生成における System object (MATLAB Coder)を参照してください。
このオブジェクトは、ARM Cortex-M プロセッサおよび ARM Cortex-A プロセッサ用のコード生成をサポートします。ARM Cortex コード生成の詳細については、ARM Cortex-M プロセッサおよび ARM Cortex-A プロセッサ用のコード生成を参照してください。
このオブジェクトは、次の条件を満たす場合、Intel® AVX2 コード置換ライブラリを使用した SIMD コード生成もサポートします。
FilterType
が'FIR'
に設定されている。入力信号のデータ型が
single
またはdouble
である。
SIMD テクノロジーにより、生成コードのパフォーマンスが大幅に向上します。詳細については、SIMD コード生成を参照してください。このオブジェクトから SIMD コードを生成するには、Use Intel AVX2 Code Replacement Library to Generate SIMD Code from MATLAB Algorithmsを参照してください。
HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための VHDL、Verilog および SystemVerilog のコードを生成します。
このオブジェクトは、Filter Design HDL Coder™ 製品による HDL コード生成をサポートします。ワークフローと制限については、Generate HDL Code for Filter System Objects (Filter Design HDL Coder)を参照してください。
バージョン履歴
R2015a で導入R2023a: 正規化周波数のサポート
NormalizedFrequency
プロパティを true
に設定する場合は、正規化周波数単位 (0 ~ 1) で通過帯域と阻止帯域の周波数を指定しなければなりません。
オブジェクトの作成時に NormalizedFrequency
プロパティを true
に設定すると、通過帯域と阻止帯域の周波数値は、既定のサンプル レート 44100 Hz を使用して正規化周波数単位に自動的に設定されます。
hpFilter = dsp.HighpassFilter(NormalizedFrequency=true)
hpFilter = dsp.HighpassFilter with properties: FilterType: 'FIR' DesignForMinimumOrder: true StopbandFrequency: 0.3628 PassbandFrequency: 0.5442 StopbandAttenuation: 80 PassbandRipple: 0.1000 NormalizedFrequency: true
オブジェクトの作成後に NormalizedFrequency
プロパティを true
に設定した場合は、オブジェクト アルゴリズムを実行する前に、通過帯域と阻止帯域の周波数を正規化周波数値に手動で設定しなければなりません。
hpFilter = dsp.HighpassFilter
hpFilter = dsp.HighpassFilter with properties: FilterType: 'FIR' DesignForMinimumOrder: true StopbandFrequency: 8000 PassbandFrequency: 12000 StopbandAttenuation: 80 PassbandRipple: 0.1000 NormalizedFrequency: false SampleRate: 44100
NormalizedFrequency
を true
に設定し、Hz 単位の入力サンプル レートを使用して、Hz 単位の周波数値を正規化された値に手動で変換します。たとえば、入力サンプル レートが 44100 Hz の場合、対応する正規化単位の値は次の式を使用して計算されます。hpFilter.NormalizedFrequency = true; hpFilter.StopbandFrequency = 8000/(44100/2); hpFilter.PassbandFrequency = 12000/(44100/2)
hpFilter = dsp.HighpassFilter with properties: FilterType: 'FIR' DesignForMinimumOrder: true StopbandFrequency: 0.3628 PassbandFrequency: 0.5442 StopbandAttenuation: 80 PassbandRipple: 0.1000 NormalizedFrequency: true
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)