このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
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 とはを参照してください。
作成
プロパティ
特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release
を使用します。
プロパティが "調整可能" の場合、その値をいつでも変更できます。
プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。
Structure
— IIR フィルター構造
'Direct form II transposed'
(既定値) | 'Direct form I'
| 'Direct form I transposed'
| 'Direct form II'
IIR フィルター構造。'Direct form I'
、'Direct form I transposed'
、'Direct form II'
、または 'Direct form II transposed'
として指定します。
Numerator
— 分子係数
[1 1]
(既定値) | 行ベクトル
分子係数。行ベクトルとして指定します。
例: [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
複素数のサポート: あり
Denominator
— 分母係数
[1 0.1]
(既定値) | 行ベクトル
分母係数。行ベクトルとして指定します。最初の分母係数は 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
複素数のサポート: あり
InitialConditions
— 初期条件
0
(既定値) | スカラー | ベクトル | 行列
フィルターの状態の初期条件。次のいずれかを指定します。
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
複素数のサポート: あり
NumeratorInitialConditions
— 零点側の初期条件
0
(既定値) | スカラー | ベクトル | 行列
フィルター構造の零点側でのフィルター状態の初期条件。次のいずれかを指定します。
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
複素数のサポート: あり
DenominatorInitialConditions
— 極側の初期条件
0
(既定値) | スカラー | ベクトル | 行列
フィルター構造の極側でのフィルター状態の初期条件。次のいずれかを指定します。
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
複素数のサポート: あり
RoundingMethod
— 丸め方法
'Floor'
(既定値) | 'Ceiling'
| 'Convergent'
| 'Nearest'
| 'Round'
| 'Simplest'
| 'Zero'
固定小数点演算の丸めモードを選択します。
OverflowAction
— オーバーフロー アクション
'Wrap'
(既定値) | 'Saturate'
固定小数点演算のオーバーフロー アクション。次のいずれかを指定します。
'Wrap'
–– オブジェクトはその固定小数点演算の結果をラップします。'Saturate'
–– オブジェクトはその固定小数点演算の結果を飽和します。
オーバーフロー アクションの詳細については、固定小数点演算のオーバーフロー モードを参照してください。
StateDataType
— 状態のデータ型
'Same as input'
(既定値) | 'Custom'
状態のデータ型。次のいずれかを指定します。
'Same as input'
–– 状態のデータ型は、入力のデータ型と同じです。'Custom'
–– 状態の出力データ型は、CustomStateDataTypeプロパティによる自動符号付き数値型です。
CustomStateDataType
— 状態の語長と小数部の長さ
numerictype([],16,15)
(既定値)
状態の語長と小数部の長さ。語長が 16 で小数部の長さが 15 の自動符号付きの数値型に指定します。
依存関係
このプロパティはStateDataTypeを 'Custom'
に設定した場合にのみ適用されます。
NumeratorCoefficientsDataType
— 分子係数のデータ型
'Same word length as input'
(既定値) | 'Custom'
分子係数のデータ型。次のいずれかを指定します。
'Same word length as input'
–– 分子係数の語長は入力の語長と同じです。小数部の長さは、可能な最高の精度になるように選択されます。'Custom'
–– 分子係数のデータ型は、CustomNumeratorCoefficientsDataTypeプロパティで指定された自動符号付きの数値型です。
CustomNumeratorCoefficientsDataType
— 分子係数の語長と小数部の長さ
numerictype([],16,15)
(既定値)
分子係数の語長と小数部の長さ。語長が 16 で小数部の長さが 15 の自動符号付きの数値型に指定します。
依存関係
このプロパティはNumeratorCoefficientsDataTypeを 'Custom'
に設定した場合にのみ適用されます。
DenominatorCoefficientsDataType
— 分母係数のデータ型
'Same word length as input'
(既定値) | 'Custom'
分母係数のデータ型。次のいずれかを指定します。
'Same word length as input'
–– 分母係数の語長は入力の語長と同じです。小数部の長さは、可能な最高の精度になるように選択されます。'Custom'
–– 分母係数のデータ型は、CustomDenominatorCoefficientsDataTypeプロパティで指定された自動符号付きの数値型です。
CustomDenominatorCoefficientsDataType
— 分母係数の語長と小数部の長さ
numerictype([],16,15)
(既定値)
分母係数の語長と小数部の長さ。語長が 16 で小数部の長さが 15 の自動符号付きの数値型に指定します。
依存関係
このプロパティはDenominatorCoefficientsDataTypeを 'Custom'
に設定した場合にのみ適用されます。
NumeratorProductDataType
— 分子の乗算のデータ型
'Full precision'
(既定値) | 'Same as input'
| 'Custom'
IIR フィルターにおける分子多項式の乗算操作の出力のデータ型。次のいずれかを指定します。
'Full precision'
–– オブジェクトは、完全精度ルールを使用して分子係数の乗算出力データ型を計算します。これらの規則は、最も正確な固定長数値を提供します。量子化は行われません。必要に応じてビットが追加されて、丸めやオーバーフローが発生しないことを確実にします。'Same as input'
–– 乗算出力のデータ型は入力データ型と同じです。'Custom'
–– 乗算出力のデータ型は、CustomNumeratorProductDataTypeプロパティで指定されたカスタムの数値型です。丸め方法とオーバーフロー アクションは、RoundingMethodプロパティとOverflowActionプロパティで指定します。
CustomNumeratorProductDataType
— 分子の乗算の語長と小数部の長さ
numerictype([],32,30)
(既定値)
分子の乗算の語長と小数部の長さ。語長が 32 で小数部の長さが 30 の自動符号付きの数値型に指定します。
依存関係
このプロパティはNumeratorProductDataTypeを 'Custom'
に設定した場合にのみ適用されます。
DenominatorProductDataType
— 分母の乗算のデータ型
'Full precision'
(既定値) | 'Same as input'
| 'Custom'
IIR フィルターにおける分母多項式の乗算操作の出力のデータ型。次のいずれかを指定します。
'Full precision'
–– オブジェクトは、完全精度ルールを使用して分母係数の乗算出力のデータ型を計算します。これらの規則は、最も正確な固定長数値を提供します。量子化は行われません。必要に応じてビットが追加されて、丸めやオーバーフローが発生しないことを確実にします。'Same as input'
–– 乗算出力のデータ型は入力データ型と同じです。'Custom'
–– 乗算出力のデータ型は、CustomDenominatorProductDataTypeプロパティで指定されたカスタムの数値型です。丸め方法とオーバーフロー アクションは、RoundingMethodプロパティとOverflowActionプロパティで指定します。
CustomDenominatorProductDataType
— 分母の乗算の語長と小数部の長さ
numerictype([],32,30)
(既定値)
分母の乗算の語長と小数部の長さ。語長が 32 で小数部の長さが 30 の自動符号付きの数値型に指定します。
依存関係
このプロパティはDenominatorProductDataTypeを 'Custom'
に設定した場合にのみ適用されます。
NumeratorAccumulatorDataType
— 分子アキュムレータのデータ型
'Full precision'
(既定値) | 'Same as input'
| 'Same as product'
| 'Custom'
IIR フィルターにおける分子多項式の累積操作の出力のデータ型。次のいずれかを指定します。
'Full precision'
–– オブジェクトは、完全精度ルールを使用して分子アキュムレータのデータ型を計算します。これらの規則は、最も正確な固定長数値を提供します。量子化は行われません。必要に応じてビットが追加されて、丸めやオーバーフローが発生しないことを確実にします。'Same as input'
–– アキュムレータのデータ型は入力データ型と同じです。'Same as product'
–– アキュムレータのデータ型は乗算出力のデータ型と同じです。'Custom'
–– アキュムレータのデータ型は、CustomNumeratorAccumulatorDataTypeプロパティで指定されたカスタムの数値型です。丸め方法とオーバーフロー アクションは、RoundingMethodプロパティとOverflowActionプロパティで指定します。
CustomNumeratorAccumulatorDataType
— 分子アキュムレータの語長と小数部の長さ
numerictype([],32,30)
(既定値)
分子アキュムレータの語長と小数部の長さ。語長が 32 で小数部の長さが 30 の自動符号付きの数値型に指定します。
依存関係
このプロパティはNumeratorAccumulatorDataTypeを 'Custom'
に設定した場合にのみ適用されます。
DenominatorAccumulatorDataType
— 分母アキュムレータのデータ型
'Full precision'
(既定値) | 'Same as input'
| 'Same as product'
| 'Custom'
IIR フィルターにおける分母多項式の累積操作の出力のデータ型。次のいずれかを指定します。
'Full precision'
–– オブジェクトは、完全精度ルールを使用して分母アキュムレータのデータ型を計算します。これらの規則は、最も正確な固定長数値を提供します。量子化は行われません。必要に応じてビットが追加されて、丸めやオーバーフローが発生しないことを確実にします。'Same as input'
–– アキュムレータのデータ型は入力データ型と同じです。'Same as product'
–– アキュムレータのデータ型は乗算出力のデータ型と同じです。'Custom'
–– アキュムレータのデータ型は、CustomDenominatorAccumulatorDataTypeプロパティで指定されたカスタムの数値型です。丸め方法とオーバーフロー アクションは、RoundingMethodプロパティとOverflowActionプロパティで指定します。
CustomDenominatorAccumulatorDataType
— 分母アキュムレータの語長と小数部の長さ
numerictype([],32,30)
(既定値)
分母アキュムレータの語長と小数部の長さ。語長が 32 で小数部の長さが 30 の自動符号付きの数値型に指定します。
依存関係
このプロパティはDenominatorAccumulatorDataTypeを 'Custom'
に設定した場合にのみ適用されます。
OutputDataType
— 出力データ型
'Same as input'
(既定値) | 'Full precision'
| 'Custom'
dsp.IIRFilter
オブジェクトの出力のデータ型。次のいずれかを指定します。
'Same as input'
–– 出力のデータ型は、入力のデータ型と同じです。'Full precision'
–– オブジェクトは、完全精度ルールを使用して出力のデータ型を計算します。これらの規則は、最も正確な固定長数値を提供します。量子化は行われません。必要に応じてビットが追加されて、丸めやオーバーフローが発生しないことを確実にします。'Custom'
–– 出力のデータ型は、CustomOutputDataTypeプロパティで指定されたカスタムの数値型です。丸め方法とオーバーフロー アクションは、RoundingMethodプロパティとOverflowActionプロパティで指定します。
CustomOutputDataType
— 出力の語長と小数部の長さ
numerictype([],16,15)
(既定値)
出力の語長と小数部の長さ。語長が 16 で小数部の長さが 15 の自動符号付きの数値型に指定します。
依存関係
このプロパティはOutputDataTypeを 'Custom'
に設定した場合にのみ適用されます。
MultiplicandDataType
— 被乗数のデータ型
'Same as input'
(既定値) | 'Custom'
被乗数のデータ型。次のいずれかを指定します。
'Same as input'
–– 被乗数のデータ型は入力データ型と同じです。'Custom'
–– 被乗数のデータ型は、CustomMultiplicandDataTypeプロパティで指定された自動符号付きの数値型です。
CustomMultiplicandDataType
— 被乗数の出力の語長と小数部の長さ
numerictype([],16,15)
(既定値)
被乗数の出力の語長と小数部の長さ。語長が 16 で小数部の長さが 15 の自動符号付きの数値型に指定します。
依存関係
このプロパティはMultiplicandDataTypeを 'Custom'
に設定した場合にのみ適用されます。
使用法
説明
入力引数
input
— データ入力
ベクトル | 行列
フィルター処理されるデータ入力。ベクトルまたは行列として指定します。
例: randn(34,24)
データ型: single
| double
| int8
| int16
| int32
| int64
| fi
複素数のサポート: あり
出力引数
iirOut
— フィルター処理された出力
ベクトル | 行列
フィルター処理された出力。ベクトルまたは行列として返されます。出力のサイズ、データ型、実数/複素数は入力と一致します。
データ型: single
| double
| int8
| int16
| int32
| int64
| fi
複素数のサポート: あり
オブジェクト関数
オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj
という名前の System object のシステム リソースを解放するには、次の構文を使用します。
release(obj)
dsp.IIRFilter に固有
このオブジェクトがサポートしているフィルター解析法のリストについては、MATLAB® コマンド プロンプトに「dsp.IIRFilter.helpFilterAnalysis
」と入力します。対応する関数リファレンス ページについては、Analysis Methods for Filter System Objectsを参照してください。
例
IIR フィルターを使用したノイズを含む信号のフィルター
ローパス バタワース IIR フィルターを使用して、ノイズを含む正弦波信号をフィルター処理します。
メモ: R2016a 以前のリリースを使用している場合、それぞれのオブジェクトの呼び出しを等価な step 構文で置き換えてください。たとえば、obj(x)
は step(obj,x)
になります。
入力信号
入力信号は、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('Numerator',b,... 'Denominator',a);
フィルターの振幅応答を表示します。カットオフ周波数は 0.4 ラジアン/サンプルです。これは、サンプル レートが 44.1 kHz の場合、、つまり 8.82 kHz になります。
fvtool(iir,'Fs',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:1000 input = Sine1()+Sine2()+Sine3()+... 0.01*randn(Sine1.SamplesPerFrame,1); output = iir(input); sa(input,output) end
IIR フィルターの設計
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 Show all properties
fvtool
を使用して設計したフィルターの振幅応答を表示します。
fvtool(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 組の複素数係数が指定されている場合と同様にフィルターを処理します。実数値係数のセットは、値がゼロの虚数部をもつ複素数ベクトルと同様に扱われます。
入力または係数が複素数のときに状態は複素数になる。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
コード生成では、
Numerator
プロパティとDenominator
プロパティのみが調整可能です。MATLAB コード生成における System object (MATLAB Coder)を参照してください。
バージョン履歴
R2012b で導入
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)