from pylab import *
def sgn(v):
if v >= 0:
return 1
else:
return -1
def fi(y):
"Inverse mu-law"
return sgn(y) * (256**(abs(y)) - 1) / 255
def ff(x):
"Forward mu-law"
return sgn(x) * log(1 + 255 * abs(x)) / log(256)
figure(figsize = (10, 8))
X = arange(-1, 1.01, .01)
Y = [fi(y) for y in X]
plot(X, Y)
xlabel("y")
ylabel("F⁻¹(y)")
title ("Inverse μ-law function")
axis((-1, 1, -1, 1))
grid()
savefig("mu-law-inv.svg")
figure(figsize = (10, 8))
Y = [ff(x) for x in X]
plot(X, Y)
xlabel("x")
ylabel("F(x)")
title ("μ-law function")
axis((-1, 1, -1, 1))
grid()
savefig("mu-law.svg")
show()