Dies ist nur ein Nachtrag zu Jojeks Antwort, die allgemeiner gehalten ist und bei Verwendung von Mathematik mit doppelter Genauigkeit perfekt funktioniert. Wenn die Genauigkeit geringer ist, tritt ein "Kosinusproblem" auf, das auftritt, wenn entweder die Frequenz im Frequenzgang sehr niedrig ist (viel niedriger als in Nyquist), oder wenn die Resonanzfrequenzen des Filters sehr niedrig sind.
| H( ej ω) |2| H( e- j ω) | = | H( ej ω) |
Betrachten Sie diese Trigger-Identität:
cos( ω ) = 1 - 2 sin2(ω2)
Sünde2( ω2)ω → 0
Also, was ich getan habe, ist, die oben angegebene Triggeridentität zu verwenden und alle Cosinus-Terme zu entfernen und sie im Wesentlichen durch Terme zu ersetzen, die wie aussehenSünde2( ω2)
H( z) = b0+ b1z- 1+ b2z- 2ein0+ a1z- 1+ a2z- 2
das hat einen komplexen Frequenzgang
H( ej ω) = b0+ b1e- j ω+ b2e- j 2 ωein0+ a1e- j ω+ a2e- j 2 ω
welches die quadratische Größe hat:
| H( ej ω) |2= | b0+ b1e- j ω+ b2e- j 2 ω|2| ein0+ a1e- j ω+ a2e- j 2 ω|2= ( b0+ b1cos( ω ) + b2cos( 2 ω ) )2+ ( b1Sünde( ω ) + b2Sünde( 2 ω ) )2( a0+ a1cos( ω ) + a2cos( 2 ω ) )2+ ( a1Sünde( ω ) + a2Sünde( 2 ω ) )2= b20+ b21+ b22+ 2 b1( b0+ b2) cos( ω ) + 2 b0b2cos( 2 ω )ein20+ a21+ a22+ 2 a1( a0+ a2) cos( ω ) + 2 a0ein2cos( 2 ω )
| H( ej ω) |cos( ω )cos( 2 ω )ω11
Mit der obigen Triggeridentität erhalten Sie das Quadrat der Größe:
|H(ejω)|2=b20+b21+b22+2b1(b0+b2)cos(ω)+2b0b2cos(2ω)a20+a21+a22+2a1(a0+a2)cos(ω)+2a0a2cos(2ω)=b20+b21+b22+2b1(b0+b2)(1−2sin2(ω2))+2b0b2(1−2sin2(ω))a20+a21+a22+2a1(a0+a2)(1−2sin2(ω2))+2a0a2(1−2sin2(ω))=b20+b21+b22+2b1(b0+b2)(1−2sin2(ω2))+2b0b2(2cos2(ω)−1)a20+a21+a22+2a1(a0+a2)(1−2sin2(ω2))+2a0a2(2cos2(ω)−1)=b20+b21+b22+2b1(b0+b2)(1−2sin2(ω2))+2b0b2(2(1−2sin2(ω2))2−1)a20+a21+a22+2a1(a0+a2)(1−2sin2(ω2))+2a0a2(2(1−2sin2(ω2))2−1)=b20+b21+b22+2b1(b0+b2)(1−2ϕ)+2b0b2(2(1−2ϕ)2−1)a20+a21+a22+2a1(a0+a2)(1−2ϕ)+2a0a2(2(1−2ϕ)2−1)=b20+b21+b22+2b1(b0+b2)(1−2ϕ)+2b0b2(1−8ϕ+8ϕ2)a20+a21+a22+2a1(a0+a2)(1−2ϕ)+2a0a2(1−8ϕ+8ϕ2)=b20+b21+b22+2b1b0+2b1b2−4(b1b0+b1b2)ϕ+2b0b2−16b0b2ϕ+16b0b2ϕ2a20+a21+a22+2a1a0+2a1a2−4(a1a0+a1a2)ϕ+2a0a2−16a0a2ϕ+16a0a2ϕ2=(b20+b21+b22+2b1b0+2b1b2+2b0b2)−4(b1b0+b1b2−4b0b2)ϕ+16b0b2ϕ2(a20+a21+a22+2a1a0+2a1a2+2a0a2)−4(a1a0+a1a2−4a0a2)ϕ+16a0a2ϕ2=14(b20+b21+b22+2b1b0+2b1b2+2b0b2)−(b1b0+b1b2−4b0b2)ϕ+4b0b2ϕ214(a20+a21+a22+2a1a0+2a1a2+2a0a2)−(a1a0+a1a2−4a0a2)ϕ+4a0a2ϕ2=(b0+b1+b22)2−ϕ(4b0b2(1−ϕ)+b1(b0+b2))(a0+a1+a22)2−ϕ(4a0a2(1−ϕ)+a1(a0+a2))
where ϕ≜sin2(ω2)
if your gear is intending to plot this as dB, it comes out as
20log10|H(ejω)| = 10log10((b0+b1+b22)2−ϕ(4b0b2(1−ϕ)+b1(b0+b2)))−10log10((a0+a1+a22)2−ϕ(4a0a2(1−ϕ)+a1(a0+a2)))
so your division turns into subtraction, but you have to be able to compute logarithms to some base or another. numerically, you will have much less trouble with this for low frequencies than doing it the apparent way.