主要内容

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);

[hp,f] = freqz(b,a);
[hd,fd] = freqz(d);

figure
plot(f/pi,mag2db(abs(hp)),fd/pi,mag2db(abs(hd)))
legend('Prony','Original')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Prony, Original.

输入参数

全部折叠

冲激响应,指定为向量。

示例: impz(fir1(20,0.5)) 指定一个 20 阶 FIR 滤波器的冲激响应,其归一化截止频率为 π/2 弧度/采样点。

数据类型: single | double
复数支持:

分子和分母阶数,指定为正整数标量。如果 h 的长度小于 max(bord,aord),则该函数用零填充冲激响应。

  • 如果您需要全极点传递函数,请将 bord 指定为 0

  • 如果您需要全零点传递函数,请将 aord 指定为 0

数据类型: single | double

输出参量

全部折叠

传递函数系数,以向量形式返回。b 的长度为 bord + 1a 的长度为 aord + 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++ 代码。

GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。

版本历史记录

在 R2006a 之前推出