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 tarifa uniforme. Muestra cómo reducir el impacto de los transitorios grandes, así como cómo eliminar el contenido de alta frecuencia no deseado.

Tasa de conversión por un factor racional

La función realiza la conversión de velocidad de una frecuencia de muestreo a otra. le permite elevar la muestra por un factor integral, y posteriormente diezmar por otro factor integral,.resampleresamplepq De esta manera se 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 cuando se convierte de 48 kHz a 44,1 kHz:rat

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

indica que puede Remuestrar con aumento por 147 y diezmar por 160.rat Para verificar que esto produzca la tasa deseada, multiplique/por la velocidad de muestreo original:pq

originalFs * p / q
ans = 44100 

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

Por ejemplo, cree un SineWave de 10 milisegundos de largo 500 Hz utilizando la frecuencia de muestreo original de 48 kHz y conviértalo a 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 las señales de buen comportamiento como la sinusoide anterior, simplemente utilizando con un cuidadosamente elegido y debe ser suficiente para reconstruir correctamente.resamplepq

Para las señales con transitorios o ruido significativo, es posible que desee tener un mayor control sobre el filtro de anti-aliasing Poly-Phase en.resample

Filtrado Transients

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, remuestrear 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 en 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 la configuración del filtro interno.

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

Dos parámetros y, controlar 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 mayor.beta De forma predeterminada, es 10 y es 5.nbeta

Una forma práctica de proceder es comenzar con los valores predeterminados y ajustarlo 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.

Los alias de filtrado

La función está diseñada para convertir las frecuencias de muestreo a tasas 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 velocidad de muestreo de entrada o salida (la que sea menor). Esta configuración predeterminada permite que la función cubra una amplia gama de aplicaciones.resample

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

Para ilustrar esto, construya y visualice el espectrograma de una señal de Chirp muestreada a 96 kHz. La señal de Chirp consiste en una sinusoide cuya frecuencia varía cuadráticamente en toda la gama Nyquist de 0 Hz a 48 kHz en 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 y visualice 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 deseada. Idealmente la sinusoide debe comenzar a 0 Hz y continuar hasta que alcance la frecuencia Nyquist de 22,05 kHz en 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 banda de parada 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 mayor).pq Del mismo modo, divida la frecuencia de corte normalizada deseada por el mayor de o.pq En cualquier caso, multiplique los coeficientes resultantes por.p

A continuación se muestra un ejemplo de un filtro con un límite de 98% (0,98) de la frecuencia de salida de Nyquist con un orden de 256 veces el factor de diezmación, con ventanas con una ventana de Kaiser con una 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 los alias se eliminan.

Leer más

Para obtener más información sobre el remuestreo, consulte la caja de herramientas de procesamiento de señal.

Referencia: Fredric j Harris, "procesamiento de señal Multirate para sistemas de comunicaciones", Prentice Hall, 2004.