[1]:
import matplotlib.pyplot as plt
from matplotlib.mlab import psd
import numpy as np
from sk_dsp_comm import sigsys as ss
from caf_verilog.quantizer import quantize

Quantization

Sample Signal

[2]:
n = np.arange(0,10000)
x = np.cos(2*np.pi*0.211*n)
[3]:
Px, f = psd(x,2**10,Fs=1)
plt.plot(f, 10*np.log10(Px))
plt.ylim([-80, 25])
plt.ylabel("Power Spectral Density (dB)")
plt.xlabel(r'Normalized Frequency $\omega/2\pi$')
plt.show()
../_images/nb_examples_Quantization_4_0.png

Prepare a signal using scikit-dsp-comm’s simpleQuant

[4]:
n_bits = 12
yq = ss.simple_quant(x,n_bits,max(x),'sat')
Px, f = psd(yq,2**10,Fs=1)
plt.plot(f, 10*np.log10(Px))
plt.ylim([-80, 25])
plt.ylabel("Power Spectral Density (dB)")
plt.xlabel(r'Normalized Frequency $\omega/2\pi$')
plt.show()
../_images/nb_examples_Quantization_6_0.png
[5]:
plt.plot(yq[:10])
[5]:
[<matplotlib.lines.Line2D at 0x7f7ff7d4aec0>]
../_images/nb_examples_Quantization_7_1.png

Prepare a signal scaled to 12 bits using quantize

[6]:
ys12 = quantize(x, 12)
[7]:
Px12, f12 = psd(ys12,2**10,Fs=1)
plt.plot(f12, 10*np.log10(Px12))
plt.ylabel("Power Spectral Density (dB)")
plt.xlabel(r'Normalized Frequency $\omega/2\pi$')
plt.show()
../_images/nb_examples_Quantization_10_0.png
[8]:
plt.plot(ys12[:10])
[8]:
[<matplotlib.lines.Line2D at 0x7f7ff7e57cd0>]
../_images/nb_examples_Quantization_11_1.png

Prepare a signal scaled to 8 bits using quantize

[9]:
ys8 = quantize(x, 8)
[10]:
Px8, f8 = psd(ys8,2**10,Fs=1)
plt.plot(f8, 10*np.log10(Px8))
plt.ylabel("Power Spectral Density (dB)")
plt.xlabel(r'Normalized Frequency $\omega/2\pi$')
plt.show()
../_images/nb_examples_Quantization_14_0.png
[11]:
plt.plot(ys8[:10])
[11]:
[<matplotlib.lines.Line2D at 0x7f7ff7ac2590>]
../_images/nb_examples_Quantization_15_1.png

Comparison

[12]:
plt.plot(f12, 10*np.log10(Px12))
plt.plot(f8, 10*np.log10(Px8))
plt.ylabel("Power Spectral Density (dB)")
plt.xlabel(r'Normalized Frequency $\omega/2\pi$')
plt.legend(['12-bit Quantization', '8-bit Quantization'])
plt.savefig('quantization_cos.png', dpi=300)
plt.show()
../_images/nb_examples_Quantization_17_0.png