Tengo un filtro Butterworth de primer orden con la frecuencia de corte . Su función de transferencia es entonces
Usando la transformación bilineal para encontrar una (¿cómo se llama esa función?), Obtengo
Sin embargo, no puedo conciliar este resultado con lo que está haciendo Matlab. Parece mal, no importa qué valor de . Supongo que y debajo están los coeficientes de .B
A
>> [B,A] = butter(1,0.5)
B = 0.5000 0.5000
A = 1.0000 -0.0000
>> [B,A] = butter(1,0.6)
B = 0.5792 0.5792
A = 1.0000 0.1584
>> [B,A] = butter(1,0.7)
B = 0.6625 0.6625
A = 1.0000 0.3249
>> [B,A] = butter(1,0.8)
B = 0.7548 0.7548
A = 1.0000 0.5095
¿Qué estoy malentendido?
Respuestas:
Un par de cosas:
Antes de realizar la sustitución , debe preformar la frecuencia de corte realizando la sustitución:s=2Tz−1z+1
donde es la frecuencia de corte deformada. Esto es necesario porque la transformación bilineal asigna el plano de la mitad izquierda en el dominio de Laplace (usado en el diseño de filtro analógico) al círculo unitario en el dominio de una manera no lineal. Por lo tanto, a medida que se acerca a la tasa de Nyquist (frecuencias digitales de ), la aproximación al prototipo de filtro analógico se vuelve inexacta.ωc,w z ±π
También, el segundo parámetro que está de paso a laT (0,1)
butter
función es la frecuencia de corte normalizada, no el intervalo de muestreo . La frecuencia normalizada utilizada por esa función está en el intervalo y es igual a la relación de la frecuencia de corte deseada a la tasa de Nyquist:fuente
Al abrir el código para la
butter
función de MATLAB , vemos que usa pre-warping de frecuencia :fuente