import sk_dsp_comm.sigsys as ss
x,b, data = ss.nrz_bits(1000,10)
y = ss.cpx_awgn2(x,10,10)
#
from sk_dsp_comm import digitalcom as dc
import numpy as np
import matplotlib.pyplot as plt
Ns = 8 # samples per QPSK symbol
x_qpsk, b, data = dc.mpsk_gray_encode_bb(10000,Ns,4,'src')
Px_qpsk, f_qpsk = ss.psd(x_qpsk,2**10,Ns)
#
EsN040 = 40
var_w_dB=-40.
y_40dB = ss.cpx_awgn2(x_qpsk,40,Ns,var_w=var_w_dB)
Py_40dB, f_qpsk = ss.psd(y_40dB,2**10,Ns)
#
EsN010 = 10
y_10dB = ss.cpx_awgn2(x_qpsk,EsN010,Ns,var_w=var_w_dB)
Py_10dB, f_qpsk = ss.psd(y_10dB,2**10,Ns)
#
plt.plot(f_qpsk,10*np.log10(Px_qpsk), label='Tx')
plt.plot(f_qpsk,10*np.log10(Py_40dB),label='Rx, $E_s/N_0 =$ %2.0fdB' % (EsN040,))
plt.plot(f_qpsk,10*np.log10(Py_10dB),label='Rx, $E_s/N_0 =$ %2.0fdB' % (EsN010,))
plt.title(r'Shaped QPSK Before & After AWGN2 with %2.0f dB Noise Floor' % (var_w_dB,))
plt.xlabel(r'Frequency ($f/Rs$)')
plt.ylabel(r'PSD (dB)')
plt.legend()
plt.grid()
plt.show()
