Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

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 フィルターを使用して信号をフィルター処理するには、次のようにします。

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

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

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

作成

説明

iir = dsp.IIRFilter は、指定された IIR フィルター実装を使用して時間の経過に伴って入力の各チャネルを個別にフィルターする無限インパルス応答 (IIR) フィルター System object を作成します。

iir = dsp.IIRFilter(Name,Value) は、指定の各プロパティが指定の値に設定された IIR フィルター オブジェクトを作成します。各プロパティ名を一重引用符で囲みます。

例: iir = dsp.IIRFilter('Structure','Direct form I');

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 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.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' に設定した場合にのみ適用されます。

使用法

説明

iirOut = iir(input) は指定されたフィルターを使用して入力信号をフィルター処理して、フィルター処理された出力を生成します。System object は、時間の経過に沿って入力信号の各列を個別にフィルター処理します。

入力引数

すべて展開する

フィルター処理されるデータ入力。ベクトルまたは行列として指定します。

例: randn(34,24)

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

出力引数

すべて展開する

フィルター処理された出力。ベクトルまたは行列として返されます。出力のサイズ、データ型、実数/複素数は入力と一致します。

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

オブジェクト関数

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

release(obj)

すべて展開する

freqzフィルターの周波数応答
fvtoolVisualize frequency response of DSP filters
impz離散時間フィルター System object のインパルス応答
phasezPhase response of discrete-time filter System object (unwrapped)
stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

このオブジェクトがサポートしているフィルター解析法のリストについては、MATLAB® コマンド プロンプトに「dsp.IIRFilter.helpFilterAnalysis」と入力します。対応する関数リファレンス ページについては、Analysis Methods for Filter System Objects を参照してください。

すべて折りたたむ

ローパス バタワース 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 の場合、0.4×44100/2 つまり 8.82 kHz になります。

fvtool(iir,'Fs',Sine1.SampleRate)

Spectrum Analyzer を使用して、入力信号と出力信号のパワー スペクトルを表示します。

sa = dsp.SpectrumAnalyzer('SampleRate',Sine1.SampleRate,'NumInputPorts',2,...
    'PlotAsTwoSidedSpectrum',false,...
    'OverlapPercent',80,'PowerUnits','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

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)

拡張機能

参考

関数

オブジェクト

R2012b で導入