Open In App

Interpolation in MATLAB

Last Updated : 16 Dec, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

Upsampling can be defined as a process that comprises adding zero-valued samples in between existing original samples in order to increase the sampling rate. Upsampling is also called zero-stuffing.

Interpolation:

Upsampling with Filtering is called Interpolation. Upsampling adds zero-valued samples and filtering replaces the zero-valued samples inserted by upsamplers with approximate non-zero values using some type of filtering. 

y(n) = {         x(n/l), n=0,+l or -l.+2l or -2l,+3l or -3l         0, Otherwise       }

 

Block diagram of Interpolation

 

 

Example: 

Matlab

% MATLAB code for interpolation
%clc is used to clear the command window
clc; 
clear all; 
% taking sampling frequency as input
% and storing in fs variable
fs=input('enter sampling frequency'); 
 
% taking frequency of the signal as input and storing in f 
f=input('enter frequency of signal'); 
 
% taking interpolation factor I as input and storing it in L
L=input('enter interpolation factor'); 
 
%defining time-axis 
t=0:1/fs:1; 
 
% generating a sinusoidal signal with
% a given frequency and time-axis tf
x=sin(2*pi*f*t); 
 
% storing length of axis x in N
N=length(x); 
 
% taking another axis ranging from 0 to N-1
n=0:N-1; 
 
% taking another axis ranging from 0 to N*L-1
m=0:(N*L)-1; 
 
% creating zeros in axis of length L*N
% and storing it in x1
x1=zeros(1,L*N); 
 
% taking another axis with a interpolation factor
% L from 0 to increasing with a factor L and upto N*L
j=1:L:N*L; 
 
% taking j values into x1 from x
x1(j)=x; 
 
% creating a window-based finite inpulse response filter design
% Syntax: b = fir1(n,Wn,'ftype')
% n is number of samples ranging from 0
% to N-1, Wn is normalized frequency ranging from
% 0 to 1,'ftype' specifies a filter type
f1=fir1(34,0.48,'low'); 
 
% filtfilt command provides zero-phase digital filtering by
% processing input data x in both forward and reverse directions
% Syntax: y=filtfilt(b,a,x);
% b,a specifies the filter order
% x is input data
output=2*filtfilt(f1,1,x1); 
 
% Syntax: y=interp(x,r);
% the above command specifies increasing the sampling
% rate of signal x by a factor of r.
y=interp(x,L); 
 
% subplot command in MATLAB allows you to insert
% multiple plots in a grid where all
% plots are specified in same grid
subplot(3,1,1); 
 
% stem command is to plot discrete signal
stem(n,x); 
 
% xlabel shows name of x axis in a plot
xlabel('samples'); 
 
% ylabel shows name of y axis in a plot
ylabel('amplitude'); 
 
% title is shown at the top of figure 
% title is usually used to specify the name 
% of your figure
title('Input signal'); 
subplot(3,1,2); 
stem(m,output); 
 
% axis command specifies the limit of current axis
axis ([0 200 -1 1]); 
xlabel('samples'); 
ylabel('amplitude'); 
title('Interpolated signal'); 
subplot(3,1,3); 
stem(m,y); 
axis ([0 200 -1 1]); 
xlabel('samples'); 
ylabel('amplitude'); 
title('Interpolated signal using inbuilt command');

                    

Output:

Input signal

 

Interpolated signal

 

Interpolated signal using inbuilt command

 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads