Main Content

decimate

Decimación: reducir la tasa de muestreo por un factor entero

Descripción

ejemplo

y = decimate(x,r) reduce la tasa de muestreo de x, la señal de entrada, por un factor de r. El vector diezmado, y, se acorta por un factor de r de modo que length(y) = ceil(length(x)/r). De forma predeterminada, decimate utiliza un filtro Chebyshev tipo I paso bajo de respuesta al impulso infinita (IIR) de orden 8.

ejemplo

y = decimate(x,r,n) utiliza un filtro Chebyshev de orden n.

y = decimate(x,r,'fir') utiliza un filtro de respuesta al impulso finita (FIR) diseñado utilizando el método de la ventana con una ventana de Hamming. El filtro tiene un orden de 30.

ejemplo

y = decimate(x,r,n,'fir') utiliza un filtro FIR de orden n.

Ejemplos

contraer todo

Cree una señal sinusoidal muestreada a 4 kHz. Diézmela por un factor de cuatro.

t = 0:1/4e3:1;
x = sin(2*pi*30*t) + sin(2*pi*60*t);
y = decimate(x,4);

Represente la señal original y la diezmada.

subplot(2,1,1)
stem(0:120,x(1:121),'filled','MarkerSize',3)
grid on
xlabel('Sample Number')
ylabel('Original')

subplot(2,1,2)
stem(0:30,y(1:31),'filled','MarkerSize',3)
grid on
xlabel('Sample Number')
ylabel('Decimated')

Figure contains 2 axes objects. Axes object 1 contains an object of type stem. Axes object 2 contains an object of type stem.

Cree una señal con dos sinusoides. Diézmela por un factor de 13 utilizando un filtro Chebyshev IIR de orden 5. Represente la señal original y la diezmada.

r = 13;
n = 16:365;
lx = length(n);
x = sin(2*pi*n/153) + cos(2*pi*n/127);

plot(0:lx-1,x,'o')
hold on
y = decimate(x,r,5);
stem(lx-1:-r:0,fliplr(y),'ro','filled','markersize',4)

legend('Original','Decimated','Location','south')
xlabel('Sample number')
ylabel('Signal')

Figure contains an axes object. The axes object contains 2 objects of type line, stem. These objects represent Original, Decimated.

La señal original y la diezmada tienen elementos finales coincidentes.

Cree una señal con dos sinusoides. Diézmela por un factor de 13 utilizando un filtro FIR de orden 82. Represente la señal original y la diezmada.

r = 13;
n = 16:365;
lx = length(n);
x = sin(2*pi*n/153) + cos(2*pi*n/127);

plot(0:lx-1,x,'o')
hold on
y = decimate(x,r,82,'fir');
stem(0:r:lx-1,y,'ro','filled','markersize',4)

legend('Original','Decimated','Location','south')
xlabel('Sample number')
ylabel('Signal')

Figure contains an axes object. The axes object contains 2 objects of type line, stem. These objects represent Original, Decimated.

La señal original y la diezmada tienen elementos iniciales coincidentes.

Argumentos de entrada

contraer todo

Señal de entrada, especificada como un vector.

Tipos de datos: double

Factor de decimación, especificado como un entero positivo. Para obtener mejores resultados cuando r sea mayor que 13, divida r en factores menores y llame a decimate varias veces.

Tipos de datos: double

Orden del filtro, especificado como un entero positivo. No se recomiendan los órdenes de filtro IIR por encima de 13 por su inestabilidad numérica. En esos casos, la función muestra una advertencia.

Tipos de datos: double

Argumentos de salida

contraer todo

Señal diezmada, devuelta como un vector.

Tipos de datos: double

Algoritmos

La decimación reduce la tasa de muestreo original de una secuencia a una tasa menor. Es lo contrario a la interpolación. decimate realiza un filtrado paso bajo de la entrada para proteger frente al solapamiento y submuestrea el resultado. La función utiliza los algoritmos de decimación 8.2 y 8.3 de [1].

  1. decimate crea un filtro paso bajo. El valor predeterminado es un filtro Chebyshev tipo I diseñado utilizando cheby1. Este filtro cuenta con una frecuencia de corte normalizada de 0.8/r y una ondulación de banda de paso de 0,05 dB. En algunos casos, el orden de filtro especificado produce distorsión de banda de paso debido a los errores de redondeo acumulados por las convoluciones necesarias para crear la función de transferencia. decimate reduce automáticamente el orden del filtro cuando la distorsión hace que la respuesta de magnitud a la frecuencia de corte difiera de la ondulación en más de 10–6.

    Cuando se escoge la opción 'fir', decimate utiliza fir1 para diseñar un filtro paso bajo FIR con frecuencia de corte 1/r.

  2. Cuando se utiliza el filtro FIR, decimate filtra la secuencia de entrada solo en una dirección. Esto conserva la memoria y resulta útil para trabajar con secuencias largas. En el caso del IIR, decimate aplica el filtro en dirección directa e inversa utilizando filtfilt para eliminar la distorsión de fase. En efecto, este proceso duplica el orden del filtro. En ambos casos, la función minimiza los efectos transitorios a ambos extremos de la señal mediante condiciones de punto final coincidentes.

  3. Por último, decimate remuestrea los datos seleccionando cada r-ésimo punto del interior de la señal filtrada. En la secuencia remuestreada (y), y(end) coincide con x(end) cuando se usa el filtro IIR y y(1) coincide con x(1) cuando se usa el filtro FIR.

Referencias

[1] Digital Signal Processing Committee of the IEEE® Acoustics, Speech, and Signal Processing Society, eds. Programs for Digital Signal Processing. New York: IEEE Press, 1979.

Historial de versiones

Introducido antes de R2006a

Consulte también

| | | | |