ドキュメンテーション

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

prony

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

構文

[Num,Den] = prony(impulse_resp,num_ord,denom_ord)

説明

[Num,Den] = prony(impulse_resp,num_ord,denom_ord) からは、インパルス応答が impulse_resp である因果性有理システム関数の係数の分子 Num と分母 Den が返されます。システム関数では、分子の次数が num_ord、分母の次数が denom_ord となります。NumDen の長さは、num_ord+1 および denom_ord+1 となります。impulse_resp の長さが大きい方の次数 (num_ord または denom_ord) よりも小さい場合、impulse_resp には 0 が付加されます。全極のシステム関数に対しては、num_ord に 0 を入力します。全零点のシステム関数に対しては、denom_ord に 0 を入力します。

すべて折りたたむ

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

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

impulse_resp = filter(d,[1 zeros(1,31)]);
denom_order = 4;
num_order = 4;
[Num,Den] = prony(impulse_resp,num_order,denom_order);

subplot(2,1,1) 
stem(impz(Num,Den,length(impulse_resp)))
title 'Impulse Response with Prony Design'

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

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

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

impulse_resp = filter(d,[1 zeros(1,31)]);
num_order = 10;
denom_order = 0;
[Num,Den] = prony(impulse_resp,num_order,denom_order);

fvt = fvtool(Num,Den,d);
legend(fvt,'Prony','Original')

詳細

すべて折りたたむ

システム関数

"システム関数" とはインパルス応答 h[n] の z 変換です。

H(z)=n=h[n]zn

A "有理システム関数" とは z–1 における多項式の比です。慣例により、分子の多項式は B(z)、分母の多項式は A(z) と記述されます。以下の方程式は、分子次数が q で、分母次数が p の因果性有理システム関数を表したものです。

H(z)=k=0qb[k]zk1+l=1pa[l]zl

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

参照

Parks, Thomas W., and C. Sidney Burrus. Digital Filter Design.New York: John Wiley & Sons, 1987, pp 226–228.

R2006a より前に導入