def kaiser(samples, beta): result = [0] * samples M = samples - 1 for i in range(samples): num = special.iv(1, beta*math.sqrt(1-(2*i/M - 1)**2)) den = special.iv(1, beta) result[i] = num / den return result
2012-05-01
Window function - Kaiser w Python
Tutaj implementacja w Python z wykorzystaniem odwołania do scipy.special.iv, czyli Modified Bessel function of first order. Mam nadzieję, że w następnym poście podam kod na scipy.special.iv. Wtedy wszystko będzie już gotowe do przeniesienia w C#. By tam generować BLEP-y programowo jakie się nam wymarzy.
2012-04-30
Transformata Z i równanie różnicowe filtru dolnoprzepustowego drugiego stopnia
Filtr dolnoprzepustowy pierwszego stopnia zostanie omówiony w innym poście. Nie możemy użyć poniższych wzorów podstawiając po prostu A=0. Ale za to podstawienie A=0 i B=0 daje poprawne wyniki.
Filtru dolnoprzepustowego drugiego stopnia:
H(s)=1s2R1R2C1C2+s(R1C1+R2C2)+1
Ogólnie:
H(s)=1s2A+sB+1
Filtr pierwszego stopnia to filtr dla którego A = 0.
Korzystając z wzoru na związek pomiędzy transformatą Laplaca a Z:
s=2T(z−1)(z+1)
Po przekształceniach otrzymujemy:
H(z)=T2+2T2z−1+T2z−24A+2TB+T2+(2T2−8A)z−1+(4A−2TB+T2)z−2
Co możemy zapisać jako:
H(z)=b0+b1z−1+b2z−21+a1z−1+a2z−2
, gdzie:
a0=4A+2TB+T2
a1=(2T2−8A)/a0
a2=(4A−2TB+T2)/a0
b0=T2/a0
b1=2T2/a0
b2=T2/a0
T to okres co jaki chcemy otrzymywać kolejne próbki, w naszym przypadku jest to częstotliwość z jakiej wielokrotnością custom chip jest w stanie zmieniać wyjście.
Filtr zapisany w takiej postaci to Digital biquad filter.
Takie funkcji przejścia odpowiada następujące równianie różnicowe:
y(n)=b0x(n)+b1x(n−1)+b2x(n−2)−a1y(n−1)−a2y(n−2)
Wszystko to pozwala nam na generowania przebiegów BLEP wprost z równania różnicowego, którego parametry są bezpośrednio określone parametrami elektrycznymi filtra i częstotliwością z jaką chcemy ciągły sygnał próbkować.
Filtru dolnoprzepustowego drugiego stopnia:
H(s)=1s2R1R2C1C2+s(R1C1+R2C2)+1
Ogólnie:
H(s)=1s2A+sB+1
Filtr pierwszego stopnia to filtr dla którego A = 0.
Korzystając z wzoru na związek pomiędzy transformatą Laplaca a Z:
s=2T(z−1)(z+1)
Po przekształceniach otrzymujemy:
H(z)=T2+2T2z−1+T2z−24A+2TB+T2+(2T2−8A)z−1+(4A−2TB+T2)z−2
Co możemy zapisać jako:
H(z)=b0+b1z−1+b2z−21+a1z−1+a2z−2
, gdzie:
a0=4A+2TB+T2
a1=(2T2−8A)/a0
a2=(4A−2TB+T2)/a0
b0=T2/a0
b1=2T2/a0
b2=T2/a0
T to okres co jaki chcemy otrzymywać kolejne próbki, w naszym przypadku jest to częstotliwość z jakiej wielokrotnością custom chip jest w stanie zmieniać wyjście.
Filtr zapisany w takiej postaci to Digital biquad filter.
Takie funkcji przejścia odpowiada następujące równianie różnicowe:
y(n)=b0x(n)+b1x(n−1)+b2x(n−2)−a1y(n−1)−a2y(n−2)
Wszystko to pozwala nam na generowania przebiegów BLEP wprost z równania różnicowego, którego parametry są bezpośrednio określone parametrami elektrycznymi filtra i częstotliwością z jaką chcemy ciągły sygnał próbkować.
Subskrybuj:
Posty (Atom)