# Interpolation Tutorials

## Introduction

Interpolation, also known as upsampling in the case of Digital Signal Processing, is a process that provides an approximation of the signal that would have been obtained if it had been sampled at a higher sample rate.

Before continuing with this tutorial for further reading for understanding Interpolation read the following resources:

## Installing GNURadio

If running on a Ubuntu or Debian distribution of Linux use the following command for installation:

```sudo apt-get install gnuradio
```

For other OS's follow the instructions from this guide.

## Interpolation of a Sinusoidal Wave with GNURadio

In GNURadio on your computer implement the following flow chart to obtain the following FFT and Scope Plots:

Next add a Interpolation FIR Filter with an Interpolation of 3 as seen below:

Verify that the Scope and FFT plots are:

The waveforms can be seen with 3 zeros inserted from the Interpolation FIR Filter between every sampled point. Next apply a Low Pass Filter as seen below to smooth out the waveform.

Verify that the smoothed out signal plots resemble:

## Interpolation of a .WAV File with GNURadio

For the following download the .WAV File and listen to the audio file. Then set up the following flowgraph in GNURadio:

Go back to the original .WAV File and listen to the audio. Then listen to the output file and notice the difference and effects of upsampling an audio sample.

## Interpolation of a Sinusoidal Wave with Octave

To start off make a simple sine wave

```signal = sin(2*pi*3.*[0:.01:1]);
plot(signal);
```

Then continue by entering

```signal_zeropadded = [signal;zeros(3,length(signal))];
signal_zeropadded = signal_zeropadded(:);
pkg load signal
b = fir1(10,.12);
signal_interpolated=filter(b,1,signal_zeropadded);
plot(signal_interpolated)
```

## Interpolation of a .WAV File with Octave

To start off with interpolation of a wav file download the island.wav file in the files attached below and load up Octave. Enter the following afterwards:

```[signal, fs] = auload("island.wav");
signal_zeropadded = [signal;zeros(3,length(fs))];
signal_zeropadded = signal_zeropadded(:);
pkg load signal
b = fir1(10,.12);
signal_interpolated = filter(b,1,signal_zeropadded);
plot(signal_interpolated)
```

The plot should look like

Then to save the interpolated signal as a .WAV file with the following command

```wavwrite(signal_interpolated, 'islands.wav');
```

## Troubleshooting

### Audio Package

If your receive an error stating that you don't have the audio package in Octave you will need to install the following package.

```sudo octave
pkg install -forge audio
```

If this tells you to install liboctave-dev, in a different terminal enter

```sudo apt-get install liboctave-dev
```

then retry the above steps for package installation.

To verify that you have the package installed you can enter

```pkg list
```

and should see the following

The audio package uses external software to play and record audio. The following should be sufficient.

```sudo apt-get install sox
```

### Signal Package

If you receive the following error

you will need to install the signal package.

To install the signal package you will need to use the following commands

```sudo octave
pkg install -forge signal
```

If you receive the following error:

you will need to install the control package with the command

```pkg install -forge control
```

Then redo the package installation for the signal package.

Last modified on 08/04/15 15:50:36

### Attachments (18)

Download all attachments as: .zip