ドキュメンテーション

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

fvtool

フィルターの可視化ツールを開く

構文

fvtool(b,a)
fvtool(sos)
fvtool(d)
fvtool(b1,a1,b2,a2,...,bN,aN)
fvtool(sos1,sos2,...,sosN)
fvtool(Hd)
fvtool(Hd1,Hd2,...,HdN)
h = fvtool(...)

説明

fvtool(b,a) では、FVTool が開き、分子 b と分母 a で定義されるデジタル フィルターの振幅応答が表示されます。FVTool を使用すると、フィルターの位相応答、群遅延、インパルス応答、ステップ応答、極-零点プロット、係数を表示することができます。また、[ファイル][エクスポート] を使用して、表示されている応答をエクスポートすることもできます。

メモ

fvtool への入力が単精度の場合、振幅応答は単精度演算で計算されます。

fvtool(sos) では、FVTool が開き、2 次セクション型の L 行 6 列の行列で定義されるデジタル フィルターの振幅応答が表示されます。

sos=[b01b11b211a11a21b02b12b221a12a22b0Lb1Lb2L1a1La2L].

sos の行には、2 次セクション型 H(z) のカスケードの分子と分母の係数 bik および aik が含まれます。

H(z)=gk=1LHk(z)=gk=1Lb0k+b1kz1+b2kz21+a1kz1+a2kz2.

セクション数 L は 2 以上でなければなりません。セクション数が 2 未満の場合は、fvtool は入力を分子ベクトルと見なします。

fvtool(d) では、FVTool が開き、デジタル フィルター d の振幅応答が表示されます。d を周波数応答仕様に基づいて生成するには、関数 designfilt を使用します。

fvtool(b1,a1,b2,a2,...,bN,aN) では、FVTool が開き、分子 b1, …, bN と分母 a1, ..., aN で定義される複数のフィルターの振幅応答が表示されます。

fvtool(sos1,sos2,...,sosN) では、FVTool が開き、2 次セクション型行列 sos1, sos2, ..., sosN で定義される複数のフィルターの振幅応答が表示されます。

fvtool(Hd) では、FVTool が開き、dfilt フィルター オブジェクト Hd または dfilt フィルター オブジェクトの配列に対する振幅応答が表示されます。

fvtool(Hd1,Hd2,...,HdN) では、FVTool が開き、dfilt オブジェクト Hd1Hd2、...HdN のフィルターの振幅応答が表示されます。

DSP System Toolbox™ 製品がインストールされている場合は、以下の解析に fvtool(H)fvtool(H1,H2,...) を使用することもできます。

dsp.DigitalDownConverter および dsp.DigitalUpConverter の System object は FVTool をサポートします。これらの System object 上で FVTool を呼び出す場合は、'Arithmetic' 入力を FVTool に渡さなければなりません。

入力フィルターが dfilt オブジェクトの場合、フィルター オブジェクトの演算プロパティが 'fixed' に設定されていると、FVTool は固定小数点解析を実行します。ただし、フィルター System object の場合、fvtool(H,'Arithmetic',ARITH,...)HARITH 入力に指定された演算に基づいて解析します。

ARITH は、'double''single' または 'fixed' のいずれかにできます。'Arithmetic' 入力には、フィルター System object の解析にのみ関連しています。演算設定 ARITH は、FVTool に入力したすべてのフィルター System object に適用されます。'double' または 'single' を指定すると、この関数は倍精度または単精度の解析を実行します。'fixed' を指定すると、演算は CoefficientDataType プロパティおよび System object がロックされているかロック解除されているかに応じて変化します。

 固定小数点演算の詳細

非 CIC 構造に演算を指定せずに、System object がロック解除状態の場合、関数は倍精度演算を使用します。System object がロックされると、関数は、ロックされた入力データ型に基づいて解析を実行します。CIC 構造は、固定小数点演算のみをサポートします。

解析法 noisepsd および freqrespest は、fvtool 内では動作に制限があります。ルールを参照するには、これらの手法へのリンクをクリックします。

h = fvtool(...) では、Figure ハンドル h が返されます。このハンドルを使用して、コマンド ラインから FVTool を操作することができます。MATLAB コマンド ラインからの FVTool の制御を参照してください。

FVTool には次の 2 つのツール バーがあります。

  • MATLAB® のプロット編集ツール バーの拡張版。以下の表は FVTool 固有のツール バー アイコンの一覧です。

    アイコン

    説明

    既定の表示に戻す。既定の表示では、データ周囲のバッファー領域が表示され、重要なデータのみが表示されます。すべてのデータ値を表示する、標準の MATLAB プロットを使用して応答を表示するには、[表示][フルビュー] を使用します。

    凡例の表示/非表示

    グリッドの表示/非表示

    フィルター デザイナーへのリンク (FVTool がフィルター デザイナーから起動された場合にのみ表示)


    追加/置き換えモードの切り替え (FVTool がフィルター デザイナーから起動された場合にのみ表示)

  • 以下のアイコンをもつ [解析] ツール バー

    現在のフィルターの振幅応答。詳細は、freqz および zerophase を参照してください。

    ゼロ位相応答を表示するには、応答プロットの y 軸ラベルを右クリックし、コンテキスト メニューから [ゼロ位相] を選択します。

    現在のフィルターの位相応答。詳細は、phasez を参照してください。

    現在のフィルターの振幅応答と位相応答を重ねて表示。詳細は、freqz を参照してください。

    現在のフィルターの群遅延を表示。群遅延とは、周波数関数としてのフィルターの平均遅延です。詳細は、grpdelay を参照してください。

    現在のフィルターの位相遅延を表示。位相遅延は、フィルターによって入力信号の各要素に与えられる時間遅延です。詳細は、phasedelay を参照してください。

    現在のフィルターのインパルス応答。インパルス応答は、インパルス入力に対するフィルターの応答です。詳細は、impz を参照してください。

    現在のフィルターのステップ応答。ステップ応答は、ステップ入力に対するフィルターの応答です。詳細は、stepz を参照してください。

    極-零点プロット。z 平面上に現在のフィルターの極および零点の位置を表示します。詳細は、zplane を参照してください。

    現在のフィルターのフィルター係数。テキスト ボックス内のフィルター構造 (直接型、ラティスなど) によって異なります。SOS フィルターでは、各セクションが個別のフィルターとして表示されます。

    フィルターの詳細情報

フィルター デザイナーへのリンク

解析が表示されているときに、フィルター デザイナーアプリで [表示][フィルターの可視化ツール] またはツール バーの [フルビュー解析] ボタン を選択すると、現在のフィルターの FVTool が起動します。ツール バーの ボタンを使用して、フィルター デザイナーと FVTool を同期できます。フィルターに対してフィルター デザイナーで行われたすべての変更は、直ちに FVTool に反映されます。

ツール バーのトグル ボタン  /  には、2 つのリンク モードが用意されています。

  • [置換] ― FVTool に現在表示されているフィルターを削除し、新しいフィルターを挿入します。

  • [追加] ― FVTool に現在表示されているフィルターはそのままで、新しいフィルターを表示に追加します。

座標軸の変更

座標軸ラベルをマウスで右クリックするか、プロットを右クリックして [解析パラメーター] を選択することにより、x 軸または y 軸の単位を変更できます。座標軸の単位として使用できるオプションを次に示します。

プロットX 軸の単位Y 軸の単位

振幅

正規化周波数
線形周波数
振幅
振幅 (dB)
振幅の二乗
ゼロ位相

位相

正規化周波数
線形周波数
位相
連続位相
ラジアン

振幅と位相

正規化周波数
線形周波数

(左側の y 軸)

振幅
振幅 (dB)
振幅の二乗
ゼロ位相

(右側の y 軸)

位相
連続位相
ラジアン

群遅延

正規化周波数
線形周波数
サンプル
時間

位相遅延

正規化周波数
線形周波数
ラジアン

インパルス応答

サンプル
時間

振幅

ステップ応答

サンプル
時間

振幅

極-零点

実数部

虚数部

プロットの変更

任意のプロット編集ツール バー ボタンを使用して、プロットのプロパティを変更できます。

[解析パラメーター] は、表示される解析に適用するパラメーターです。これらのパラメーターを表示するには、プロット領域を右クリックし、メニューから [解析パラメーター] を選択します (このメニューは、[プロット編集] ボタンがアクティブでない場合にのみアクセスできます)。以下の解析パラメーターが表示されます。複数の応答が表示されている場合、パラメーターは表示されている各プロットに適用できます。すべてのプロット タイプに対して、これらの解析フィールドがすべて表示されるわけではありません。

  • 正規化周波数 — 選択されている場合、周波数は 0 ~ 1 の間で正規化され、選択されていない場合、周波数は Hz で表示されます。

  • 周波数スケールy 軸のスケール ([線形] または [対数])

  • 周波数範囲 — [周波数軸の範囲または周波数ベクトルの指定]

  • 点数 — 応答の計算に使用するサンプル点の数

  • 周波数ベクトル[周波数ベクトルの指定] が [周波数範囲] で選択されている場合は、プロットに使用するベクトル

  • 振幅表示y 軸の単位 (MagnitudeMagnitude (dB)Magnitude squared、または Zero-Phase)

  • 位相単位y 軸の単位 ([度] または [ラジアン])

  • 位相表示 — 位相プロットのタイプ ([位相] または [連続位相])

  • 群遅延単位y 軸の単位 ([サンプル] または [時間])

  • 長さの指定 — インパルス応答またはステップ応答の長さのタイプ ([既定] または [指定済み])

  • 長さ — インパルス応答またはステップ応答に使用する点の数

上記の解析パラメーターに加え、インパルス応答とステップ応答のプロット タイプを変更することもできます。このためには、右クリックしてメニューから [マーカー付きライン] を選択し、コンテキス トメニューから [ステム] または [ライン] のいずれかを選択します。x 軸ラベルを右クリックし、Samples または Time を選択すると、x 軸の単位を変更できます。

フィルター デザイナーまたは FVTool の起動時に使用する既定値として表示パラメーターを保存するには、[既定の設定として保存] をクリックします。

既定値を復元するには、[既定の設定に戻す] をクリックします。

データのヒントは、プロット内の特定の点に関する情報を表示します。データのヒントの詳細については、プロット データの対話型の確認 (MATLAB)を参照してください。

DSP System Toolbox ソフトウェアをお持ちの場合、FVTool には、ゲイン プロットで設計されたフィルターと共に仕様マスクを表示します。

メモ:

[表示][通過帯域] を使用するには、フィルターは fdesign またはフィルター デザイナーを使用して設計されたものでなければなりません。カスケード接続積分櫛形 (CIC) フィルターは、通常の通過帯域をもたないため、通過帯域ズーム機能は提供されていません。

応答の重ね合わせ

[解析][解析の重ね合わせ] を選択して使用可能な応答を選択すると、プロットに 2 つ目の応答を重ね合わせることができます。2 つ目の y 軸が応答プロットの右側に追加されます。[解析パラメーター] ダイアログ ボックスには、x 軸と y 軸の両方のパラメーターが表示されます。[解析パラメーター] ダイアログ ボックスのサンプルは、解析パラメーターの表示を参照してください。

MATLAB コマンド ラインからの FVTool の制御

FVTool のハンドルを取得したら、コマンド ラインから FVTool の一部を制御することができます。標準の Handle Graphics® のプロパティ (MATLAB ドキュメンテーションの「Handle Graphics」を参照) に加え、FVTool には以下のプロパティが用意されています。

  • 'Analysis' — 指定したタイプの解析プロットを表示します。次の表は、すべての解析タイプとそれらを呼び出す方法の一覧です。フィルター内部設定を使用する解析は、振幅応答推定と丸めノイズ パワーのみであることに注意してください。これらは、DSP System Toolbox でのみ提供されています。

    解析タイプ解析オプション

    振幅プロット

    'magnitude'

    位相プロット

    'phase'

    振幅と位相のプロット

    `freq'

    群遅延プロット

    'grpdelay'

    位相遅延プロット

    `phasedelay'

    インパルス応答プロット

    'impulse'

    ステップ応答プロット

    'step'

    極-零点プロット

    'polezero'

    フィルター係数

    'coefficients'

    フィルター情報

    'info'

    振幅応答推定

    (DSP System Toolbox 導入時のみ使用可能。詳細は freqrespest の項を参照)

    'magestimate'

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

    (DSP System Toolbox 導入時のみ使用可能。詳細は noisepsd の項を参照)

    'noisepower'

  • 'Grid' — グリッドの 'on' または 'off' を制御

  • 'Legend' — 凡例の 'on' または 'off' を制御

  • 'Fs' — FVTool のフィルターのサンプリング周波数を制御。サンプリング周波数ベクトルは、フィルター数と同じ長さかスカラー値でなければなりません。ベクトルの場合、各値が対応するフィルターに適用されます。スカラーの場合、同じ値がすべてのフィルターに適用されます。

  • SosViewSettings — (このオプションは DSP System Toolbox をインストールしている場合にのみ使用できます)。2 次セクション型フィルターでは、このオプションによってフィルターの表示方法が制御されます。SOSViewSettings プロパティにはオブジェクトが含まれるため、次の構文で設定しなければなりません。set(h.SOSViewSettings,'View',viewtype)。ここで、viewtype は、以下のいずれかです。

    • 'Complete' — フィルター全体の完全な応答を表示します。

    • 'Individual' — 各セクションの応答を個別に表示します。

    • 'Cumulative' — 各セクションとそれ以前のセクションの累積に対する応答を表示します。フィルターが 3 つのセクションを含む場合、最初のプロットはセクション 1 を、2 つ目のプロットは 1 つ目と 2 つ目のセクションの累積を、3 つ目のプロットは 3 つすべてのセクションの累積を表示します。

      さらに、セクションが分割される位置を決定する SecondaryScaling を使用するかどうかを定義できます。2 番目のスケーリング ポイントは、セクションの再帰部分と非再帰部分の間でスケーリングする位置を示します。既定値は false で、2 番目のスケーリングは使用されません。2 番目のスケーリングを使用するには、次の構文を使用します。set(h.SOSViewSettings,'View','Cumulative',true)

    • 'UserDefined' — 表示するセクションと、表示順序を定義できます。各セクションがインデックスによって表される cell 配列を入力します。インデックスを 1 つ入力した場合は、そのセクションのみがプロットされます。インデックスの範囲を入力した場合は、その範囲のセクションの応答の組み合わせがプロットされます。たとえば、フィルターが 4 つのセクションを含む場合、{1:4} と入力すると 4 つのすべてのセクションの応答が組み合わせてプロットされます。また、{1,2,3,4} と入力すると、各セクションの応答が個別にプロットされます。

メモ:

関数 set を使用して、コマンド ラインから FVTool の他のプロパティを変更できます。get(h) を使用して、プロパティのタグと、現在のプロパティ設定を表示できます。

FVTool ハンドルでは、以下のメソッドを使用することができます。

addfilter(h,filtobj) では、FVTool に新規フィルターが追加されます。新規フィルター filtobjdfilt フィルター オブジェクトでなければなりません。addfilter(h,filtobj,'Fs',10) を使用して、新規フィルターのサンプリング周波数を指定できます。

setfilter(h,filtobj) では、FVTool 内のフィルターが filtobj で指定されるフィルターに置き換えられます。サンプリング周波数は上記のように設定することができます。

deletefilter(h, index) では、FVTool cell 配列の index の位置でフィルターが削除されます。

legend(h,str1,str2,...) では、str1 をフィルター 1、str2 をフィルター 2 のように関連付けて、FVTool 内に凡例が作成されます。詳細は、MATLAB ドキュメンテーションの legend の項を参照してください。

すべて折りたたむ

6 次の楕円フィルターの振幅応答を表示します。通過帯域リップル 3 dB、阻止帯域の減衰量 50 dB、サンプルレート 1 kHz、正規化された通過帯域エッジ 300 Hz を指定します。コマンド ラインから FVTool を起動します。

[b,a] = ellip(6,3,50,300/500);
fvtool(b,a)

コマンド ラインから FVTool を起動して、複数の FIR フィルターを表示および解析します。

b1 = firpm(20,[0 0.4 0.5 1],[1 1 0 0]); 
b2 = firpm(40,[0 0.4 0.5 1],[1 1 0 0]); 
fvtool(b1,1,b2,1)

関連する解析パラメーターを表示します。

コマンド ラインから FVTool を起動します。6 次の楕円フィルターの振幅応答を表示します。通過帯域リップル 3 dB、阻止帯域の減衰量 50 dB、サンプルレート 1 kHz、正規化された通過帯域エッジ 300 Hz を指定します。

[b,a] = ellip(6,3,50,300/500);
h = fvtool(b,a);

フィルターの位相応答を表示します。

h.Analysis = 'phase';

プロットの凡例を有効にしてテキストを追加します。

legend(h,'Phase plot')

サンプルレートを 1 kHz に指定します。中央揃えの両側応答を表示します。

h.Fs = 1000;
h.FrequencyRange='[-Fs/2, Fs/2)';

プロットのすべてのプロパティを表示します。FVTool 固有のプロパティはリストの最後にあります。

get(h)
                     Grid: 'on'
                   Legend: 'on'
          AnalysisToolbar: 'on'
            FigureToolbar: 'on'
               DesignMask: 'off'
          SOSViewSettings: [1x1 dspopts.sosview]
                       Fs: 1000
                 Alphamap: [1x64 double]
          CloseRequestFcn: 'closereq'
                    Color: [0.9400 0.9400 0.9400]
                 Colormap: [64x3 double]
              CurrentAxes: [1x1 Axes]
         CurrentCharacter: ''
            CurrentObject: [0x0 GraphicsPlaceholder]
             CurrentPoint: [0 0]
             DockControls: 'on'
                 FileName: ''
            IntegerHandle: 'on'
           InvertHardcopy: 'on'
              KeyPressFcn: ''
            KeyReleaseFcn: ''
                  MenuBar: 'none'
                     Name: 'Filter Visualization Tool - Phase Response'
                 NextPlot: 'new'
              NumberTitle: 'on'
               PaperUnits: 'inches'
         PaperOrientation: 'portrait'
            PaperPosition: [1.3350 3.3150 5.8300 4.3700]
        PaperPositionMode: 'auto'
                PaperSize: [8.5000 11]
                PaperType: 'usletter'
                  Pointer: 'arrow'
        PointerShapeCData: [16x16 double]
      PointerShapeHotSpot: [1 1]
                 Position: [346.5000 282.5000 583 437]
                 Renderer: 'opengl'
             RendererMode: 'auto'
                   Resize: 'on'
                ResizeFcn: ''
            SelectionType: 'normal'
                  ToolBar: 'auto'
                     Type: 'figure'
                    Units: 'pixels'
      WindowButtonDownFcn: ''
    WindowButtonMotionFcn: ''
        WindowButtonUpFcn: ''
        WindowKeyPressFcn: ''
      WindowKeyReleaseFcn: ''
     WindowScrollWheelFcn: ''
              WindowStyle: 'normal'
             BeingDeleted: 'off'
            ButtonDownFcn: ''
                 Children: [15x1 Graphics]
                 Clipping: 'on'
                CreateFcn: ''
                DeleteFcn: ''
               BusyAction: 'queue'
         HandleVisibility: 'on'
                  HitTest: 'on'
            Interruptible: 'on'
                   Parent: [1x1 Root]
                 Selected: 'off'
       SelectionHighlight: 'on'
                      Tag: 'filtervisualizationtool'
            UIContextMenu: [0x0 GraphicsPlaceholder]
                 UserData: []
                  Visible: 'on'
        OverlayedAnalysis: ''
           FrequencyScale: 'Linear'
                 Analysis: 'phase'
           NumberofPoints: 8192
          FrequencyVector: [1x256 double]
           FrequencyRange: '[-Fs/2, Fs/2)'
             PhaseDisplay: 'Phase'
      NormalizedFrequency: 'off'
            ShowReference: 'on'
               PhaseUnits: 'Radians'
            PolyphaseView: 'off'

R2006a より前に導入