Cześć. Próbuję napisać funkcję do kompresji dźwięku z wykorzystaniem tych wzorów poniżej, jednak nie potrafię znaleźć błędu który mogę popełniać.
def kompresja(dane):
x = dane.copy()
a = 87.6
F=np.zeros(x.shape[0])
# zakresy
idx1 = x < (1/a)
idx2 = np.logical_not(idx1) # x mają wartość od -1 do 1
# kompresja
F[idx1] = (a * np.abs(x[idx1])) / (1 + np.log(a))
F[idx2] = ( 1 + np.log( a * np.abs(x[idx2])) ) / (1 + np.log(a))
F = np.sign(F)
return F
Pisałem już bardzo podobną do tego kompresję μ-law i nie miałem z nią problemów, tym większe moje zdziwienie że nie mogę znaleźć błędu tutaj.