¿Cuáles son los méritos relativos de varios esquemas de muestreo?

12

Recientemente me encontré con un sistema DSP que hizo un muestreo interno a través de cero relleno. Al esperar la retención de orden cero, me sorprendió descubrir que una señal de CC no producía una salida de CC; Muchos armónicos de la frecuencia de muestreo interna (inferior) también estaban presentes en la salida.

Esto lleva a mi pregunta: ¿Qué técnicas de muestreo ascendente se usan comúnmente y cuáles son sus méritos relativos? ¿Por qué elegiría relleno cero, retención de orden cero o retención de primer orden, y qué otras técnicas están disponibles?

Algunas aclaraciones:

  • El sistema es en tiempo real, por lo que el esquema de muestreo ascendente debe ser causal.
  • Al upsampler le sigue un filtro anti-alias que también se puede especificar.
nibot
fuente

Respuestas:

11

A los fines de esta respuesta, utilizaré la terminología de Matlab y definiré "muestreo ascendente" como el proceso de insertar ceros entre las muestras de entrada, y la "interpolación" como el proceso combinado de muestreo ascendente y filtrado para eliminar los alias ( es el factor de interpolación) que introduce el muestreo ascendente. Para obtener una explicación de cómo / por qué el muestreo ascendente introduce alias, consulte este hilo .m - 1 mm1m1m

Es importante comprender que cualquier filtro de paso bajo se puede utilizar para eliminar los alias y así completar la interpolación. Sin embargo, algunos filtros tienen ventajas cuando se usan en la interpolación. Discutiré los diversos sabores del filtrado de interpolación a continuación.

Filtro FIR

Los filtros FIR interpoladores son eficientes porque combinan el muestreo ascendente y el filtrado de alias en un solo paso. Esto se ve más fácilmente en un ejemplo. Supongamos que tenemos una secuencia de datos y queremos interpolarla por un factor de dos. El primer paso es aumentar la muestra por un factor de dos. Esto cambia la secuencia de datos original de a .x 0 , x 1 , . . . x N x 0 , 0 , x 1 , 0 , . . . x Nx[n]x0,x1,...xNx0,0,x1,0,...xN

Ahora supongamos que tenemos un filtro FIR de paso bajo, , que usaremos para eliminar el alias. Cuando incluimos la secuencia de datos muestreada con el filtro, la mitad de las tomas de filtro son estimuladas por las muestras que no son cero, y la mitad de las tomas están inactivas porque corresponden a las muestras de cero. La mitad que se estimula y la mitad que está inactiva se voltea de un lado a otro a medida que el filtro pasa por los datos. Estos dos conjuntos de tomas a veces se denominan fases de filtro.h[n]

Este mismo efecto se puede lograr implícitamente eliminando el muestreo ascendente y filtrando la secuencia de datos original con un filtro FIR interpolador. El filtro FIR interpolador produce salidas para cada muestra de entrada. Para todas las salidas , el filtro funcionará en las mismas muestras de entrada de techo (donde K es el número de tomas de filtro y "ceil" es la función de techo).m c e i l ( K / m )mmceil(K/m)

Con suerte, un ejemplo ilustrará cómo funciona esto. Supongamos que tenemos un filtro de seis tomas y estamos interpolando por un factor de dos. Las tomas de filtro son [1 -2 4 4 -2 1]. Si literalmente interpolamos y luego filtramos las muestras y los grifos de filtro se alinearían (una vez que hubiera una superposición completa) de la siguiente manera:

0:1x2:20:4x1:40:2x0:1
Próxima muestra ...

x3:10:2x2:40:4x1:20:1
Siguiente muestra ...

0:1x3:20:4x2:40:2x1:1
Y así sucesivamente. El objetivo del filtro de interpolación es que en realidad omite la inserción de los ceros y simplemente alterna qué conjunto de grifos utiliza en este momento. Por lo tanto, la secuencia anterior ahora se vería así:

x2:2x1:4x0:1

x3:1x2:4x1:2

x3:2x2:4x1:1

Retención de orden cero

Un interpolador de retención de orden cero es uno que simplemente repite cada muestra veces. Entonces, un factor de dos interpoladores de retención de orden cero convierte en . Este método es atractivo porque es extremadamente fácil de implementar, tanto en términos de codificación como de carga computacional.m1x0,x1,...xNx0,x0,x1,x1,...xN,xN

El problema con esto es que su filtrado de paso bajo es bastante pobre. Podemos ver eso cuando reconocemos que el interpolador de retención cero es un caso especial de interpolación FIR. Corresponde al muestreo ascendente seguido de un filtro rectangular de ancho . La transformación de Fourier de un filtro rectangular es una función sinc, que es un filtro de paso bajo bastante descuidado. Se puede arreglar su maldad con un filtro FIR compensador, pero si va a hacer eso, también podría usar un buen filtro de paso bajo para empezar.m

Primer orden de retención

La retención de primer orden es un paso hacia arriba desde el interpolador de retención cero, ya que interpola linealmente las muestras ascendentes utilizando las dos muestras de entrada más cercanas. Entonces, un factor de dos interpoladores de retención de primer orden convertiría en .x0,x1,...xNx0,x0+x12,x1,x1+x22,...xN

Al igual que el interpolador de retención de orden cero, el interpolador de retención de primer orden es un caso especial de interpolación FIR. Corresponde al muestreo ascendente y al filtrado con un filtro triangular. Para la interpolación de factor de dos, el filtro es , para la interpolación de factor de tres el filtro es , y así sucesivamente.[1[12112][132312312]

El filtro de triángulo es dos filtros rectangulares convolutados juntos, que corresponde a sinc cuadrado en el dominio de frecuencia. Este es un paso definitivo desde la retención de orden cero, pero aún no es genial.

Filtro IIR

Nunca he usado un filtro IIR interpolador, así que no diré mucho sobre ellos. Supongo que se aplican los mismos argumentos que en el filtrado regular: los filtros IIR son más eficientes, pueden ser inestables, no tienen fase lineal, etc. No creo que puedan combinar los pasos de muestreo y filtrado como un filtro FIR, pero podría estar equivocado sobre eso.

Interpolación FFT

Lanzaré este aunque no sea muy común (por supuesto, tampoco creo que el cero-hold sea común). Este hilo discute el remuestreo FFT, donde el remuestreo es tanto interpolación como diezmado.

Retenciones de orden superior

Los interpoladores de retención de segundo orden generalmente se denominan "interpoladores cuadráticos". No son lineales y, por lo tanto, no se pueden implementar como filtros FIR, que son lineales. No entiendo bien las matemáticas detrás de ellos, así que no hablaré sobre su desempeño. Sin embargo, diré que creo que son algo comunes fuera del procesamiento de señales.

También existen métodos de orden superior (tres o más). Estos se conocen como "regresiones polinómicas".

EDITAR:

Filtros de peine integrador en cascada (CIC)

Olvidé mencionar los filtros CIC . Los filtros CIC se usan por dos razones: solo usan sumadores / sustractores (no es tan importante ahora que las multiplicaciones son rápidas y baratas), y pueden hacer cambios de frecuencia de muestreo realmente grandes de manera bastante eficiente. Su inconveniente es que son esencialmente una implementación eficiente de un filtro rectangular en cascada, por lo que tienen todas las desventajas de los filtros rectangulares como se discutió anteriormente. Los interpoladores CIC están precedidos casi siempre por un filtro FIR compensador que distorsiona la señal para cancelar la distorsión introducida por el CIC. Si el cambio en la frecuencia de muestreo es lo suficientemente grande, el costo del filtro de distorsión previa vale la pena.

Jim Clay
fuente
Fantástica encuesta Sr. Jim. Para agregar a su categoría de retenciones de orden superior, creo que esto también se conoce como "regresión polinómica". En eso, dado un conjunto específico de puntos, calculamos una línea, parábola, polinomio cúbico de orden superior de mejor ajuste. Una vez que tenemos la ecuación, podemos averiguar fácilmente qué son los puntos intermedios.
Spacey
Preguntas: 1) No tengo del todo claro el último párrafo de la parte del filtro FIR. Usted mencionó que las salidas segunda y tercera correspondientes a la primera muestra de entrada usan cintas de filtro 1, 4, 7 y luego 2, 5, 8. Sin embargo, también menciona que todos son ceros ... así que no son la segunda y tercera salida muestras solo ceros en este caso? 2) Este 'filtro de interpolación FIR', ¿se parece a, por ejemplo, [1 0 0 3.2 0 0 -2.1 0 0 1.1 0 0] para m = 3? (Los números están hechos).
Spacey
@Mohammad He editado la respuesta. Espero que esto ayude. Y gracias por la información sobre regresiones polinómicas.
Jim Clay
1
@endolith Creo que hay dos razones: la complejidad y solo tiene sentido computacionalmente cuando la longitud del filtro supera un cierto número (y no estoy seguro de cuál es ese número). El enfoque FFT funciona muy bien cuando se trata de bloques de muestras, pero si se trata de una secuencia de muestras, también debe hacer superposición-adición o superposición-guardado para mantener la continuidad.
Jim Clay
1
@endolith Una cosa realmente buena sobre el enfoque FFT es que prácticamente no hay costo por usar un filtro grande.
Jim Clay
3

La respuesta de Jim lo cubre bastante bien. Todos los métodos de muestreo ascendente siguen el mismo esquema básico:

  1. Insertar ceros entre las muestras: esto da como resultado una repetición periódica del espectro original pero deja el espectro en la banda original completamente intacto
  2. Filtro de paso bajo para deshacerse de todos los espectros de espejo

La principal diferencia entre los métodos es cómo se implementa el filtrado de paso bajo. El upsampler ideal sería incluir un filtro de paso bajo ideal, pero eso no es práctico. Tener en cuenta el problema en el dominio de la frecuencia permite encontrar el algoritmo de muestreo adecuado para sus requisitos específicos:

  1. ¿Cuánta distorsión de amplitud puedo tolerar en la banda original? ¿Eso depende de la frecuencia?
  2. ¿Me importa la fase en la banda original? Si necesita mantener la fase, necesita una fase lineal FIR. Si no es una fase mínima, hace un mejor trabajo para mantener la "causalidad" y los comienzos agudos.
  3. ¿Cuánto necesito para suprimir las imágenes espejo? Básicamente, las imágenes de espejo aparecerán como ruido adicional en la banda base.

Los interpoladores no lineales de alto orden (spline, hermitian, Lagrange) generalmente no funcionan bien ya que el error de interpolación depende en gran medida de la señal y es casi imposible de mapear según los requisitos específicos.

Hilmar
fuente
¿Qué quiere decir con "hace un mejor trabajo para mantener la 'causalidad'"?
nibot
0

Al considerar la diferencia entre muestra y retención (es decir, repetición de valores de muestra) y relleno cero, es útil darse cuenta (como señalan Jim e Hilmar) que la muestra y retención puede interpretarse como muestreo ascendente mediante relleno cero seguido de un Filtro FIR cuya respuesta al impulso consiste en un pulso rectangular.

Por ejemplo, cuando se realiza un muestreo ascendente de 2 kHz a 64 kHz (un factor de 32), podemos implementar esto insertando 31 ceros entre cada par de muestreo de 2 kHz, y luego filtrando por un filtro FIR que consta de 32 unos, con todos los demás coeficientes cero.

Teniendo en cuenta la muestra y retención de esta manera, es fácil de analizar. Podemos obtener la respuesta de frecuencia de la operación de muestreo y retención tomando la transformada de Fourier de la ventana rectangular. Como señala Jim, la transformada de Fourier de un pulso rectangular es una sincfunción con fase lineal (ya que el rectángulo no está centrado alrededor de ).τ=0

Resulta que esta sincfunción tiene nulos exactamente en los armónicos de la frecuencia de muestreo más baja. En nuestro ejemplo de aplicación de muestreo ascendente de 2048 Hz a 65536 Hz, la respuesta de frecuencia de la operación de muestreo y retención tiene valores nulos a 2048 Hz, 4096 Hz, etc.

ingrese la descripción de la imagen aquí

A partir de esto, concluyo que cualquier filtro de interpolación que suprima totalmente los armónicos de la frecuencia de muestreo original se verá algo así como "muestrear y mantener". ¿Es esto correcto?

Con respecto a los criterios para suprimir estos armónicos, la muestra y retención parece ser óptima. Sin embargo, sus habilidades anti-aliasing son pobres, ya que, aparte de los nulos armónicos, su respuesta de frecuencia solo cae como encima de la antigua tasa de Nyquist.1/f

nibot
fuente
El problema es que los nulos son muy estrechos, por lo que la mayoría de las señales tendrán energía fuera de los nulos.
Jim Clay
@ JimClay, ¿los nulos estrechos no son perfectos para matar los armónicos de la frecuencia de muestreo más baja? Estoy de acuerdo, también querrás algunos polos más alrededor de 1 kHz para deshacerte de las frecuencias de imagen. Supongo que ampliaría mi pregunta: ¿cómo se diseña un buen filtro de interpolación?
nibot
Usted diseña un filtro de paso bajo cuya banda de paso incluye el ancho de banda de su señal, y cuya banda de parada incluye los alias que se introducen al muestrear. Las frecuencias entre el punto 3dB de la señal y el alias son su banda de transición. Si su pregunta es "¿cómo diseño un filtro de paso bajo?", Pregúntelo en otra pregunta y podemos discutirlo.
Jim Clay
Generalmente entiendo cómo diseñar filtros, generalmente colocando polos y ceros en el dominio s explícitamente y luego convirtiéndolos en filtros de dominio z. Me preguntaba si había algún truco especial para los filtros de interpolación. El mensaje que me llevo es que en realidad no hay ningún truco: los filtros de interpolación son como cualquier otro tipo de filtros, y su diseño es una opción de compromiso entre las diversas consideraciones (ondulación, fase, retraso de grupo, atenuación mínima de banda de parada, complejidad computacional, etc.
nibot
Por otro lado, no sé nada sobre el diseño de filtros FIR.
nibot