Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Remuestreo de señales muestreadas uniformemente

Este ejemplo muestra cómo remuestrear una señal muestreada uniformemente a una nueva velocidad uniforme. Muestra cómo reducir el impacto de los transitorios grandes, así como cómo eliminar el contenido de alta frecuencia no deseado.

Conversión de tasas por un factor racional

La función realiza la conversión de velocidad de una frecuencia de muestreo a otra. le permite subir la muestra por un factor integral, y posteriormente diezmar por otro factor integral, .resampleresamplepq De esta manera puede remuestrear a un múltiplo racional ( / ) de la frecuencia de muestreo original.pq

Para utilizar la función en muestras uniformes, debe proporcionar tanto el numerador como el denominador de este factor racional.resample Para determinar los enteros que necesita, puede utilizar la función.rat

Aquí está un ejemplo de cómo llamar al convertir de 48 kHz a 44.1 kHz:rat

originalFs = 48000; desiredFs = 44100;  [p,q] = rat(desiredFs / originalFs)
p = 147 
q = 160 

indica que puede subir la muestra en 147 y diezmar en 160.rat Para verificar que esto produce la tasa deseada, multiplique / por la frecuencia de muestreo original:pq

originalFs * p / q
ans = 44100 

Una vez que tenga la relación entre las frecuencias de muestreo nuevas y originales, puede llamar a .resample

Por ejemplo, cree una onda sinusoidal de 10 milisegundos de largo y 500 Hz utilizando la frecuencia de muestreo original de 48 kHz y conviértala en 44,1 kHz:

tEnd = 0.01; Tx = 0:1/originalFs:tEnd; f = 500; x = sin(2*pi*f*Tx);  y = resample(x,p,q); Ty = (0:numel(y)-1)/desiredFs;  plot(Tx,x,'. ') hold on plot(Ty,y,'o ') hold off legend('Original','Resampled')

Para señales bien comportadas como el sinusoides anterior, simplemente usando con un cuidadosamente elegido y debe ser suficiente para reconstruirlo correctamente.resamplepq

Para señales con transitorios o ruido significativo, es posible que desee tener un mayor control sobre el filtro antialiasing polifásico en .resample

Filtrar transitorios

La función utiliza un filtro cuando realiza la conversión de velocidad.resample Este filtrado es sensible a los transitorios grandes en la señal.

Para ilustrar esto, vuelva a muestrear un pulso rectangular:

x = [zeros(1,120) ones(1,241) zeros(1,120)]; y = resample(x,p,q);  plot(Tx,x,'-', Ty,y,'-') legend('Original','Resampled')

La función hace un buen trabajo de reconstrucción de las regiones planas del pulso. Sin embargo, hay picos en los bordes del pulso.

Acercar el borde del primer pulso:

xlim([2e-3 3e-3])

Hay una oscilación amortiguada en la región de transición. Puede disminuir esta oscilación ajustando los ajustes del filtro interno.

le permite tener control sobre una ventana Kaiser aplicada al filtro de suavizado que puede mitigar algunos de los efectos de borde.resample

Dos parámetros y , controlan la longitud relativa del filtro y la cantidad de suavizado que intenta realizar.nbeta Un valor mayor de tendrá una longitud de filtro mayor.n A de 0 no tendrá suavizado adicional.beta Los valores más grandes tendrán un suavizado más grande.beta De forma predeterminada, es 10 y es 5.nbeta

Una forma práctica de proceder es comenzar con los valores predeterminados y ajustars según sea necesario. Aquí, ajuste a 5 y a 20.nbeta

n = 5; beta = 20;  y = resample(x,p,q,n,beta);  plot(Tx,x,'.-') hold on plot(Ty,y,'o-') hold off legend('Original','Resampled') xlim([2e-3 3e-3])

La oscilación se reduce significativamente.

Filtrado de alias

La función está diseñada para convertir las frecuencias de muestreo a velocidades más altas o más bajas.resample Como consecuencia, el límite de frecuencia del filtro de suavizado se establece en la frecuencia Nyquist de la frecuencia de muestreo de entrada o salida (lo que sea menor). Esta configuración predeterminada permite que la función cubra una amplia gama de aplicaciones.resample

Hay ocasiones en las que el control directo del filtro puede ser beneficioso.

Para ilustrar esto, construya y vea el espectrograma de una señal de chirp muestreada a 96 kHz. La señal chirp consiste en un sinusoides cuya frecuencia varía cuadráticamente en todo el rango de Nyquist de 0 Hz a 48 kHz durante una duración de ocho segundos:

fs1 = 96000; t1 = 0:1/fs1:8; x = chirp(t1, 0, 8, fs1/2, 'quadratic'); spectrogram(x,kaiser(256,15),220,412,fs1,'yaxis')

A continuación, convierta el chirp a 44,1 kHz utilizando la configuración predeterminada de y vea el espectrograma:resample

fs2 = 44100;  [p,q] = rat(fs2/fs1); y = resample(x,p,q);  spectrogram(y,kaiser(256,15),220,412,fs2,'yaxis')

Aquí se puede ver la señal original, así como el contenido de frecuencia no deseado. Idealmente, el sinusoides debe comenzar a 0 Hz y continuar hasta que alcance la frecuencia Nyquist de 22,05 kHz a 5.422 s. En su lugar, hay artefactos introducidos debido a pequeñas discontinuidades introducidas en los bordes del filtro predeterminado utilizado para el remuestreo. Para evitar estos artefactos, puede proporcionar un filtro más largo con una frecuencia de corte ligeramente inferior y un mayor rechazo de la banda de detención que el filtro predeterminado.

Para tener una alineación temporal adecuada, el filtro debe tener una longitud impar. La longitud debe ser un par de veces mayor que o (lo que sea más grande).pq Del mismo modo, divida la frecuencia de corte normalizada deseada por la mayor de o .pq En cualquier caso, multiplique los coeficientes resultantes por .p

Este es un ejemplo de un filtro con un corte al 98% (0,98) de la frecuencia Nyquist de salida con un orden de 256 veces el factor de diezma, ventanado con una ventana Kaiser con un de 12.beta

normFc = .98 / max(p,q); order = 256 * max(p,q); beta = 12;  lpFilt = firls(order, [0 normFc normFc 1],[1 1 0 0]); lpFilt = lpFilt .* kaiser(order+1,beta)'; lpFilt = lpFilt / sum(lpFilt);  % multiply by p lpFilt = p * lpFilt;  % resample and plot the response y = resample(x,p,q,lpFilt); spectrogram(y,kaiser(256,15),220,412,fs2,'yaxis')

Tenga en cuenta que se quitan los alias.

Lectura adicional

Para obtener más información sobre el remuestreo, consulte el cuadro de herramientas de procesamiento de señales.

Referencia: fredric j harris, "Multirate Signal Processing for Communications Systems", Prentice Hall, 2004.