¿Cómo puedo diseñar filtros de interpolación Nyquist con el algoritmo Parks-McClellan?

17

Podemos diseñar fácilmente filtros de interpolación que obedezcan ciertas restricciones de dominio de frecuencia utilizando el algoritmo Parks-McClellan . Sin embargo, no está claro de inmediato cómo aplicar restricciones de dominio de tiempo; en particular, estoy interesado en generar filtros Nyquist. Entonces, si estoy sobremuestreando por un factor de N, quiero que el filtro tenga cruces por cero en kN, para enteros distintos de cero k(esto asegura que las muestras de entrada a mi interpolador aparecerán en la secuencia de salida).

He visto a Harris 1 hablar sobre una técnica para diseñar filtros de media banda, es decir, el caso especial donde N=2. ¿Hay una solución general para esto? (Sé que podemos diseñar fácilmente filtros con el método de la ventana, pero eso no nos da el mismo control).

[1] Procesamiento de señal multirate para sistemas de comunicación , pp. 208-209

Oliver Charlesworth
fuente
Para N=2ver mi respuesta a: Diseño de filtro FIR: Window vs Parks-McClellan y Least-Squares .
Olli Niemitalo,
Desafortunadamente, hay un par de referencias bibliográficas con pagos: F. Mintzer, "En filtros FIR de media banda, tercera banda y enésima banda y su diseño", IEEE Trans. Acoust., Speech & Signal Process., Vol. ASSP-30, no. 5, págs. 734–738, octubre de 1982. T. Saramaki e Y. Neuvo, "Una clase de filtros FIR Nyquist (banda N-ésima) con cero interferencia entre símbolos", IEEE Trans. Circuitos y sistemas, vol. CAS-34, no. 10, págs. 1182–1190, octubre de 1987.
Olli Niemitalo,
Y este artículo que parece muy importante: X. Zhang, " Diseño de filtros de fase lineal FIR de banda Mth ", 19a Conferencia Internacional sobre Procesamiento de Señal Digital 2014, Hong Kong, 2014, pp. 7-11. doi: 10.1109 / ICDSP.2014.6900776
Olli Niemitalo

Respuestas:

9

Un método de diseño, aunque uno que se limita a potencias de dos, sería comenzar con un filtro de media banda, insertar ceros entre sí (crea una réplica espectral), y luego convolverlo con un segundo filtro de media banda que tenga una banda de transición más ancha. Repita el proceso hasta llegar a la potencia requerida de 2.

Aquí hay un ejemplo que crea un filtro de paso bajo con Fc = fs / 8 y cruces por cero cada 4 muestras:

b0=remez(34,[0 .45 .55 1],[1 1 0 0])';
b1=remez(6,[0 .25 .75 1],[1 1 0 0])';
b0up = zeros(1,2*length(b0)-1);
b0up(1:2:end) = b0;
B0up=freqz(b0up);
b2 = conv(b0up,b1);  % length = 34*2+1 + 6 = 75 coefficients

Comparación de filtros de ejemplo

Mark Borgerding
fuente
Iba a sugerir lo mismo.
Phonon
55
+1 para un gráfico impresionante. SIEMPRE haré +1 gráficos impresionantes porque son mucho mejores que largos ... a menudo aburridas / malas explicaciones.
Trevor Boyd Smith
5

Un método para obtener los cruces por cero deseados es hacer un diseño híbrido.

Comience con un filtro de media banda Parks-McLellan / Remez con el mismo peso que la banda de paso y la banda de detención. Como es un filtro de media banda , tendrá ceros en muestras alternativas. Luego puede interpolar el dominio del tiempo mediante sin (x) / x rellenando con cero en el dominio de frecuencia.

Ejemplo: crear un filtro de paso bajo fs / 12 con cruces por cero cada 6 muestras.

% prototype Remez filter 
taps=18; 
b = remez(taps,[0 .4 .6 1],[1 1 0 0])';  
% force halfband condition of zeros at every other sample
b(2:2:end)=0;  b(taps/2+1)=.5; 

% zero pad the time domain to give the Gibbs ripple some deadspace
B=fft(b,4*(taps+1) ); 
% split the frequency domain into two halves, split the Nyquist bin
Blo = [ B(1:length(B)/2) 0.5*B(length(B)/2+1) ]; 
Bhi = [ 0.5*B(length(B)/2+1) B(length(B)/2+2:length(B))  ]; 

% insert padding at pi to increase size 3x
Bpad = [ Blo zeros(1,3*length(B)-length(Blo)-length(Bhi) ) Bhi];  
bint = real( ifft(Bpad) ); % this has zeros every 6 samples

El filtro resultante está cerca, pero no es tan bueno como el prototipo en términos de onda de paso / banda de paso. La interpolación sin (x) / x introduce algún timbre de bajo nivel. Es posible que deba sobredesignificar ligeramente el filtro prototipo para obtener el nivel de atenuación requerido en el filtro interpolado.

Mark Borgerding
fuente
1
+1: idea interesante; Necesito pensar un poco en esto. Sin embargo, se me ocurren dos preguntas. Primero, ¿es seguro decir que podemos traducir nuestras restricciones de diseño equiripple al filtro de media banda simplemente escalando? Segundo, ¿qué pasa con los valores impares de N ?
Oliver Charlesworth
Los valores impares de N pueden manejarse diezmando un FIR par por 2. por ejemplo, si desea ceros cada 7 muestras, diseñe un abeto con ceros cada 14, luego diezme de manera que conserve los ceros. La mitad superior del espectro tendrá un alias, pero los lóbulos laterales integrados pueden ser bastante insignificantes en la práctica.
Mark Borgerding