Ejemplo n.º 1
0
 def test_viterbi(self, ndim):
     s = signals.SignalQAMGrayCoded(4, 2 ** 16, fb=20e9, nmodes=ndim)
     s2, ph = cphaserecovery.viterbiviterbi(s, 10, 4)
     assert ndim == s2.shape[0]
Ejemplo n.º 2
0
 def test_viterbi_1d(self):
     s = signals.SignalQAMGrayCoded(4, 2 ** 16, fb=20e9, nmodes=1)
     s2, ph = cphaserecovery.viterbiviterbi(s.flatten(), 10, 4)
     assert 2**16 == s2.shape[0]
Ejemplo n.º 3
0
from qampy import signals

fb = 40.e9
os = 2
fs = os*fb
N = 10**5
theta = np.pi/2.45
M = 4
snr = 14
carrier_f = 1e6
QAM = signals.QAMModulator(M)
X, Sx, Bx = QAM.generate_signal(N, snr, baudrate=fb, samplingrate=fs , carrier_df=carrier_f, dual_pol=False)



E = phaserecovery.viterbiviterbi(X[::2], 9, 4)

evm1 = QAM.cal_evm(E)
evm2 = QAM.cal_evm(X)

plt.figure()
plt.subplot(121)
plt.title('Recovered')
plt.plot(E.real, E.imag, 'ro', label=r"$EVM=%.1f\%%$"%(100*evm1))
plt.legend()
plt.subplot(122)
plt.title('Original')
plt.plot(X.real, X.imag, 'go', label=r"$EVM_y=%.1f\%%$"%(100*evm2))
plt.legend()
plt.show()