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.
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:
Publicación traducida automáticamente
Artículo escrito por abdulmalikpasha y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA