B
Bluebirdglory
Guest
Hi everybody,
Im a Programų inžinerijos studentų ir jiems turėtų padaryti parametryczny Equlizer kurie gali sklypas grafika Peaking filtro ir LPF ir HPF.dabar ir galėjo gauti pažymėti pakilimo filtro naudojant koeficientą a0, a1, a2 b0, b1, b2 (biquad) ir tada surasti dydį atsako tiesiogiai i koduojamų jį VB kuris l ir pridėkite ją pabaigoje , bet dabar problema, kai i nori daryti tą patį ir LPF ir HPF (naudojant corespondant vertės) ir tik gali būti kreivės 1 ir 2 tvarkos, bet man reikia pažymėti 3 ir 4 kad taip pat.bet negali žinoti, kaip gali ir ją išspręsti?
b0 = 1,0
b1 = 0,0
b2 = 0,0
a0 = 1,0
a1 = 0.0
a2 = 0.0
GainDb = inputG
F0 = inputF
myQ = inputQ
pelnas = 10 ^ (Abs (GainDb) * 0,05)
Fs = 48000
Kad = inputQ / 6
w0 = Tanachas (PI * F0 / FS)
identifikavimo = 0,0
W2 = w0 * w0
myQ = myQ * (PI * F0 / Fs) / w0
Jei TrackGain.Enabled Tada "už smailės EQ
Jei GainDb <= 0,0 Tada
identifikavimo = 1,0 / (1,0 (1,0 / myQ * w0) W2)
b2 = tapatybę * (1,0 - (pelnas / myQ * w0) W2)
b1 = tapatybę * 2,0 * (W2 - 1.0)
b0 = tapatybę * (1,0 pelnas / myQ * w0 W2)
a2 = tapatybę * (1,0 - (1,0 / myQ * w0) W2)
a1 = tapatybę * 2,0 * (W2 - 1.0)
Kitas
identifikavimo = 1,0 / (1,0 (pelnas / myQ * w0) W2)
b2 = tapatybę * (1,0 - (1,0 / myQ * w0) W2)
b1 = tapatybę * 2,0 * (W2 - 1.0)
b0 = tapatybę * (1,0 (1,0 / myQ * w0) W2)
a2 = tapatybę * (1,0 - (pelnas / myQ * w0) W2)
a1 = tapatybę * 2,0 * (W2 - 1.0)
End If
a0 = 1,0
peakCalcPlot ()
Else "ir LPF ir HPF'''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''
Jei tvarka <> 2 Toliau
identifikavimo = 1.0 / (w0 1.0)
Jei isHPF Tada
Y1 (1) = identifikavimo
Y1 (0) = identifikavimo
x1 (1) = tapatybę * (w0 - 1.0)
Kitas
Y1 (1) = tapatybę * w0
Y1 (0) = Y1 (1)
x1 (1) = tapatybę * (w0 - 1.0)
End If
x1 (0) = 1,0
End If
Jei tvarka> = 2 Tada
Jei (tvarka = 2) Tada
identifikavimo = 1,0 / (1,0 1,4142135623731 * w0 W2)
x2 (2) = tapatybę * (1,0 - 1.41421354F * w0 W2) / * Q = 1/sqrt (2) * /
Kitas
identifikavimo = 1,0 / (1,0 1,0 * w0 W2) / * Q = 1 * /
x2 (2) = tapatybę * (1 - 1 * w0 W2)
End If
x2 (1) = tapatybę * 2,0 * (W2 - 1.0)
x2 (0) = 1,0
Jei isHPF Tada
y2 (2) = identifikavimo
y2 (1) = tapatybę * (-2)
y2 (0) = identifikavimo
Kitas
y2 (2) = tapatybę * W2
y2 (1) = tapatybę * 2,0 * W2
y2 (0) = tapatybę * W2
End If
End If
b0 = 1,0
b1 = 0,0
b2 = 0,0
'b3 = 0,0
a0 = 1,0
a1 = 0.0
a2 = 0.0Jei tvarka = 1 Tada
b0 = Y1 (0)
b1 = Y1 (1)
b2 = 0
'b3 = 0
a0 = 1
a1 = x1 (1)
a2 = 0
ElseIf tvarka = 2 Tada
b0 = y2 (0)
b1 = y2 (1)
b2 = y2 (2)
"b (3) = 0
a0 = 1
a1 = x2 (1)
a2 = x2 (2)ElseIf tvarka = 3 Tada
b0 = Y1 (0) * y2 (0)
b1 = Y1 (0) * y2 (1) Y1 (1) * y2 (0)
b2 = Y1 (0) * y2 (2) Y1 (1) * y2 (1)a0 = 1
a1 = x1 (1) x2 (1)
a2 = x2 (2) x1 (1) * x2 (1)
Kitas
b0 = Y1 (0) * y2 (0)
b1 = Y1 (0) * y2 (1) Y1 (1) * y2 (0)
b2 = Y1 (0) * y2 (2) Y1 (1) * y2 (1)a0 = 1
a1 = x1 (1) x2 (1)
a2 = x2 (2) x1 (1) * x2 (1)
End If
LPHPCalcPlot ()
End If
End SubPrivate Sub peakCalcPlot ()
"Apskaičiuokite kreivės vertės
I As Integer = 0 Norėdami diagrama (myKey). PtsArray.Length - 1
iExp = (10 * (10 ^ ((i first20) / (gWidth / 3,0))))
yAxisValue = 0,0
omega = 2 *
pi * iExp / Fs
cosW0 = Cos (omega)
cos2W0 = Cos (2.0 * omega)
num = (b0 ^ 2) (b1 ^ 2) (b2 ^ 2) (2,0 * cosW0 * ((b0 * b1) (b1 * b2))) (2,0 * cos2W0 * b0 * b2)
den = 1,0 (a1 ^ 2) (a2 ^ 2) (2,0 * cosW0 * (a1 (a1 * a2))) (2,0 * cos2W0 * a2)
yAxisValue = (Abs (p / den))
Grafikas (myKey). PtsArray (i). X = i
Grafikas (myKey). PtsArray (i). Y = 3 * (10 * log10 ((yAxisValue))) gHeightCenter
Next i
End Sub
tikrai i useed šias formules apskaičiuoti a0 ..... b2 nuo standartinės formulės didn darbas man i naudojamas gavo formules nuo:
LPF: O (s) = 1 / (s ^ 2 S / Q 1)
b0 = (1 - cos (w0)) / 2
b1 = 1 - cos (w0)
b2 = (1 - cos (w0)) / 2
a0 = 1 alfa
a1 = -2 * cos (w0)
a2 = 1 - alfaHPF: O (s) = s ^ 2 / (s ^ 2 S / Q 1)
b0 = (1 cos (w0)) / 2
b1 = - (1 cos (w0))
b2 = (1 cos (w0)) / 2
a0 = 1 alfa
a1 = -2 * cos (w0)
a2 = 1 - alfabet ir Dono, kodėl šios formulės dosen darbą, ir taip pat manau, jei aš noriu, kad 3 ir 4 kad man reikia vertė A3, A4, B3, B4, taip pat, i am ištaisyti?
Im a Programų inžinerijos studentų ir jiems turėtų padaryti parametryczny Equlizer kurie gali sklypas grafika Peaking filtro ir LPF ir HPF.dabar ir galėjo gauti pažymėti pakilimo filtro naudojant koeficientą a0, a1, a2 b0, b1, b2 (biquad) ir tada surasti dydį atsako tiesiogiai i koduojamų jį VB kuris l ir pridėkite ją pabaigoje , bet dabar problema, kai i nori daryti tą patį ir LPF ir HPF (naudojant corespondant vertės) ir tik gali būti kreivės 1 ir 2 tvarkos, bet man reikia pažymėti 3 ir 4 kad taip pat.bet negali žinoti, kaip gali ir ją išspręsti?
b0 = 1,0
b1 = 0,0
b2 = 0,0
a0 = 1,0
a1 = 0.0
a2 = 0.0
GainDb = inputG
F0 = inputF
myQ = inputQ
pelnas = 10 ^ (Abs (GainDb) * 0,05)
Fs = 48000
Kad = inputQ / 6
w0 = Tanachas (PI * F0 / FS)
identifikavimo = 0,0
W2 = w0 * w0
myQ = myQ * (PI * F0 / Fs) / w0
Jei TrackGain.Enabled Tada "už smailės EQ
Jei GainDb <= 0,0 Tada
identifikavimo = 1,0 / (1,0 (1,0 / myQ * w0) W2)
b2 = tapatybę * (1,0 - (pelnas / myQ * w0) W2)
b1 = tapatybę * 2,0 * (W2 - 1.0)
b0 = tapatybę * (1,0 pelnas / myQ * w0 W2)
a2 = tapatybę * (1,0 - (1,0 / myQ * w0) W2)
a1 = tapatybę * 2,0 * (W2 - 1.0)
Kitas
identifikavimo = 1,0 / (1,0 (pelnas / myQ * w0) W2)
b2 = tapatybę * (1,0 - (1,0 / myQ * w0) W2)
b1 = tapatybę * 2,0 * (W2 - 1.0)
b0 = tapatybę * (1,0 (1,0 / myQ * w0) W2)
a2 = tapatybę * (1,0 - (pelnas / myQ * w0) W2)
a1 = tapatybę * 2,0 * (W2 - 1.0)
End If
a0 = 1,0
peakCalcPlot ()
Else "ir LPF ir HPF'''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''
Jei tvarka <> 2 Toliau
identifikavimo = 1.0 / (w0 1.0)
Jei isHPF Tada
Y1 (1) = identifikavimo
Y1 (0) = identifikavimo
x1 (1) = tapatybę * (w0 - 1.0)
Kitas
Y1 (1) = tapatybę * w0
Y1 (0) = Y1 (1)
x1 (1) = tapatybę * (w0 - 1.0)
End If
x1 (0) = 1,0
End If
Jei tvarka> = 2 Tada
Jei (tvarka = 2) Tada
identifikavimo = 1,0 / (1,0 1,4142135623731 * w0 W2)
x2 (2) = tapatybę * (1,0 - 1.41421354F * w0 W2) / * Q = 1/sqrt (2) * /
Kitas
identifikavimo = 1,0 / (1,0 1,0 * w0 W2) / * Q = 1 * /
x2 (2) = tapatybę * (1 - 1 * w0 W2)
End If
x2 (1) = tapatybę * 2,0 * (W2 - 1.0)
x2 (0) = 1,0
Jei isHPF Tada
y2 (2) = identifikavimo
y2 (1) = tapatybę * (-2)
y2 (0) = identifikavimo
Kitas
y2 (2) = tapatybę * W2
y2 (1) = tapatybę * 2,0 * W2
y2 (0) = tapatybę * W2
End If
End If
b0 = 1,0
b1 = 0,0
b2 = 0,0
'b3 = 0,0
a0 = 1,0
a1 = 0.0
a2 = 0.0Jei tvarka = 1 Tada
b0 = Y1 (0)
b1 = Y1 (1)
b2 = 0
'b3 = 0
a0 = 1
a1 = x1 (1)
a2 = 0
ElseIf tvarka = 2 Tada
b0 = y2 (0)
b1 = y2 (1)
b2 = y2 (2)
"b (3) = 0
a0 = 1
a1 = x2 (1)
a2 = x2 (2)ElseIf tvarka = 3 Tada
b0 = Y1 (0) * y2 (0)
b1 = Y1 (0) * y2 (1) Y1 (1) * y2 (0)
b2 = Y1 (0) * y2 (2) Y1 (1) * y2 (1)a0 = 1
a1 = x1 (1) x2 (1)
a2 = x2 (2) x1 (1) * x2 (1)
Kitas
b0 = Y1 (0) * y2 (0)
b1 = Y1 (0) * y2 (1) Y1 (1) * y2 (0)
b2 = Y1 (0) * y2 (2) Y1 (1) * y2 (1)a0 = 1
a1 = x1 (1) x2 (1)
a2 = x2 (2) x1 (1) * x2 (1)
End If
LPHPCalcPlot ()
End If
End SubPrivate Sub peakCalcPlot ()
"Apskaičiuokite kreivės vertės
I As Integer = 0 Norėdami diagrama (myKey). PtsArray.Length - 1
iExp = (10 * (10 ^ ((i first20) / (gWidth / 3,0))))
yAxisValue = 0,0
omega = 2 *
pi * iExp / Fs
cosW0 = Cos (omega)
cos2W0 = Cos (2.0 * omega)
num = (b0 ^ 2) (b1 ^ 2) (b2 ^ 2) (2,0 * cosW0 * ((b0 * b1) (b1 * b2))) (2,0 * cos2W0 * b0 * b2)
den = 1,0 (a1 ^ 2) (a2 ^ 2) (2,0 * cosW0 * (a1 (a1 * a2))) (2,0 * cos2W0 * a2)
yAxisValue = (Abs (p / den))
Grafikas (myKey). PtsArray (i). X = i
Grafikas (myKey). PtsArray (i). Y = 3 * (10 * log10 ((yAxisValue))) gHeightCenter
Next i
End Sub
tikrai i useed šias formules apskaičiuoti a0 ..... b2 nuo standartinės formulės didn darbas man i naudojamas gavo formules nuo:
LPF: O (s) = 1 / (s ^ 2 S / Q 1)
b0 = (1 - cos (w0)) / 2
b1 = 1 - cos (w0)
b2 = (1 - cos (w0)) / 2
a0 = 1 alfa
a1 = -2 * cos (w0)
a2 = 1 - alfaHPF: O (s) = s ^ 2 / (s ^ 2 S / Q 1)
b0 = (1 cos (w0)) / 2
b1 = - (1 cos (w0))
b2 = (1 cos (w0)) / 2
a0 = 1 alfa
a1 = -2 * cos (w0)
a2 = 1 - alfabet ir Dono, kodėl šios formulės dosen darbą, ir taip pat manau, jei aš noriu, kad 3 ir 4 kad man reikia vertė A3, A4, B3, B4, taip pat, i am ištaisyti?