span = 6; % Tx/Rx filter span
rolloff = 0.25; % Tx/Rx RRC rolloff
-sps = 2; % samples per symbol
+sps = 8; % samples per symbol
fs = Rsym * sps; % sampling freq (Hz)
Tsamp = 1 / fs;
%% Simulate chromatic dispersion
D = 17; % ps / (nm km)
lambda = 1550; % nm
-z = 5000 % km
+z = 500 % km
-[xCD, xCDkstart] = chromaticDispersion_FFT(x, D, lambda, z, Tsamp);
+[xCD, xCDkstart] = chromaticDispersion(x, D, lambda, z, Tsamp);
EbN0_db = 8;
snr = EbN0_db + 10 * log10(log2(M)) - 10 * log10(sps);
y = xCD;
r = rxFilter(y, rolloff, span, sps);
+
+sps = 2;
+Tsamp = Tsamp * 4;
+
+
[rCDComp, CDCompkstart] = CDCompensation(r, D, lambda, z, Tsamp);
rCDComp = normalizeEnergy(rCDComp, numSymbs*sps, 1);
-rSampled = rCDComp(sps*span/2+1:sps:(numSymbs+span/2)*sps);
-rNoCompSa = r(sps*span/2+1:sps:(numSymbs+span/2)*sps);
+rSampled = rCDComp(2:2:end);
+rNoCompSa = r(2:2:end);
%% if no CD comp, then rotate constellation. Use:
theta = angle(-sum(rNoCompSa .^ M)) / M;
rSampled = rSampled .* exp(-1j * theta);
-
%%rAdaptEq = adaptiveCMA(rSampled);
%{
%% Compare original signal and compensated signal