Main Content

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

prony

Prony 法によるフィルター設計

説明

[b,a] = prony(h,bord,aord) からは、インパルス応答が h、分子次数が bord、分母次数が aord である因果性有理伝達関数の分子係数と分母係数が返されます。

すべて折りたたむ

ローパス フィルターのインパルス応答に、4 次の IIR モデルを近似させます。元のインパルス応答と Prony 法で設計したインパルス応答をプロットします。

d = designfilt('lowpassiir','NumeratorOrder',4,'DenominatorOrder',4, ...
    'HalfPowerFrequency',0.2,'DesignMethod','butter');

h = filter(d,[1 zeros(1,31)]);
bord = 4;
aord = 4;
[b,a] = prony(h,bord,aord);

subplot(2,1,1) 
stem(impz(b,a,length(h)))
title 'Impulse Response with Prony Design'

subplot(2,1,2)
stem(h)
title 'Input Impulse Response'

Figure contains 2 axes objects. Axes object 1 with title Impulse Response with Prony Design contains an object of type stem. Axes object 2 with title Input Impulse Response contains an object of type stem.

ハイパス フィルターのインパルス応答に、10 次の FIR モデルを近似させます。元の周波数応答と Prony 法で設計した周波数応答をプロットします。応答は高精度で一致します。

d = designfilt('highpassfir','FilterOrder',10,'CutoffFrequency',0.8);

h = filter(d,[1 zeros(1,31)]);
bord = 10;
aord = 0;
[b,a] = prony(h,bord,aord);

fvt = fvtool(b,a,d);
legend(fvt,'Prony','Original')

Figure Figure 1: Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB), xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Magnitude (dB) contains 2 objects of type line. These objects represent Prony, Original.

入力引数

すべて折りたたむ

インパルス応答。ベクトルとして指定します。

例: impz(fir1(20,0.5)) では、正規化されたカットオフ周波数 π/2 ラジアン/サンプルをもつ 20 次の FIR フィルターのインパルス応答を指定します。

データ型: single | double
複素数のサポート: あり

分子と分母の次数。正の整数スカラーとして指定します。h の長さが max(bord,aord) 未満の場合、この関数はインパルス応答をゼロでパディングします。

  • 全極伝達関数が必要な場合は、bord0 として指定します。

  • 全零伝達関数が必要な場合は、aord0 として指定します。

データ型: single | double

出力引数

すべて折りたたむ

伝達関数の係数。ベクトルとして返されます。b の長さは bord + 1a の長さは aord + 1 になります。

詳細

すべて折りたたむ

伝達関数

"伝達関数" とはインパルス応答 h[n] の Z 変換です。

H(z)=n=h(n)zn.

"有理伝達関数" とは z–1 における多項式の比です。以下の方程式は、分子次数が q で、分母次数が p の因果性有理伝達関数を表したものです。

H(z)=B(z)A(z)=k=0qb(k)zk1+l=1pa(l)zl,

ここで、a[0] = 1 となります。

参照

[1] Parks, Thomas W., and C. Sidney Burrus. Digital Filter Design. New York, NY, USA: Wiley-Interscience, 1987.

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2006a より前に導入