Filtrado después del desmuestreo en la interpolación de MATLAB

El sobremuestreo con filtrado da la señal interpolada. El proceso Upsampling simplemente agrega muestras de valor cero a la señal de entrada dada. No hay importancia práctica de muestras de valor cero para obtener señales interpoladas. De hecho, estas muestras de valor cero deben convertirse en sus valores aproximados en función de las muestras anteriores y futuras presentes en la señal de entrada. El trabajo de conversión de muestras de valor cero a muestras de magnitud aproximada se realiza mediante filtrado.

Por lo tanto, el filtrado es un paso importante para obtener una señal interpolada después del muestreo ascendente.

 

Ejemplo: 

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 form 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');

Producción:

 

 

Publicación traducida automáticamente

Artículo escrito por abdulmalikpasha y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *