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 mm - 1m - 1metro
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 0, x1, . . . XnorteX0 0, 0 , x1, 0 , . . . Xnorte
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 )metrometroc e i l ( 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 0: 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 0: 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.m - 1X0 0, x1, . . . XnorteX0 0, x0 0, x1, x1, . . . Xnorte, xnorte
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.metro
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 0, x1, . . . XnorteX0 0, x0 0+ x12, x1, x1+ x22, . . . Xnorte
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[ 121 12][ 13231 2312]
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.
La respuesta de Jim lo cubre bastante bien. Todos los métodos de muestreo ascendente siguen el mismo esquema básico:
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:
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.
fuente
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τ=0
sinc
función con fase lineal (ya que el rectángulo no está centrado alrededor de ).Resulta que esta
sinc
funció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.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
fuente