Я пытаюсь реализовать код, который представляет квантователь.Вход должен быть треугольной волной, а квантователь должен делать это в течение 6 битов.Я должен сделать так, чтобы значения в оси Y отображались в двоичном виде с использованием кода Грея.
Мой код следующий:
import matplotlib.pyplot as plt
from scipy import signal
from sympy.combinatorics.graycode import GrayCode
import numpy as np
Q=6
A=2
def uniform_midrise_quantizer(x, Q):
# limiter
x = np.copy(x)
idx = np.where(np.abs(x) >= 1)
x[idx] = np.sign(x[idx])
# linear uniform quantization
xQ = Q * (np.floor(x/Q) + .5)
return xQ
t2=GrayCode(6)
t1=np.linspace(0,1,40*5000)
x=A*signal.sawtooth(2*np.pi*5000*t1,0.5)
xQ=uniform_midrise_quantizer(x,Q)
plt.plot(t1,xQ)
plt.xlim(0,4/5000)
plt.xlabel("Time[s]")
plt.ylabel("")
plt.title("Uniform midrise quantizer for input y(t)")
Может кто-нибудь помочь мне поместить двоичные файлы кода Грея вY-ось.Для десятичных чисел вывод должен быть:
