Thiran Allpass Interpolators
Given a desired delay
samples, an order
allpass filter


![$\displaystyle a_k=(-1)^k\left(\begin{array}{c} N \\ [2pt] k \end{array}\right)\prod_{n=0}^N\frac{\Delta-N+n}{\Delta-N+k+n},
\; k=0,1,2,\ldots,N
$](http://www.dsprelated.com/josimages_new/pasp/img1121.png)
![$\displaystyle \left(\begin{array}{c} N \\ [2pt] k \end{array}\right) = \frac{N!}{k!(N-k)!}
$](http://www.dsprelated.com/josimages_new/pasp/img1122.png)

without further scaling
- For sufficiently large
, stability is guaranteed
Rule of thumb: - It can be shown that the mean group delay of any stable
th-order allpass filter is
samples [449].5.7
- Only known closed-form case for allpass interpolators of arbitrary order
- Effective for delay-line interpolation needed for tuning since pitch perception is most acute at low frequencies.
- Since Thiran allpass filters have maximally flat group-delay at dc, like Lagrange FIR interpolation filters, they can be considered the recursive extension of Lagrange interpolation.
Thiran Allpass Interpolation in Matlab
function [A,B] = thiran(D,N) % [A,B] = thiran(D,N) % returns the order N Thiran allpass interpolation filter % for delay D (samples). A = zeros(1,N+1); for k=0:N Ak = 1; for n=0:N Ak = Ak * (D-N+n)/(D-N+k+n); end A(k+1) = (-1)^k * nchoosek(N,k) * Ak; end B = A(N+1:-1:1);
Group Delays of Thiran Allpass Interpolators
Figure shows a family of
group-delay curves for Thiran allpass interpolators, for orders 1, 2,
3, 5, 10, and 20. The desired group delay was equal to the order plus
0.3 samples (which is in the ``easy zone'' for an allpass
interpolator).
Next Section:
Windowed Sinc Interpolation
Previous Section:
Lagrange Interpolation