# Sinc Interpolation Examples

### Matlab code for sinc interpolation

function y = sinc_interp(x,u)
m = 0:length(x)-1;
for i=1:length(u)
y(i) = sum(x.*sinc(m- u(i)));
end

## Example 1

The function is the sequence x[n] = n a^n u[n].

a = 0.9;
N = 64;
n = 0:N-1;
x = n.*a.^n;

### Sampled values

plot(n,x);

### Magnitude of Fourier transform

The function is essentially band-limited

y = fft(x);
k= 0:N/2;
plot(k/N,abs(y(1:N/2+1)));

### Interpolations

The black curve is the Matlab `interp`

method. The blue curve is
sinc interpolation. The circles are sample values.

s = linspace(0,63,512);
x2 = sinc_interp(x,s);
plot(s(1:256),x2(1:256));
hold
xi = interp1(n,x,s);
plot(s(1:256),xi(1:256),'k');
plot(n(1:N/2),x(1:N/2),'o');
hold off

The first half of the data is shown.

### Interpolation difference

The following shows the difference between the two interpolation methods.

plot(s,xi-x2);
ylabel('difference');
xlabel('duration');

## Example 2

The function is the sequence x[n] = a^n u[n].

a = 0.9;
N = 64;
n = 0:N-1;
x = a.^n;

### Sampled values

### Magnitude of Fourier transform

Not exactly band-limited

### Interpolations

The black curve is the Matlab `interp`

method. The blue curve is
sinc interpolation. The circles are sample values.

### Interpolation difference

## Conclusion

sinc interpolation is seldom optimal. It almost always exhibits ringing, sometimes severely.

Maintained by John
Loomis, last updated *26 Oct 2005 *