Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

fvtool

DSP フィルターの周波数応答の可視化

説明

fvtool(sysobj) は、フィルター System object™ の振幅応答を表示します。

fvtool(sysobj,options) は、オプションで指定された応答を表示します。

たとえば、FIR フィルター System object のインパルス応答を可視化するには、options'impulse' に設定します。

Fs = 96e3; filtSpecs = fdesign.lowpass(20e3,22.05e3,1,80,Fs);
    firlp2 = design(filtSpecs,'equiripple','SystemObject',true);
fvtool(firlp2,'impulse');

fvtool(____,Name,Value) は、指定の各プロパティが指定の値に設定されたフィルターの応答を可視化します。

その他の入力オプションについては、Signal Processing Toolbox™ の FVTool を参照してください。

すべて折りたたむ

44.1 kHz でサンプリングされるデータに対する、2 つのローパス ハーフバンド間引きフィルターを作成します。最初のフィルターの設計法が "Equiripple" に設定され、2 番目のフィルターが "Kaiser" に設定されます。

出力データ レートは入力サンプル レートの 1/2、つまり 22.05 kHz です。フィルター次数を 52 に設定し、4.1 kHz の遷移幅を指定します。

Fs = 44.1e3; 
filterspec = "Filter order and transition width";
Order = 52;
TW = 4.1e3; 
firhalfbanddecimEqui = dsp.FIRHalfbandDecimator(...
    Specification=filterspec,...
    FilterOrder=Order,...
    TransitionWidth=TW,...
    DesignMethod="Equiripple",...
    SampleRate=Fs);
firhalfbanddecimKaiser = dsp.FIRHalfbandDecimator(...
    Specification=filterspec,...
    FilterOrder=Order,...
    TransitionWidth=TW,...
    DesignMethod="Kaiser",...
    SampleRate=Fs);

両方のフィルターのインパルス応答をプロットします。ゼロ次係数は、26 サンプル分遅延されます。これは、フィルターの群遅延と等価です。これにより、因果性ハーフバンド フィルターになります。

hfvt = fvtool(firhalfbanddecimEqui,firhalfbanddecimKaiser,...
    Analysis="impulse");
legend(hfvt,{'Equiripple','Kaiser'})

Figure Impulse Response contains an axes object. The axes object with title Impulse Response contains 2 objects of type stem. These objects represent Equiripple, Kaiser.

その振幅応答と位相応答を表示します。

フィルター仕様が厳しい場合 (フィルター次数が非常に高く、遷移幅が非常に狭い場合など)、"Kaiser" 法を使用して設計したフィルターはより効果的に収束します。

hvftMag = fvtool(firhalfbanddecimEqui,firhalfbanddecimKaiser,...
    Analysis="Magnitude");
legend(hvftMag,{'Equiripple','Kaiser'})

Figure Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB) contains 3 objects of type line. These objects represent Equiripple, Kaiser.

hvftPhase = fvtool(firhalfbanddecimEqui,firhalfbanddecimKaiser,...
    Analysis="Phase");
legend(hvftPhase,{'Equiripple','Kaiser'})

Figure Phase Response contains an axes object. The axes object with title Phase Response contains 2 objects of type line. These objects represent Equiripple, Kaiser.

44.1 kHz でサンプリングされるデータに対する、最小次数の FIR ローパス フィルターを作成します。8 kHz の通過帯域周波数、12 kHz の阻止帯域周波数、0.1 dB の通過帯域リップル、80 dB の阻止帯域の減衰量を指定します。

Fs = 44.1e3; 
filtertype = 'FIR';
Fpass = 8e3;
Fstop = 12e3; 
Rp = 0.1;
Astop = 80;
FIRLPF = dsp.LowpassFilter('SampleRate',Fs, ...
                             'FilterType',filtertype, ...
                             'PassbandFrequency',Fpass, ...
                             'StopbandFrequency',Fstop, ...
                             'PassbandRipple',Rp, ...
                             'StopbandAttenuation',Astop);

FIR ローパス フィルターと同じプロパティを設定した、最小次数の IIR ローパス フィルター設計します。複製したフィルターの FilterType プロパティを IIR に変更します。

IIRLPF = clone(FIRLPF);
IIRLPF.FilterType = 'IIR';

FIR ローパス フィルターのインパルス応答をプロットします。ゼロ次係数は、19 サンプル分遅延されます。これは、フィルターの群遅延と等価です。FIR ローパス フィルターは因果性 FIR フィルターです。

fvtool(FIRLPF,'Analysis','impulse')

Figure Impulse Response contains an axes object. The axes object with title Impulse Response contains an object of type stem.

IIR ローパス フィルターのインパルス応答をプロットします。

fvtool(IIRLPF,'Analysis','impulse')

Figure Impulse Response contains an axes object. The axes object with title Impulse Response contains an object of type stem.

FIR ローパス フィルターの振幅および位相応答をプロットします。

fvtool(FIRLPF,'Analysis','freq')

Figure Magnitude Response (dB) and Phase Response contains an axes object. The axes object with title Magnitude Response (dB) and Phase Response contains an object of type line.

IIR ローパス フィルターの振幅および位相応答をプロットします。

fvtool(IIRLPF,'Analysis','freq')

Figure Magnitude Response (dB) and Phase Response contains an axes object. The axes object with title Magnitude Response (dB) and Phase Response contains an object of type line.

FIR ローパス フィルターの実装コストを計算します。

cost(FIRLPF)
ans = struct with fields:
                  NumCoefficients: 39
                        NumStates: 38
    MultiplicationsPerInputSample: 39
          AdditionsPerInputSample: 38

IIR ローパス フィルターの実装コストを計算します。IIR フィルターのほうが FIR フィルターよりも効率的な実装になります。

cost(IIRLPF)
ans = struct with fields:
                  NumCoefficients: 18
                        NumStates: 14
    MultiplicationsPerInputSample: 18
          AdditionsPerInputSample: 14

FIR ローパス フィルターの群遅延を計算します。

grpdelay(FIRLPF)

Figure Group delay contains an axes object. The axes object with title Group delay contains an object of type line.

IIR ローパス フィルターの群遅延を計算します。FIR フィルターの群遅延は一定 (線形位相) である一方、IIR の群遅延は一定ではありません。

grpdelay(IIRLPF)

Figure Group delay contains an axes object. The axes object with title Group delay contains an object of type line.

入力引数

すべて折りたたむ

フィルター解析オプション。次のいずれかとして指定します。

  • 'magnitude' –– 振幅応答

  • 'phase' –– 位相応答

  • 'freq' –– 周波数応答

  • 'grpdelay' –– 群遅延

  • 'phasedelay' –– 位相遅延

  • 'impulse' –– インパルス応答

  • 'step' –– ステップ応答

  • 'polezero' –– 極/零点プロット

  • 'coefficients' –– 係数ベクトル

  • 'info' –– フィルター情報

  • 'magestimate' –– 振幅応答推定

  • 'noisepower' –– ノイズ パワー スペクトルの丸め誤差

例: fvtool(firFilt,'freq')

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みました。

例: firFilt = dsp.FIRFilter('Numerator', fir1(130, 2000/(8000/2))); fvtool(firFilt,'Arithmetic','single')

サンプリング レート。スカラーとして指定します。この値により、fvtool がチャネライザーのフィルターの周波数応答を表示するナイキスト区間 [-Fs/2 Fs/2] が決まります。

データ型: single | double

解析で使用する演算を指定します。演算入力が指定されず、フィルター System object がロック解除状態の場合、解析ツールは倍精度フィルターであると仮定します。'Arithmetic' プロパティを 'Fixed' に設定した場合、固定小数点プロパティをもつフィルター System object のみに適用されます。

'Arithmetic' プロパティを 'Fixed' に設定すると、倍精度の参照フィルターと、フィルターの量子化されたバージョンが両方ともツールに表示されます。フィルターの量子化されたバージョンの作成には、次の 2 つを除くすべての解析オプションにおいて、それぞれのフィルター System object の CoefficientsDataType プロパティが使用されます。

  • 'magestimate' –– 振幅応答推定

  • 'noisepower' –– ノイズ パワー スペクトルの丸め誤差

この 2 つの解析オプションでは、フィルターの量子化されたバージョンを解析する際に、すべて固定小数点の設定が使用されます。

バージョン履歴

R2006a より前に導入