Filtering After Unsampling in MATLAB Interpolation
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: