Main Content

プロセス フロー図とフィルター設計法

メモ

fdesigndesign を使用するには、少なくとも Signal Processing Toolbox™ がインストールされていなければなりません。以下で紹介する機能の中には、DSP System Toolbox™ ライセンスをもっていない場合、使用できないものがあります。DSP System Toolbox は、フィルターの仕様、設計、解析のための機能を大幅に拡張するものです。ツールボックスは、コマンド プロンプトで「ver」と入力することにより確認できます。

プロセス フロー図の検討

下に示すプロセス フロー図は、フィルター設計プロセスのステップと順番を示しています。

フィルター設計プロセスの最初の 4 ステップは、仕様オブジェクトのフィルター処理に関連するもので、最後の 2 ステップは実装オブジェクトに関連します。これらのオブジェクトについては、以下の節で詳しく説明します。ステップ 5 のフィルターの設計は、フィルターの仕様オブジェクトから実装オブジェクトへの遷移ステップです。分析および検証のステップはオプションです。このステップでは、フィルターの設計者に対し、フィルターがすべての設計基準を確実に満たすような設計法が提供されます。この検証の結果により、ステップ 3 と 4 に戻って他のアルゴリズムを選択するか、現在のアルゴリズムをカスタマイズすることができます。また、設計したフィルターで入力データをフィルター処理 (ステップ 7) した後でも、ステップ 3 または 4 に戻ってフィルターを調整するか、変更することができます。

図には、各ステップに対するヘルプ コマンドを示してあります。MATLAB® コマンド プロンプトでヘルプ行を入力すると、手順の説明を表示したり、特定のステップに対するドキュメンテーションへのリンクが表示されます。すべてのステップを明示的に実行する必要はありません。たとえば、ステップ 1 からステップ 5 に直接進み、省略した 3 つのステップはソフトウェアによって実行することができます。

以下に、上記の各ステップを詳細に説明します。

応答の選択

以下のように入力する場合:

help fdesign/responses
MATLAB コマンド プロンプトで、使用可能なすべてのフィルター応答の一覧が表示されます。アスタリスク付きの応答を使用するには、DSP System Toolbox が必要です。

フィルターを初期化するためには応答を選択する必要があります。この例では、次のように入力して、バンドパス フィルター仕様オブジェクトを作成します。

d = fdesign.bandpass

Specification の選択

変数 specification は、特定のフィルターに対する設計パラメーターの配列です。Specification は、仕様オブジェクトのプロパティです。

メモ

Specification と仕様オブジェクトは同じものではありません。仕様オブジェクトには、specification がプロパティの 1 つとして含まれています。

フィルター応答を選択する際には、さまざまの異なった Specification を使用できます。各 Specification は、異なる組み合わせの設計パラメーターを含みます。フィルターの仕様オブジェクトを作成した後で、その応答に対して使用可能な Specification をクエリできます。アスタリスク付きの Specification では、DSP System Toolbox が必要です。

d = fdesign.bandpass;
set(d,'specification')
ans = 

    'Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2'
    'N,F3dB1,F3dB2'
    'N,F3dB1,F3dB2,Ap'
    'N,F3dB1,F3dB2,Ast'
    'N,F3dB1,F3dB2,Ast1,Ap,Ast2'
    'N,F3dB1,F3dB2,BWp'
    'N,F3dB1,F3dB2,BWst'
    'N,Fc1,Fc2'
    'N,Fp1,Fp2,Ap'
    'N,Fp1,Fp2,Ast1,Ap,Ast2'
    'N,Fst1,Fp1,Fp2,Fst2'
    'N,Fst1,Fp1,Fp2,Fst2,Ap'
    'N,Fst1,Fst2,Ast'
    'Nb,Na,Fst1,Fp1,Fp2,Fst2'
d = fdesign.arbmag;
set(d,'specification')
ans = 

    'N,F,A'
    'N,B,F,A'

以下に示すように、set コマンドは使用可能な Specification を選択するために使用できます。

d = fdesign.lowpass;
set(d,'specification', 'N,Fc')
このステップを明示的に行わない場合、fdesign応答の選択で選択した応答に既定の Specification を返し、それに含まれるすべての設計パラメーターに対する既定値が与えられます。

アルゴリズムの選択

使用できるアルゴリズムは、選択したフィルター応答、設計パラメーター、DSP System Toolbox を使用できるかどうかにより異なります。つまり、同じローパス フィルターでも、Specification を変更すると使用可能なアルゴリズムが変化します。以下の例では、ローパス フィルターおよび 'N, Fc' の Specification に対し、使用可能なアルゴリズムは window 1 つのみです。

set (d, 'specification', 'N,Fc')
designmethods (d) %step3: get available algorithms
Design Methods for class fdesign.lowpass (N,Fc):


window
ただし、'Fp,Fst,Ap,Ast' の Specification に対しては、数多くのアルゴリズムが使用できます。Signal Processing Toolbox のみがインストールされている場合は、以下のアルゴリズムが使用可能です。
set(d,'specification','Fp,Fst,Ap,Ast')
designmethods(d)
Design Methods for class fdesign.lowpass (Fp,Fst,Ap,Ast):

butter
cheby1
cheby2
ellip
equiripple
kaiserwin
さらに DSP System Toolbox がインストールされている場合は、この応答と Specification に対して使用可能なアルゴリズムの数は増加します。
set(d,'specification','Fp,Fst,Ap,Ast')
designmethods(d)
Design Methods for class fdesign.lowpass (Fp,Fst,Ap,Ast):

butter
cheby1
cheby2
ellip
equiripple
ifir
kaiserwin
multistage
特定のアルゴリズムを選択し、関数 design (DSP System Toolbox) を使用して、フィルターを実装します。
Hd=design(d,'butter');
前述のコードは実際にフィルターを作成します。このステップを明示的に行わない場合、関数 design (DSP System Toolbox) により、選択した応答と Specification に対して最適のアルゴリズムが自動的に選択されます。

アルゴリズムのカスタマイズ

任意のアルゴリズムについて使用可能なカスタマイズ オプションは、アルゴリズムの選択で選択したアルゴリズム自体だけでなく、Specification の選択で選択した Specification にも依存します。使用可能なすべてのオプションを調べるには、MATLAB コマンド プロンプトで以下のように入力します。

help(d,'algorithm-name')
ここで、d はフィルター仕様オブジェクト、algorithm-name'butter''cheby1'のような一重引用符で囲んだアルゴリズム名です。

これらのカスタマイズ オプションの適用はフィルターの設計で行われます。これらのオプションはフィルターの仕様オブジェクトではなく、実装オブジェクトのプロパティであるためです。

このステップを明示的に行わない場合は、最適なアルゴリズムが選択されます。

フィルターの設計

フィルターを作成するために、design コマンドを使用します。

Hd = design(d);
ここで、d は仕様オブジェクトです。このコードでは、アルゴリズムを指定せずにフィルターが作成されます。アルゴリズムが指定されていない場合は、MATLAB によって最適なアルゴリズムが選択されます。

アルゴリズムの選択で選択したアルゴリズムを適用するには、同じ design コマンドを使用しますが、次のようにバタワース アルゴリズムを指定します。

Hd = design(d,'butter');
ヘルプを表示し、使用可能なすべてのオプションを調べるには、以下を入力します。
help fdesign/design
このヘルプ コマンドは、design コマンドのオプションだけでなく、手法やアルゴリズムに関連するオプションについても説明するものです。アルゴリズムをカスタマイズする場合は、これらのオプションをこのステップで適用します。以下の例では、バンドパス フィルターを設計してフィルター構造を変更します。
Hd = design(d,'butter','FilterStructure','df2sos')
Hd =

         FilterStructure: 'Direct-Form II, Second-Order Sections'
              Arithmetic: 'double'                               
               sosMatrix: [13x6 double]                          
             ScaleValues: [14x1 double]                          
     OptimizeScaleValues: true                                   
        PersistentMemory: false

フィルター設計のステップは、応答を選択した最初の作業のように、明示的に行われる必要があります。フィルターは design が呼び出されたときのみ作成されます。

設計の解析

フィルターを設計した後で、フィルターが設計基準を満たすかどうかを判断するために解析を行うことができます。フィルターの解析は、次の 3 つのセクションに分割されます。

  • 周波数領域解析 — 振幅応答、群遅延、および極-零点プロットを含む

  • 時間領域解析 — インパルス応答とステップ応答を含む

  • 実装解析 — 量子化ノイズとコストを含む

離散時間フィルターの解析のヘルプを表示するには、以下を入力します。

>> help dfilt/analysis
Farrow フィルターの解析のヘルプを表示するには、以下を入力します。
>> help farrow/functions
フィルターを解析するには、このステップを明示的に行わなければなりません。

フィルターの入力データへの実現または適用

フィルターを設計および最適化したら、実際の入力データのフィルター処理に使用できます。基本的なフィルター コマンドは、入力データ x を受け取り、フィルター オブジェクトによってフィルター処理を行い、出力 y を生成します。

>> y = filter (FilterObj, x)
このステップは、自動的に行われることはありません。データをフィルター処理するには、このステップを明示的に行う必要があります。フィルター処理コマンドの動作を理解するために、以下を入力します。
>> help dfilt/filter

メモ

Simulink® をおもちの場合は、realizemdl コマンドを使用してこのフィルターを Simulink ブロックにエクスポートすることもできます。このコマンドのヘルプを表示するには、以下を入力します。

>> help realizemdl