Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

dfilt

離散時間フィルター

構文

Hd = dfilt.structure(input1,...)

説明

Hd = dfilt.structure(input1,...) では、structure タイプの離散時間フィルター Hd が返されます。各構造は、1 つ以上の入力を受け入れます。入力なしで dfilt.structure を指定すると、既定のフィルターが作成されます。

メモ

dfilt には structure を使用しなければなりません。

Hd = [dfilt.structure(input1,...),dfilt.structure(input1,...),...] では、dfilt フィルターを含むベクトルが返されます。

構造

dfilt オブジェクトで使用可能な構造を以下に示します。block メソッドのターゲット ブロックはフィルター構造によって異なります。ターゲット ブロックによっては、DSP System Toolbox™ ソフトウェアが必要になることがあります。

dfilt.structure

説明

realizemdl における係数マッピングのサポート

block メソッド用のターゲット フィルター ブロック

dfilt.delay

遅延

サポートなし

Delay

DSP System Toolbox が必要

dfilt.df1

直接型 I

サポートあり

Discrete Filter

dfilt.df1sos

直接型 I、2 次セクション

サポートあり

Discrete Filter

DSP System Toolbox が必要

dfilt.df1t

直接型 I 転置

サポートあり

Discrete Filter

dfilt.df1tsos

直接型 I 転置構成、2 次セクション

サポートあり

Biquad Filter

DSP System Toolbox が必要

dfilt.df2

直接型 II

サポートあり

Discrete Filter

dfilt.df2sos

直接型 II、2 次セクション

サポートあり

Discrete Filter

dfilt.df2t

直接型 II 転置

サポートあり

Discrete Filter

dfilt.df2tsos

直接型 II 転置構成、2 次セクション

サポートあり

Biquad Filter

DSP System Toolbox が必要

dfilt.dffir

直接型 FIR

サポートあり

Discrete FIR Filter

dfilt.dffirt

直接型 FIR 転置

サポートあり

Discrete FIR Filter

dfilt.dfsymfir

直接型対称 FIR

サポートあり

Discrete FIR Filter

dfilt.dfasymfir

直接型反対称 FIR

サポートあり

Discrete FIR Filter

dfilt.fftfir

オーバーラップ加算 FIR

サポートなし

Overlap-Add FFT Filter

DSP System Toolbox が必要

dfilt.latticeallpass

ラティス オールパス

サポートあり

サポートなし

dfilt.latticear

ラティス自己回帰 (AR)

サポートあり

Allpole Filter

DSP System Toolbox が必要

dfilt.latticearma

ラティス自己回帰移動平均 (ARMA)

サポートあり

サポートなし

dfilt.latticemamax

最大位相ラティス移動平均 (MA)

サポートあり

サポートなし

dfilt.latticemamin

最小位相ラティス移動平均 (MA)

サポートあり

Discrete FIR Filter

dfilt.statespace

状態空間

サポートあり

サポートなし

dfilt.scalar

スカラー ゲイン オブジェクト

サポートあり

Gain

DSP System Toolbox が必要

dfilt.cascade

直列配列フィルター

サポートあり

ターゲット ブロックは直列されているフィルター構造によって異なる

dfilt.parallel

並列配列フィルター

サポートあり

ターゲット ブロックは並列システム内のフィルター構造によって異なる

各構造の詳細については、MATLAB® プロンプトで構文 help dfilt.structure を使用するか、各構造のリファレンス ページを参照してください。

メソッド

メソッドでは、フィルター パラメーターを再度指定せずに、dfilt オブジェクトに対して関数を直接実行する方法が提供されます。これらのメソッドは、dfilt オブジェクトに割り当てた変数に直接適用できます。

たとえば、Hd という dfilt オブジェクトを作成した場合、islinphase(Hd) を使用してこのオブジェクトが線形位相であるかどうかをチェックしたり、fvtool(Hd) を使用して周波数応答プロットを表示したり、h=freqz(Hd) を使用して周波数応答値を求めることができます。以下に示すメソッドはすべて、このように使用することができます。

メモ

変数が dfilt フィルター オブジェクトの 1 次元配列である場合、メソッドは配列内の各オブジェクトに適用されます。配列に適用できるのは、freqzgrpdelayimpzis*、order、および stepz の各メソッドのみです。zplane メソッドは、出力なしで使用する場合にのみ配列に適用できます。

以下のメソッドの中には、Signal Processing Toolbox™ の関数と同じ名前をもち、動作も似ているものがあります。これは、関数の "オーバーロード" と呼ばれます。

使用可能な手法は以下のとおりです。

メソッド

説明

addstage

cascade オブジェクトまたは parallel オブジェクトにステージを追加します。ステージとは、独立したモジュラー フィルターです。dfilt.cascade および dfilt.parallel を参照してください。

block

block(Hd) では、dfilt オブジェクトの Simulink® フィルター ブロックが作成されます。ターゲット フィルター ブロックはフィルター構造によって異なります。このメソッドを使用するには、Simulink が必要です。さらに、フィルター構造によっては DSP System Toolbox が必要になることがあります。ターゲット ブロックとフィルター構造とのマッピングについては、構造を参照してください。

block メソッドでは、以下のプロパティ/値を指定できます。

'MapCoeffstoPorts' では、生成ブロックに接続された定数ブロックに、フィルター係数をマッピングするかどうかを指定します。既定値は 'off' です。'MapCoeffstoPorts''on' に設定するとマッピングが有効になり、定数ブロックのパラメーター名を定義する 'CoeffNames' プロパティを使用できるようになります。'CoeffNames' は cell 配列です。既定値は、直接型 FIR フィルターでは {'Num'}、ラティス フィルターでは {'K'}、IIR フィルターでは {'Num','Den'}、双二次フィルターでは {Num','Den','g'} です。'CoeffNames' で定義される変数は、MATLAB ワークスペースで作成され、フィルターの 'Arithmetic' プロパティと同じデータ型をもちます。同じ名前をもつ既存の変数は上書きされます。'Link2Obj' または 'MapCoeffstoPorts' のいずれかを使用することはできますが、両方を同時に使うことはできません。

'InputProcessing' では、サンプルベースの処理 'elementsaschannels'、フレームベースの処理 'columnsaschannels'、または 'inherited' が指定されます。既定値はフレームベースの処理です。DSP System Toolbox ソフトウェアをお持ちでない場合は、ランタイムエラーを回避するため、明示的に 'InputProcessing' プロパティを 'elementsaschannels' に設定してください。'InputProcessing''inherited' に設定すると、構造に関係なく Digital Filter ブロックがターゲットになります。

cascade

2 つの dfilt オブジェクトの直列結合を返します。dfilt.cascade を参照してください。

coeffs

フィルター係数を、元の dfilt 内のものと同じプロパティ名を使用するフィールドを含む構造に返します。

convert

dfilt オブジェクトのフィルター構造を、別のフィルター構造に変換します。

fcfwrite

フィルター係数を ASCII ファイルに書き込みます。ファイルには、単一のフィルター、またはオブジェクトのベクトルを含めることができます。既定のファイル名は untitled.fcf です。

fcfwrite(Hd,filename) では、現在の作業ディレクトリに filename という名前のディスク ファイルを書き込みます。拡張子 .fcf は自動的に追加されます。

fcfwrite(...,fmt) では、係数を fmt 形式で書き込みます。fmt は、以下のいずれかになります。

'hex': 16 進数

'dec': 10 進数

'bin': バイナリ表現

fftcoeffs

dfilt.fftfir でのフィルター処理で使用する周波数領域係数が返されます。

filter

dfilt オブジェクトを使用して、フィルター処理を行います。

y = filter(Hd,x) では、Hd フィルターを使用して x をフィルター処理し、結果のデータを y に返します。初期条件の使用方法は、フィルター状態の使用を参照してください。x が行列の場合、各列が個別のチャネルとしてフィルターされます。x が多次元配列の場合は、filter は大きさが 1 でない最初の次元に適用されます。

y = filter(Hd,x,dim) は、次元 dim に沿って動作します。x がベクトルまたは行列であり、dim が 1 の場合、x のすべての列はチャネルとなります。dim が 2 の場合は、すべての行がチャネルとなります。

firtype

タイプ (1-4) の線形位相 FIR フィルターが返されます。

freqz

FVTool に周波数応答をプロットします。関数 freqz とは異なり、この dfilt freqz メソッドの既定の長さは 8192 です。

grpdelay

FVTool に群遅延をプロットします。

impz

FVTool にインパルス応答をプロットします。

impzlength

インパルス応答の長さを返します。

info

フィルター構造、長さ、安定性、線形位相、および該当する場合はラティス長やラダー長など、dfilt に関する概要情報を表示します。設計法やオプションなどの詳細情報を表示するには、info(Hd, 'long') を使用します。既定の表示は 'short' です。多段フィルター (cascade および parallel) では、info(Hd.Stage(x)) が使用されます。ここで、x は、情報を表示するステージの番号です。

isallpass

dfilt オブジェクトにオールパス フィルターが含まれている場合は logical 1 を、含まれていない場合は logical 0 を返します。

iscascade

dfilt オブジェクトがカスケードに結合されている場合は logical 1 を、そうでない場合は logical 0 を返します。

isfir

dfilt オブジェクトに有限インパルス応答 (FIR) が含まれている場合は logical 1 を、そうでない場合は logical 0 を返します。

islinphase

dfilt オブジェクトが線形位相の場合は logical 1 を、そうでない場合は logical 0 を返します。

ismaxphase

dfilt オブジェクトが最大位相の場合は logical 1 を、そうでない場合は logical 0 を返します。

isminphase

dfilt オブジェクトが最小位相の場合は logical 1 を、そうでない場合は logical 0 を返します。

isparallel

dfilt オブジェクトが並列ステージをもつ場合は logical 1 を、そうでない場合は logical 0 を返します。

isreal

dfilt オブジェクトに実数値係数が含まれている場合は logical 1 を、そうでない場合は logical 0 を返します。

isscalar

dfilt オブジェクトがスカラーである場合は logical 1 を、そうでない場合は logical 0 を返します。

issos

dfilt オブジェクトに 2 次セクションが含まれている場合は logical 1 を、そうでない場合は logical 0 を返します。

isstable

dfilt オブジェクトが安定な場合は logical 1 を、そうでない場合は logical 0 を返します。

nsections

2 次セクション フィルターのセクション数が返されます。多段フィルターに複数のセクションをもつステージが含まれる場合、nsections ではすべてのステージ内のセクションの総数が返されます (セクションが 1 つのステージでは 1 が返されます)。

nstages

フィルターのステージ数が返されます。ステージは独立のモジュラー フィルターです。

nstates

オブジェクトの状態数を返します。

order

フィルターの次数を返します。Hd が単一のステージからなるフィルターの場合、次数は、フィルターの最小実現に必要な遅延数により与えられます。Hd が複数のステージからなる場合、次数は、フィルター全体の最小の実現に必要な遅延数により与えられます。

parallel

2 つのdfilt フィルターの並列結合を返します。dfilt.parallel を参照してください。

phasez

FVTool に位相応答をプロットします。

realizemdl

(Simulink 導入時のみ使用可能)

realizemdl(Hd) では、Subsystem ブロックとして実現された dfilt オブジェクトを含む Simulink モデルが作成されます。

realizemdl(Hd,p1,v1,p2,v2,...) では、指定したプロパティ (p1p2、...)、および値 (v1v2、...) を使用してブロックが作成されます。

以下のプロパティを使用できます。

'Blockname' は、ブロック名を指定します。既定値は 'Filter' です。

'Destination' は、現在の Simulink モデルにブロックを追加するか、新しいモデルを作成するか、モデル内の既存のサブシステムにブロックを配置するかを指定します。有効な値は 'current''new'、またはモデルにある既存のサブシステムの名前です。既定値は 'current' です。

'OverwriteBlock' は、realizemdl で作成された既存のブロックを上書きするか、新しいブロックを作成するかを指定します。有効な値は、'on''off' で、既定値は 'off' です。上書きされるのは realizemdl で作成されたブロックのみであることに注意してください。

以下のプロパティでは、ブロックの構造が最適化されます。値を 'on' に指定すると最適化機能がオンになり、値を 'off' に指定すると、最適化を行わずにブロックが作成されます。以下の各プロパティの既定値は 'on' です。

'OptimizeZeros' では、ゼロ ゲイン ブロックが削除されます。

'OptimizeOnes' では、1 のゲインのブロックが直接接続で置き換えられます。

'OptimizeNegOnes' では、1 の負のゲインのブロックが、最も近い Sum ブロックにおける符号変化で置き換えられます。

'OptimizeDelayChains' は、Delay ブロックをカスケードに結合したものが、適切な遅延を設定した単一の Integer Delay ブロックに置き換えられます。

removestage

カスケードまたは並列の dfilt からステージを削除します。dfilt.cascade および dfilt.parallel を参照してください。

setstage

カスケードまたは並列の dfilt のステージを上書きします。dfilt.cascade および dfilt.parallel を参照してください。

sos

dfilt を 2 次セクション dfilt に変換します。Hd が 1 つのセクションからなる場合は、同じクラスのフィルターが返されます。

sos(Hd,flag) では、2 次セクションの順序を指定します。flag='UP' の場合、第 1 行には原点に最も近い極が含まれ、最後の行には単位円に最も近い極が含まれます。flag='down' の場合、セクションの順序は逆になります。零点は常に最も近い極との組み合わせになります。

sos(Hd,flag,scale) では、すべての 2 次セクションのゲインのスケーリングと分子係数を指定します。scale が取り得る値は、'none''inf' (無限大ノルム)、または 'two' (2 ノルム) のいずれかです。スケーリングを無限大ノルムにし、順序を up にすると、実現時のオーバーフローの確率が最小限に抑えられます。スケーリングを 2 ノルムにし、順序を down にすると、ピークの丸めノイズが最小限に抑えられます。

ss

dfilt を状態空間に変換します。状態空間モデルの個々の A,B,C,D 行列を表示するには、[A,B,C,D]=ss(Hd) を使用します。

stepz

FVTool にステップ応答をプロットします。

stepz(Hd,n) では、ステップ応答の最初の n 個のサンプルが計算されます。

stepz(Hd,n,Fs) では、T = 1/Fs により時間サンプルが分離されます。ただし、Fs の単位は Hz です。

sysobj

dfilt をフィルター System object に変換します。サポートされているオブジェクトの一覧は、リファレンス ページを参照してください。このメソッドを使用するには、DSP System Toolbox ソフトウェアをインストールしなければなりません。

tf

dfilt を伝達関数に変換します。

zerophase

FVTool にゼロ位相応答をプロットします。

zpk

dfilt を零点-極-ゲイン形式に変換します。

zplane

FVTool に極-零点プロットをプロットします。

各メソッドの詳細については、MATLAB プロンプトから構文 help dfilt/method を使用してください。

プロパティの表示

ほかのオブジェクトと同様に、get を使って dfilt のプロパティを表示できます。特定のプロパティを表示するには、以下を使用します。

 get(Hd,'property') 

オブジェクトのすべてのプロパティを表示するには、以下を使用します。

get(Hd)

プロパティの変更

特定のプロパティを設定するには、以下を使用します。

set(Hd,'property1',value,'property2',value,...) 

プロパティ名は必ず一重引用符で囲んでください。

別の方法として、Object.property を使用してプロパティ値の取得や設定ができます。

b = [0.05 0.9 0.05];
Hd = dfilt.dffir(b);
% Lowpass direct-form I FIR filter
Hd.arithmetic % get arithmetic property
% returns double
Hd.arithmetic = 'single';
% Set arithmetic property to single precision

オブジェクトのコピー

オブジェクトのコピーを作成するには、copy メソッドを使用します。

H2 = copy(Hd)

メモ

構文 H2 = Hd を使用すると、オブジェクト ハンドルのみがコピーされ、新規オブジェクトは作成されません。

フィルター構造の変換

dfilt オブジェクト Hd のフィルター構造を変更するには、以下を使用します。

Hd2=convert(Hd,'structure_name');

ここで、structure_name には、任意の有効な構造名を一重引用符で囲んで使用できます。Hdcascade または parallel 構造の場合は、各ステージが新しい構造に変換されます。

フィルター状態の使用

次の 2 つのプロパティによって、フィルター状態が制御されます。

  • states — 現在のフィルター状態を格納します。フィルターを適用する前は、states は初期条件に一致し、フィルターの適用後は states は最終条件に一致します。df1df1tdf1sos、および df1tsos 構造では、states によって filtstate オブジェクトが返されます。

  • PersistentMemory — フィルター states を保存するかどうかを制御します。既定値は 'false' で、初期条件がフィルター処理前にゼロにリセットされ、states 情報の表示がオフになります。PersistentMemory'true' に設定すると、フィルターで初期条件を使用したり、前のフィルター処理の最終条件を次のフィルター処理の初期条件として再利用することができます。また、states フィルターに関する情報も表示されます。

    メモ

    states を設定してフィルター処理に使用する場合、フィルターを使用する前に PersistentMemory'true' に設定しなければなりません。

直接型 I のフィルターを作成し、メソッドを使用してこのフィルターが安定しているかどうかをチェックします。

[b,a] = butter(8,0.25);
Hd = dfilt.df1(b,a)

dfilt の分子の値が 1 行に収まらない場合は、ベクトルの説明が表示されます。この場合に特定の分子の値を表示するには、次のようにします。

get(Hd,'numerator')

または

Hd.numerator

各構造のリファレンス ページにはこの他の例が記載されています。

バージョン履歴

R2006a より前に導入

参考

アプリ

関数