Open In App

Filtering After Unsampling in MATLAB Interpolation

Last Updated : 08 Dec, 2022
Improve
Improve
Like Article
Like
Save
Share
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:

 

 



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

Similar Reads