[[TOC(DSP/Interpolation*, depth=3)]] = 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.[[BR]] Before continuing with this tutorial for further reading for understanding Interpolation read the following resources: * [http://dspguru.com/dsp/faqs/multirate/interpolation DSPGuru - Interpolation] * [http://en.wikipedia.org/wiki/Upsampling Wiki - Upsampling] == Materials Required == * [http://www.orbit-lab.org/userManagement/register Orbit Account] * Installation of GNURadio * Reservation on Orbit Lab * WAV File == 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 [http://gnuradio.org/redmine/projects/gnuradio/wiki/InstallingGR 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: [[Image(img1.png,650px)]] [[Image(img2.png, 500px)]][[Image(img3.png, 500px)]] Next add a Interpolation FIR Filter with an Interpolation of 3 as seen below: [[Image(img4.png,650px)]] [[BR]] Verify that the Scope and FFT plots are: [[Image(img5.png, 500px)]][[Image(img6.png, 500px)]] 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. [[Image(img7.png, 650px)]] Verify that the smoothed out signal plots resemble: [[Image(img8.png, 500px)]][[Image(img9.png, 500px)]] == 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: [[Image(img10.png, 650px)]] 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); }}} [[Image(sine.png, 500px)]] 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) }}} [[Image(sine_interpolated.png, 500px)]] == 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 [[Image(sig_interpolated.png, 500px)]] 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 [[Image(pkglist.png, 500px)]] 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 [[Image(fir1_err.png, 500px)]] 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: [[Image(signal_err.png, 500px)]] you will need to install the control package with the command {{{ pkg install -forge control }}} Then redo the package installation for the signal package.