このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
dsp.IIRFilter
無限インパルス応答 (IIR) フィルター
説明
dsp.IIRFilter
System object™ は、指定されたフィルターを使用して入力の各チャネルをフィルター処理します。フィルターに 'Direct form I'
、'Direct form I transposed'
、'Direct form II'
または 'Direct form II transposed'
構造のいずれかを指定できます。
Numerator
プロパティと Denominator
プロパティを使用して、フィルター分子係数と分母係数を指定します。これらの係数に加え、InitialConditions
プロパティを使って非ゼロのフィルターの初期状態も指定できます。
IIR フィルターを使用して信号をフィルター処理するには、次のようにします。
dsp.IIRFilter
オブジェクトを作成し、そのプロパティを設定します。関数と同様に、引数を指定してオブジェクトを呼び出します。
System object の機能の詳細については、System object とはを参照してください。
作成
説明
は、指定された IIR フィルター実装を使用して時間の経過に伴って入力の各チャネルを個別にフィルターする無限インパルス応答 (IIR) フィルター System object を作成します。iir
= dsp.IIRFilter
は、iir
= dsp.IIRFilter(num,den)Numerator
プロパティを num
に、Denominator
プロパティを den
に設定して IIR フィルター オブジェクトを作成します。 (R2024a 以降)
は、1 つ以上の名前と値のペアの引数で指定されたプロパティをもつ IIR フィルター オブジェクトを作成します。指定していないプロパティは既定値になります。前の構文のいずれでもこの構文を使用できます。iir
= dsp.IIRFilter(Name=Value
)
例: iir = dsp.IIRFilter(Structure='Direct form I')
は、Structure
プロパティを 'Direct form I'
に設定した dsp.IIRFilter
オブジェクトを作成します。
プロパティ
特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release
を使用します。
プロパティが "調整可能" の場合、その値をいつでも変更できます。
プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。
IIR フィルター構造。'Direct form I'
、'Direct form I transposed'
、'Direct form II'
、または 'Direct form II transposed'
として指定します。
分子係数。行ベクトルとして指定します。
例: [0.0296 0.1775 0.4438 0.5918 0.4438 0.1775 0.0296
]
調整可能: Yes
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
複素数のサポート: あり
分母係数。行ベクトルとして指定します。最初の分母係数は 1
でなければなりません。
例: [1.0000 -0.0000 0.7777 -0.0000 0.1142 -0.0000 0.0018
]
調整可能: Yes
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
複素数のサポート: あり
フィルターの状態の初期条件。次のいずれかを指定します。
scalar –– オブジェクトはフィルター内のすべての遅延要素をスカラー値に初期化します。
vector –– ベクトルの長さはフィルターの遅延要素の数と等しくなります。各ベクトル要素は対応する遅延要素に対して一意の初期条件を指定します。オブジェクトは同じベクトルを入力信号の各チャネルに適用します。
matrix –– 行列の行数はフィルターの遅延要素の数と同じでなければなりません。行列の列数は入力のチャネル数と同じでなければなりません。各要素は対応するチャネルの対応する遅延要素に一意の初期条件を指定します。
フィルターの状態の数は max(N,M) – 1 になります。ここで N は極の数、M はゼロの数です。
調整可能: Yes
依存関係
このプロパティは、Structureプロパティを 'Direct form II'
または 'Direct form II transposed'
に設定した場合にのみ適用されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
複素数のサポート: あり
フィルター構造の零点側でのフィルター状態の初期条件。次のいずれかを指定します。
scalar –– オブジェクトはフィルター内の零点側ですべての遅延要素をスカラー値に初期化します。
vector –– ベクトルの長さはフィルターの零点側の遅延要素の数と等しくなります。各ベクトル要素は零点側の対応する遅延要素に対して一意の初期条件を指定します。オブジェクトは初期条件の同じベクトルを入力信号の各チャネルに適用します。
matrix –– 行列の行数はフィルターの零点側の遅延要素の数と同じでなければなりません。行列の列数は入力信号のチャネル数と同じでなければなりません。各要素は対応するチャネルの対応する零点側の遅延要素に一意の初期条件を指定します。
フィルターの状態の数は max(N,M) – 1 になります。ここで N は極の数、M はゼロの数です。
調整可能: Yes
依存関係
このプロパティは、Structureプロパティを 'Direct form I'
または 'Direct form I transposed'
に設定した場合にのみ適用されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
複素数のサポート: あり
フィルター構造の極側でのフィルター状態の初期条件。次のいずれかを指定します。
scalar –– オブジェクトはフィルター内の極側ですべての遅延要素をスカラー値に初期化します。
vector –– ベクトルの長さはフィルターの極側の遅延要素の数と等しくなります。各ベクトル要素は極側の対応する遅延要素に対して一意の初期条件を指定します。オブジェクトは初期条件の同じベクトルを入力信号の各チャネルに適用します。
matrix –– 行列の行数はフィルターの極側の遅延要素の数と同じでなければなりません。行列の列数は入力信号のチャネル数と同じでなければなりません。各要素は対応するチャネルの対応する極側の遅延要素に一意の初期条件を指定します。
フィルターの状態の数は max(N,M) – 1 になります。ここで N は極の数、M はゼロの数です。
調整可能: Yes
依存関係
このプロパティは、Structureプロパティを 'Direct form I'
または 'Direct form I transposed'
に設定した場合にのみ適用されます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
複素数のサポート: あり
固定小数点プロパティ
固定小数点演算の丸めモードを選択します。
固定小数点演算のオーバーフロー アクション。次のいずれかを指定します。
'Wrap'
–– オブジェクトはその固定小数点演算の結果をラップします。'Saturate'
–– オブジェクトはその固定小数点演算の結果を飽和します。
オーバーフロー アクションの詳細については、固定小数点演算のオーバーフロー モードを参照してください。
状態のデータ型。次のいずれかを指定します。
'Same as input'
–– 状態のデータ型は、入力のデータ型と同じです。'Custom'
–– 状態の出力データ型は、CustomStateDataTypeプロパティによる自動符号付き数値型です。
状態の語長と小数部の長さ。語長が 16 で小数部の長さが 15 の自動符号付きの数値型に指定します。
依存関係
このプロパティはStateDataTypeを 'Custom'
に設定した場合にのみ適用されます。
分子係数のデータ型。次のいずれかを指定します。
'Same word length as input'
–– 分子係数の語長は入力の語長と同じです。小数部の長さは、可能な最高の精度になるように選択されます。'Custom'
–– 分子係数のデータ型は、CustomNumeratorCoefficientsDataTypeプロパティで指定された自動符号付きの数値型です。
分子係数の語長と小数部の長さ。語長が 16 で小数部の長さが 15 の自動符号付きの数値型に指定します。
依存関係
このプロパティはNumeratorCoefficientsDataTypeを 'Custom'
に設定した場合にのみ適用されます。
分母係数のデータ型。次のいずれかを指定します。
'Same word length as input'
–– 分母係数の語長は入力の語長と同じです。小数部の長さは、可能な最高の精度になるように選択されます。'Custom'
–– 分母係数のデータ型は、CustomDenominatorCoefficientsDataTypeプロパティで指定された自動符号付きの数値型です。
分母係数の語長と小数部の長さ。語長が 16 で小数部の長さが 15 の自動符号付きの数値型に指定します。
依存関係
このプロパティはDenominatorCoefficientsDataTypeを 'Custom'
に設定した場合にのみ適用されます。
IIR フィルターにおける分子多項式の乗算操作の出力のデータ型。次のいずれかを指定します。
'Full precision'
–– オブジェクトは、完全精度ルールを使用して分子係数の乗算出力データ型を計算します。これらの規則は、最も正確な固定長数値を提供します。量子化は行われません。必要に応じてビットが追加されて、丸めやオーバーフローが発生しないことを確実にします。'Same as input'
–– 乗算出力のデータ型は入力データ型と同じです。'Custom'
–– 乗算出力のデータ型は、CustomNumeratorProductDataTypeプロパティで指定されたカスタムの数値型です。丸め方法とオーバーフロー アクションは、RoundingMethodプロパティとOverflowActionプロパティで指定します。
分子の乗算の語長と小数部の長さ。語長が 32 で小数部の長さが 30 の自動符号付きの数値型に指定します。
依存関係
このプロパティはNumeratorProductDataTypeを 'Custom'
に設定した場合にのみ適用されます。
IIR フィルターにおける分母多項式の乗算操作の出力のデータ型。次のいずれかを指定します。
'Full precision'
–– オブジェクトは、完全精度ルールを使用して分母係数の乗算出力のデータ型を計算します。これらの規則は、最も正確な固定長数値を提供します。量子化は行われません。必要に応じてビットが追加されて、丸めやオーバーフローが発生しないことを確実にします。'Same as input'
–– 乗算出力のデータ型は入力データ型と同じです。'Custom'
–– 乗算出力のデータ型は、CustomDenominatorProductDataTypeプロパティで指定されたカスタムの数値型です。丸め方法とオーバーフロー アクションは、RoundingMethodプロパティとOverflowActionプロパティで指定します。
分母の乗算の語長と小数部の長さ。語長が 32 で小数部の長さが 30 の自動符号付きの数値型に指定します。
依存関係
このプロパティはDenominatorProductDataTypeを 'Custom'
に設定した場合にのみ適用されます。
IIR フィルターにおける分子多項式の累積演算の出力のデータ型。次のいずれかを指定します。
'Full precision'
–– オブジェクトは、完全精度ルールを使用して分子アキュムレータのデータ型を計算します。これらの規則は、最も正確な固定長数値を提供します。量子化は行われません。必要に応じてビットが追加されて、丸めやオーバーフローが発生しないことを確実にします。'Same as input'
–– アキュムレータのデータ型は入力データ型と同じです。'Same as product'
–– アキュムレータのデータ型は乗算出力のデータ型と同じです。'Custom'
–– アキュムレータのデータ型は、CustomNumeratorAccumulatorDataTypeプロパティで指定されたカスタムの数値型です。丸め方法とオーバーフロー アクションは、RoundingMethodプロパティとOverflowActionプロパティで指定します。
分子アキュムレータの語長と小数部の長さ。語長が 32 で小数部の長さが 30 の自動符号付きの数値型に指定します。
依存関係
このプロパティはNumeratorAccumulatorDataTypeを 'Custom'
に設定した場合にのみ適用されます。
IIR フィルターにおける分母多項式の累積演算の出力のデータ型。次のいずれかを指定します。
'Full precision'
–– オブジェクトは、完全精度ルールを使用して分母アキュムレータのデータ型を計算します。これらの規則は、最も正確な固定長数値を提供します。量子化は行われません。必要に応じてビットが追加されて、丸めやオーバーフローが発生しないことを確実にします。'Same as input'
–– アキュムレータのデータ型は入力データ型と同じです。'Same as product'
–– アキュムレータのデータ型は乗算出力のデータ型と同じです。'Custom'
–– アキュムレータのデータ型は、CustomDenominatorAccumulatorDataTypeプロパティで指定されたカスタムの数値型です。丸め方法とオーバーフロー アクションは、RoundingMethodプロパティとOverflowActionプロパティで指定します。
分母アキュムレータの語長と小数部の長さ。語長が 32 で小数部の長さが 30 の自動符号付きの数値型に指定します。
依存関係
このプロパティはDenominatorAccumulatorDataTypeを 'Custom'
に設定した場合にのみ適用されます。
dsp.IIRFilter
オブジェクトの出力のデータ型。次のいずれかを指定します。
'Same as input'
–– 出力のデータ型は、入力のデータ型と同じです。'Full precision'
–– オブジェクトは、完全精度ルールを使用して出力のデータ型を計算します。これらの規則は、最も正確な固定長数値を提供します。量子化は行われません。必要に応じてビットが追加されて、丸めやオーバーフローが発生しないことを確実にします。'Custom'
–– 出力のデータ型は、CustomOutputDataTypeプロパティで指定されたカスタムの数値型です。丸め方法とオーバーフロー アクションは、RoundingMethodプロパティとOverflowActionプロパティで指定します。
出力の語長と小数部の長さ。語長が 16 で小数部の長さが 15 の自動符号付きの数値型に指定します。
依存関係
このプロパティはOutputDataTypeを 'Custom'
に設定した場合にのみ適用されます。
被乗数のデータ型。次のいずれかを指定します。
'Same as input'
–– 被乗数のデータ型は入力データ型と同じです。'Custom'
–– 被乗数のデータ型は、CustomMultiplicandDataTypeプロパティで指定された自動符号付きの数値型です。
被乗数の出力の語長と小数部の長さ。語長が 16 で小数部の長さが 15 の自動符号付きの数値型に指定します。
依存関係
このプロパティはMultiplicandDataTypeを 'Custom'
に設定した場合にのみ適用されます。
使用法
説明
入力引数
フィルター処理されるデータ入力。ベクトルまたは行列として指定します。
入力データは可変サイズの信号にすることができます。つまり、信号のフレーム長 (行数) はシミュレーション中に変更できますが、チャネル数 (列数) は一定のままでなければなりません。 (R2024a 以降)
データ型: single
| double
| int8
| int16
| int32
| int64
| fi
複素数のサポート: あり
出力引数
フィルター処理された出力。ベクトルまたは行列として返されます。出力のサイズ、データ型、実数/複素数は入力と一致します。
データ型: single
| double
| int8
| int16
| int32
| int64
| fi
複素数のサポート: あり
オブジェクト関数
オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj
という名前の System object のシステム リソースを解放するには、次の構文を使用します。
release(obj)
freqz | 離散時間フィルター System object の周波数応答 |
filterAnalyzer | Analyze filters with Filter Analyzer app |
impz | 離散時間フィルター System object のインパルス応答 |
phasez | 離散時間フィルター System object の位相応答 (アンラップされた位相応答) |
sos | 2 次セクションへの変換 |
outputDelay | Determine output delay of single-rate or multirate filter |
このオブジェクトがサポートしているフィルター解析法のリストについては、MATLAB® コマンド プロンプトに「dsp.IIRFilter.helpFilterAnalysis
」と入力します。対応する関数リファレンス ページについては、Analysis Functions for Filter System Objectsを参照してください。
例
ローパス バタワース IIR フィルターを使用して、ノイズを含む正弦波信号をフィルター処理します。
入力信号
入力信号は、1 kHz、5 kHz、および 12 kHz の 3 つのトーンで構成されます。
Sine1 = dsp.SineWave(Frequency=1e3,... SampleRate=44.1e3); Sine2 = dsp.SineWave(Frequency=5e3,... SampleRate=44.1e3); Sine3 = dsp.SineWave(Frequency=12e3,... SampleRate=44.1e3);
フィルターの設計
関数 butter
を使用して、10 次のローパス バタワース フィルターを設計します。
N = 10; Fc = 0.4; [b,a] = butter(N,Fc);
dsp.IIRFilter
オブジェクトを作成し、設計した係数を Numerator
および Denominator
プロパティに割り当てます。
iir = dsp.IIRFilter(b,a)
iir = dsp.IIRFilter with properties: Structure: 'Direct form II transposed' Numerator: [4.9945e-04 0.0050 0.0225 0.0599 0.1049 0.1259 0.1049 0.0599 0.0225 0.0050 4.9945e-04] Denominator: [1 -1.9924 3.0195 -2.8185 2.0387 -1.0545 0.4144 -0.1157 0.0225 -0.0027 1.4876e-04] InitialConditions: 0 Use get to show all properties
フィルターの振幅応答を表示します。カットオフ周波数は 0.4 ラジアン/サンプルです。これは、サンプル レートが 44.1 kHz の場合、、つまり 8.82 kHz になります。
filterAnalyzer(iir,SampleRates=Sine1.SampleRate)
Spectrum Analyzer
を使用して、入力信号と出力信号のパワー スペクトルを表示します。
sa = spectrumAnalyzer(SampleRate=Sine1.SampleRate,... Method='welch',... PlotAsTwoSidedSpectrum=false,... OverlapPercent=80,... SpectrumUnits='dBW',... YLimits=[-220 -10]);
ストリーミング
標準偏差 0.01 でゼロ平均のホワイト ガウス ノイズを正弦波の和に付加します。IIR フィルターを使用して信号をフィルター処理します。
1 kHz と 5 kHz のトーンは、通過帯域にあるため影響を受けません。12 kHz の周波数は、フィルターの遷移帯域にあるので減衰します。
for i = 1:5000 input = Sine1()+Sine2()+Sine3()+... 0.01*randn(Sine1.SamplesPerFrame,1); output = iir(input); sa(input,output) end
8 ノッチ、および -3 dB レベルを基準とする 0.02 のノッチ帯域幅をもつ櫛形ノッチ フィルターを設計します。
関数 fdesign.comb
を使用し、次の設計パラメーターを指定して、comb
フィルター設計仕様オブジェクトを作成します。
combSpecs = fdesign.comb('notch','N,BW',8,0.02);
関数 design
を使用して櫛形ノッチ フィルターを設計します。生成されるフィルターは、dsp.IIRFilter
System object™ です。このフィルターをストリーミング データに適用する方法の詳細については、dsp.IIRFilter
を参照してください。
iirFilt = design(combSpecs,Systemobject=true)
iirFilt = dsp.IIRFilter with properties: Structure: 'Direct form II' Numerator: [0.8878 0 0 0 0 0 0 0 -0.8878] Denominator: [1 0 0 0 0 0 0 0 -0.7757] InitialConditions: 0 Use get to show all properties
設計したフィルターの振幅応答を表示します。
filterAnalyzer(iirFilt)
詳細
dsp.IIRFilter
System object は、以下のフィルター構造をサポートします。各セクションのブロック線図は、固定小数点信号のフィルター構造で使用されるデータ型を示しています。オブジェクトの固定小数点プロパティを使用してデータ型を設定できます。
以下の制約は、Structure
プロパティが 'Direct form I'
に設定されている場合に適用されます。
入力は実数または複素数を受け入れる。
分子係数と分母係数は実数または複素数を受け入れる。
分子係数と分母係数は同じ実数/複素数の特性をもたなければならない。分子係数と分母係数の実数/複素数がそれぞれ異なると、オブジェクトは 2 組の複素数係数が指定されている場合と同様にフィルターを処理します。実数値係数のセットは、値がゼロの虚数部をもつ複素数ベクトルと同様に扱われます。
この構造に状態のデータ型は指定できない。状態のデータ型を指定できないのは、入力および出力の状態が、入力バッファーおよび出力バッファーと同じデータ型をもつためです。
以下の制約は、Structure
プロパティが 'Direct form I transposed'
に設定されている場合に適用されます。
入力は実数または複素数を受け入れる。
分子係数と分母係数は実数または複素数を受け入れる。
分子係数と分母係数は同じ実数/複素数の特性をもたなければならない。分子係数と分母係数の実数/複素数がそれぞれ異なると、オブジェクトは 2 組の複素数係数が指定されている場合と同様にフィルターを処理します。実数値係数のセットは、値がゼロの虚数部をもつ複素数ベクトルと同様に扱われます。
入力または係数が複素数のときに状態は複素数になる。
以下の制約は、Structure
プロパティが 'Direct form II'
に設定されている場合に適用されます。
入力は実数または複素数を受け入れる。
分子係数と分母係数は実数または複素数を受け入れる。
分子係数と分母係数は同じ実数/複素数の特性をもたなければならない。分子係数と分母係数の実数/複素数がそれぞれ異なると、オブジェクトは 2 組の複素数係数が指定されている場合と同様にフィルターを処理します。実数値係数のセットは、値がゼロの虚数部をもつ複素数ベクトルと同様に扱われます。
入力または係数が複素数のときに状態は複素数になる。
以下の制約は、Structure
プロパティが 'Direct form II transposed'
に設定されている場合に適用されます。
入力は実数または複素数を受け入れる。
分子係数と分母係数は実数または複素数を受け入れる。
分子係数と分母係数は同じ実数/複素数の特性をもたなければならない。分子係数と分母係数の実数/複素数がそれぞれ異なると、オブジェクトは 2 組の複素数係数が指定されている場合と同様にフィルターを処理します。実数値係数のセットは、値がゼロの虚数部をもつ複素数ベクトルと同様に扱われます。
入力または係数が複素数のときに状態は複素数になる。
拡張機能
使用上の注意および制限:
コード生成では、
Numerator
プロパティとDenominator
プロパティのみが調整可能です。MATLAB コード生成における System object (MATLAB Coder)を参照してください。
バージョン履歴
R2012b で導入dsp.IIRFilter
オブジェクトの構築時に、Numerator
と Denominator
のプロパティ値を値のみの引数として指定できるようになりました。
iir = dsp.IIRFilter(1:3,[1,1/2,1/3])
iir = dsp.IIRFilter with properties: Structure: 'Direct form II transposed' Numerator: [1 2 3] Denominator: [1 0.5000 0.3333] InitialConditions: 0 Show all properties
dsp.IIRFilter
オブジェクトに可変サイズの信号を入力できるようになりました。信号フレームのサイズはシミュレーション中に変更できますが、チャネル数は一定のままでなければなりません。
iir = dsp.IIRFilter(1:3,[1,1/2,1/3])
iir = dsp.IIRFilter with properties: Structure: 'Direct form II transposed' Numerator: [1 2 3] Denominator: [1 0.5000 0.3333] InitialConditions: 0 Show all properties
オブジェクトがロックされている場合でも、フレーム サイズを変更することができます。
y = iir(randn(14,1)); y = iir(randn(24,1));
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)