Interpolación en MATLAB

El sobremuestreo se puede definir como un proceso que consiste en agregar muestras de valor cero entre las muestras originales existentes para aumentar la tasa de muestreo. El sobremuestreo también se denomina relleno cero.

Interpolación:

El sobremuestreo con filtrado se denomina interpolación. El muestreo ascendente agrega muestras de valor cero y el filtrado reemplaza las muestras de valor cero insertadas por los muestreadores ascendentes con valores aproximados distintos de cero utilizando algún tipo de filtrado. 

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

 

Block diagram of Interpolation

 

 

Ejemplo: 

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

Producción:

Input signal

 

Interpolated signal

 

Interpolated signal using inbuilt command

 

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 *