Main Content

dsp.FIRFilter

静的または時変 FIR フィルター

説明

dsp.FIRFilter System object™ は、静的または時変 FIR フィルターの実装を使用して入力の各チャネルをフィルター処理します。

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

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

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

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

この System object は、特定の状況下で SIMD コード生成もサポートします。詳細は、コード生成を参照してください。

作成

説明

fir = dsp.FIRFilter は、指定された FIR フィルターの実装を使用して時間の経過に伴って入力の各チャネルを個別にフィルター処理する有限インパルス応答 (FIR) フィルター オブジェクト fir を作成します。

fir = dsp.FIRFilter(num) は、Numerator プロパティが num に設定された FIR フィルター System object fir を返します。

fir = dsp.FIRFilter(Name,Value) は、各プロパティが指定の値に設定された FIR フィルター System object fir を返します。

プロパティ

すべて展開する

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

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

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

フィルター構造を指定します。フィルター構造を Direct formDirect form symmetricDirect form antisymmetricDirect form transposedLattice MA のいずれかとして指定することができます。

フィルター係数のソースに Property または Input port を指定します。Input port を指定すると、フィルター オブジェクトはフレームごとに 1 回時変フィルターを更新します。

依存関係

これは、StructureDirect formDirect form symmetricDirect form antisymmetricDirect form transposed に設定した場合に適用されます。

ラティス フィルター係数のソースに Property または Input port を指定します。Input port を指定すると、フィルター オブジェクトはフレームごとに 1 回時変フィルターを更新します。

依存関係

これは、StructureLattice MA に設定した場合に適用されます。

フィルター係数に、実数または複素数の数値行ベクトルを指定します。

調整可能: Yes

依存関係

このプロパティは、NumeratorSource プロパティを Property に、Structureプロパティを Direct formDirect form symmetricDirect form antisymmetric または Direct form transposed に設定した場合に適用されます。

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

ラティス フィルターの反射係数に、実数または複素数の数値行ベクトルを指定します。

調整可能: Yes

依存関係

このプロパティは、Structureプロパティを Lattice MA に、ReflectionCoefficientsSource プロパティを Property に設定した場合に適用されます。

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

フィルター状態の初期条件を指定します。状態または遅延要素の数は、反射係数の数 (ラティス構造の場合) またはフィルター係数の数から 1 を引いた数 (ラティス構造以外の直接型構造の場合) に等しくなります。

初期条件はスカラー、ベクトルまたは行列として指定できます。スカラー値を指定すると、FIR フィルター オブジェクトはフィルターのすべての遅延要素をその値に初期化します。フィルターの遅延要素数に等しい長さのベクトルを指定すると、各ベクトル要素は対応する遅延要素に一意の初期条件を指定します。オブジェクトは初期条件の同じベクトルを入力信号の各チャネルに適用します。

フィルターの入力チャネル数と遅延要素数の積に等しい長さのベクトルを指定すると、各要素は対応するチャネルの対応する遅延要素に一意の初期条件を指定します。

フィルターの遅延要素数と同数の行と入力信号の各チャネルに対応する列をもつ行列を指定すると、各要素は対応するチャネルの対応する遅延要素に一意の初期条件を指定します。

調整可能: Yes

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

固定小数点プロパティ

完全精度規則を使用するかどうかを指定します。FullPrecisionOverride を既定の true に設定すると、オブジェクトは、完全精度規則を使用してすべての内部演算と出力データ型を計算します。これらの規則は、最も正確な固定長数値を提供します。また、他の固定長プロパティは個別には適用されないため、それらの表示はオフにされます。これらの規則は、オブジェクト内で量子化が発生しないことを保証します。必要に応じてビットが追加されて、丸めやオーバーフローが発生しないことを確実にします。FullPrecisionOverridefalse に設定した場合、固定長データ型は個別の固定長プロパティ設定によって制御されます。詳細は、Full Precision for Fixed-Point System Objectsを参照してください。

丸め方法を指定します。

依存関係

このプロパティは、オブジェクトが完全精度モードでない場合にのみ適用されます。

オーバーフロー アクションを Wrap または Saturate として指定します。

依存関係

このプロパティは、オブジェクトが完全精度モードでない場合にのみ適用されます。

係数の固定小数点データ型を Same word length as input または Custom として指定します。

依存関係

このプロパティは、NumeratorSource プロパティを Property に設定した場合に適用されます。

係数の固定小数点型を符号付きまたは符号なしの numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティは、CoefficientsDataType プロパティを Custom に設定した場合に適用されます。

反射係数の固定小数点データ型を Same word length as input または Custom として指定します。

依存関係

このプロパティは、ReflectionCoefficientsSource プロパティを Property に設定した場合に適用されます。

反射係数の固定小数点型を符号付きまたは符号なしの numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティは、ReflectionCoefficientsDataType プロパティを Custom に設定した場合に適用されます。

乗算の固定小数点データ型を Full precisionSame as input または Custom として指定します。

乗算の固定小数点型を符号付きまたは符号なしでスケーリングされた numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティは、ProductDataType プロパティを Custom に設定した場合に適用されます。

アキュムレータの固定小数点データ型を Full precisionSame as inputSame as product または Custom に指定します。

アキュムレータの固定小数点型を符号付きまたは符号なしでスケーリングされた numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティは、AccumulatorDataType プロパティを Custom に設定した場合に適用されます。

状態の固定小数点データ型を Same as inputSame as accumulator または Custom のいずれかとして指定します。

依存関係

このプロパティは、直接型フィルター構造と直接型 I フィルター構造のいずれにも適用されません。

状態の固定小数点型を符号付きまたは符号なしでスケーリングされた numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティは、StateDataType プロパティを Custom に設定した場合に適用されます。

出力の固定小数点データ型を Same as inputSame as accumulator または Custom のいずれかとして指定します。

出力の固定小数点型を符号付きまたは符号なしでスケーリングされた numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティは、OutputDataTypeプロパティを Custom に設定した場合に適用されます。

使用法

説明

y = fir(x) は、実数または複素数の入力信号 x に FIR フィルターを適用して出力 y を作成します。

y = fir(x,coeff) は時変係数 coeff を使用して入力信号 x をフィルター処理し、出力 y を作成します。このオプションは、NumeratorSource または ReflectionCoefficientsSource プロパティを Input port に設定した場合に使用できます。

入力引数

すべて展開する

データ入力。ベクトルまたは行列として指定します。入力データが固定小数点型の場合、構造が Direct form symmetric または Direct form antisymmetric に設定されている場合には符号付きでなければなりません。FIR フィルター オブジェクトは、オブジェクトへの連続する呼び出しで入力信号の各チャネルを個別に処理します。

この System object は可変サイズの入力をサポートします。

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

時変フィルター係数。行ベクトルとして指定します。データ入力と係数入力は同じデータ型でなければなりません。

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

出力引数

すべて展開する

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

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

オブジェクト関数

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

release(obj)

すべて展開する

freqz離散時間フィルター System object の周波数応答
fvtoolDSP フィルターの周波数応答の可視化
impz離散時間フィルター System object のインパルス応答
infoInformation about filter System object
coeffsフィルター System object 係数を構造に返します。
costEstimate cost of implementing filter System object
grpdelay離散時間フィルター System object の群遅延応答
generatehdlGenerate HDL code for quantized DSP filter (requires Filter Design HDL Coder)
stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

FIR フィルターを使用し、2 つの正弦波成分をもつ波形にローパス フィルターを適用します。

 t = (0:1000)'/8e3;
 xin = sin(2*pi*0.3e3*t)+sin(2*pi*3e3*t);
 
 sr = dsp.SignalSource;
 sr.Signal = xin;
 sink = dsp.SignalSink;

 fir = dsp.FIRFilter(fir1(10,0.5));

sa = spectrumAnalyzer(...
    'SampleRate',8e3,...
    'Method','welch',...
    'PlotAsTwoSidedSpectrum',false,...
    'OverlapPercent',80,...
    'SpectrumUnits','dBW',...
    'YLimits',[-150 -10]);

 while ~isDone(sr)
      input = sr();
      filteredOutput = fir(input);
      sink(filteredOutput);
      sa(filteredOutput)
 end

 filteredResult = sink.Buffer;
 fvtool(fir,'Fs',8000)

{"String":"Figure Figure 1: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB) contains an object of type line.","Tex":"Magnitude Response (dB)","LaTex":[]}

System object として FIR フィルターを設計します。

N = 10;  
Fc = 0.4;
B = fir1(N,Fc);
fir1 = dsp.FIRFilter(B);
fvtool(fir1)

{"String":"Figure Figure 2: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB) contains an object of type line.","Tex":"Magnitude Response (dB)","LaTex":[]}

これは、コンストラクターとして fdesign を使用し、design を使用してフィルターを設計することでも実現できます。

N = 10;  
Fc = 0.4;
specLowpass = fdesign.lowpass('N,Fc',...
    N,Fc);
fir2 = design(specLowpass,...
    'systemobject',true)
fir2 = 
  dsp.FIRFilter with properties:

            Structure: 'Direct form'
      NumeratorSource: 'Property'
            Numerator: [-1.2414e-18 -0.0126 -0.0247 0.0635 0.2748 0.3981 ... ]
    InitialConditions: 0

  Show all properties

fvtool(fir2);

{"String":"Figure Figure 3: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB) contains 2 objects of type line.","Tex":"Magnitude Response (dB)","LaTex":[]}

アルゴリズム

このオブジェクトは、Discrete FIR Filter (Simulink) ブロックのリファレンス ページで説明されているアルゴリズム、入力、および出力を実装しています。オブジェクト プロパティはブロック パラメーターに対応します。

拡張機能

バージョン履歴

R2012a で導入