Implementando un IIR muy agudo (frecuencia de muestreo de 125Hz, ancho de banda de 0.2Hz)

0

Estoy tratando de diseñar un filtro de paso bajo IIR. El propósito de este filtro es obtener DC puro de los ruidos.

  1. La frecuencia de muestreo es: 125Hz.
  2. El ancho de banda del filtro: 0.2Hz.

Diseñé el filtro con Matlab:

[b,a] = ellip(3,0.001,60,0.001);
freqz(b,a);
figure(2)
out = filter(b,a,ones(1,2000));
plot(out)

La respuesta de frecuencia : a 0.3Hz es -20dB, lo que es bueno para mí.

Larespuestadelpaso:

Los coeficientes:

a = [1.000000000000000 -2.984668175804313 2.969460975930567 -0.984792292477895];

b = 1.0e-04 * [0.750233362790290 -0.747695120994728 -0.747695120994729 0.750233362790290];

Mis preguntas

  1. A partir de la respuesta del paso, parece que los datos 452 están cerca de 1. ¿Puedo decir que tengo que esperar a que los datos 451 obtengan el valor de DC deseado? De acuerdo con lo deseado, no me importa mucho la fluctuación de la ganancia en DC, lo que significa que está bien para mí si DC tiene una pequeña ganancia (0.9-1.1).

  2. Los coeficientes del filtro parecen ser bastante pequeños, especialmente la parte b. ¿Puedo implementar el filtro correctamente en un Cortex-M4, que es una MCU de 32 bits con FPU?

pregunta richieqianle

1 respuesta

1

Prueba grpdelay (b, a, 1e6)

Esto trazará el retardo de grupo del filtro en varias frecuencias y obtendré alrededor de 240 a 350 muestras para frecuencias 'bajas'.

Sí, 32 bits deberían ser suficientes.

    
respondido por el MikeP

Lea otras preguntas en las etiquetas