Main Content


Prony method for filter design



[b,a] = prony(h,bord,aord) returns the numerator and denominator coefficients for a causal rational transfer function with impulse response h, numerator order bord, and denominator order aord.


collapse all

Fit a 4th-order IIR model to the impulse response of a lowpass filter. Plot the original and Prony-designed impulse responses.

d = designfilt('lowpassiir','NumeratorOrder',4,'DenominatorOrder',4, ...

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

title 'Impulse Response with Prony Design'

title 'Input Impulse Response'

Fit a 10th-order FIR model to the impulse response of a highpass filter. Plot the original and Prony-designed frequency responses. The responses match to high precision.

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


Input Arguments

collapse all

Impulse response, specified as a vector.

Example: impz(fir1(20,0.5)) specifies the impulse response of a 20th-order FIR filter with normalized cutoff frequency π/2 rad/sample.

Data Types: single | double
Complex Number Support: Yes

Numerator and denominator orders, specified as positive integer scalars. If the length of h is less than max(bord,aord), the function pads the impulse response with zeros.

  • If you want an all-pole transfer function, specify bord as 0.

  • If you want an all-zero transfer function, specify aord as 0.

Data Types: single | double

Output Arguments

collapse all

Transfer function coefficients, returned as vectors. b has length bord + 1 and a has length aord + 1.

More About

collapse all

Transfer Function

The transfer function is the Z-transform of the impulse response h[n]:


A rational transfer function is a ratio of polynomials in z–1. This equation describes a causal rational transfer function of numerator order q and denominator order p:


where a[0] = 1.


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

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced before R2006a