J'ai un filtre Butterworth de premier ordre avec la fréquence de coupure . Sa fonction de transfert est alors
En utilisant la transformée bilinéaire pour trouver un (comment s'appelle cette fonction?), J'obtiens
Cependant, je ne peux pas concilier ce résultat avec ce que fait Matlab. Il semble mal, peu importe quelle valeur de . Je suppose que et ci-dessous sont les coefficients de H ( z ) .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'est-ce que je comprends mal?
Réponses:
Quelques choses:
Avant d'effectuer la substitution , vous devezprécalerla fréquence de coupure en effectuant la substitution:s = 2Tz- 1z+ 1
où est la fréquence de coupure déformée. Cela est nécessaire car la transformation bilinéaire mappe le demi-plan gauche du domaine de Laplace (utilisé dans la conception de filtres analogiques) sur le cercle unitaire du domaine z de manière non linéaire. Par conséquent, à l'approche du taux de Nyquist (fréquences numériques de ± π ), l'approximation du prototype de filtre analogique devient inexacte.ωc , w z ± π
Par ailleurs, le second paramètre que vous êtes de passage à laT ( 0 , 1 )
butter
fonction est la fréquence de coupure normalisée, et non l'intervalle d' échantillonnage . La fréquence normalisée utilisée par cette fonction est dans l'intervalle ( 0 , 1 ) et est égale au rapport de la fréquence de coupure souhaitée au taux de Nyquist:la source
Lors de l'ouverture du code de la
butter
fonction de MATLAB , nous voyons qu'il utilise la pré-déformation de fréquence :la source