Eu tenho um filtro Butterworth de primeira ordem com a frequência de corte . Sua função de transferência é então
Usando a transformada bilinear para encontrar um (como é chamada essa função?), Recebo
No entanto, não consigo conciliar esse resultado com o que o Matlab está fazendo. Parece errado, não importa o valor da . Assumo que e abaixo estão os 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
O que estou entendendo mal?
Respostas:
Algumas coisas:
Antes de fazer a substituição , você precisa pré - aquecer a frequência de corte fazendo a substituição:s=2Tz−1z+1
onde é a frequência de corte distorcida. Isso é necessário porque a transformação bilinear mapeia o plano da metade esquerda no domínio Laplace (usado no design do filtro analógico) para o círculo unitário no domínio maneira não linear. Portanto, à medida que você se aproxima da taxa de Nyquist (frequências digitais de ), a aproximação ao protótipo do filtro analógico se torna imprecisa.ωc,w z ±π
Além disso, o segundo parâmetro que você está passando para aT (0,1)
butter
função é a freqüência de corte normalizada, não provar o intervalo . A frequência normalizada usada por essa função está no intervalo e é igual à razão entre a frequência de corte desejada e a taxa de Nyquist:fonte
Ao abrir o código para a
butter
função do MATLAB , vemos que ele usa pré-distorção de frequência :fonte