Open In App

Filtering After Unsampling in MATLAB Interpolation

Last Updated : 08 Dec, 2022
Comments
Improve
Suggest changes
Like Article
Like
Report

Upsampling with filtering gives the interpolated signal. The Upsampling process just adds zero-valued samples to the given input signal. There is no practical significance of zero-valued samples to obtain interpolated signals. Indeed these zero-valued samples should be converted into their approximate values based on previous and future samples present in the input signal. The work of conversion of zero-valued samples to approximate magnitude samples is being done by filtering.

So filtering is an important step to obtain Interpolated signal after Upsampling.

 

Example: 

Matlab
% MATLAB code to perform filtering 
% and obtaining Interpolated signal:
% 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
% 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(2,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(2,1,2); 
stem(m,output); 

% axis command specifies the limit of current axis
axis ([0 200 -1 1]); 
xlabel('samples'); 
ylabel('amplitude'); 

%Interpolated signal or Filtered signal
title('Interpolated signal'); 

Output:

 
 

Next Article
Article Tags :

Similar Reads