projects
/
4yp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added images from previous 2 weeks
[4yp.git]
/
phasenoise1signal.m
diff --git
a/phasenoise1signal.m
b/phasenoise1signal.m
index
e0ee39d
..
f819e65
100644
(file)
--- a/
phasenoise1signal.m
+++ b/
phasenoise1signal.m
@@
-2,14
+2,14
@@
numSymbs = 10000;
M = 4;
Rsym = 2.5e10; % symbol rate (sym/sec)
M = 4;
Rsym = 2.5e10; % symbol rate (sym/sec)
-rolloff = 0.
2
5;
+rolloff = 0.5;
span = 6; % filter span
sps = 4; % samples per symbol
fs = Rsym * sps; % sampling freq (Hz)
Tsamp = 1 / fs;
span = 6; % filter span
sps = 4; % samples per symbol
fs = Rsym * sps; % sampling freq (Hz)
Tsamp = 1 / fs;
-t = (0 : 1 / fs : numSymbs / Rsym + (1.5 * span * sps - 1) / fs)';
+t = (0 : 1 / fs : numSymbs / Rsym + (1.5 * span * sps - 1) / fs)
.
';
EbN0_db = 8;
EbN0_db = 8;
@@
-24,50
+24,58
@@
EsN0_db = 10 .* log10(EsN0);
data = randi([0 M - 1], numSymbs, 1);
data = randi([0 M - 1], numSymbs, 1);
-modData = pskmod(data, M, 0, 'gray');
+pskSym = pskmod(data, M, pi/M, 'gray');
+dpskSym = dpskmod(data, M, pi/M, 'gray');
-x = txFilter(modData, rolloff, span, sps);
+xPSK = txFilter(pskSym, rolloff, span, sps);
+xDPSK = txFilter(dpskSym, rolloff, span, sps);
-linewidthTx = 0;%1e5; % Hz
-linewidthLO = 1e6; % Hz
-%%linewidthTx = Rsym * 1e-4; % Hz
-%%linewidthLO = Rsym * 1e-3; % Hz
+linewidthTx = 0; % Hz
+linewidthLO = 10e6; % Hz
+
+[xPSKpn, pTxLoPSK] = phaseNoise(xPSK, linewidthTx, linewidthLO, Tsamp);
+[xDPSKpn, pTxLoDPSK] = phaseNoise(xDPSK, linewidthTx, linewidthLO, Tsamp);
-[xPN, pTxLO] = phaseNoise(x, linewidthTx, linewidthLO, Tsamp);
snr = EbN0_db + 10 * log10(log2(M)) - 10 * log10(sps);
snr = EbN0_db + 10 * log10(log2(M)) - 10 * log10(sps);
-noiseEnergy = 10 ^ (-snr / 10);
-y = awgn(xPN, snr, 'measured');
+%%y = awgn(xPN, snr, 'measured');
+yPSK = awgn(xPSKpn, snr, 'measured');
+yDPSK = xDPSKpn;
+
+rPSK = rxFilter(yPSK, rolloff, span, sps);
+rDPSK = rxFilter(yDPSK, rolloff, span, sps);
-r = rxFilter(y, rolloff, span, sps);
-
[rPhaseEq, phiests] = phaseNoiseCorr(r, M, 40 *
sps);
-r
PhaseEq = normalizeEnergy(rPhaseEq, numSymbs, 1 + noiseEnergy
);
+
rPSKSa = rPSK(sps*span/2+1:sps:(numSymbs+span/2)*
sps);
+r
DPSKSa = rDPSK(sps*span/2+1:sps:(numSymbs+span/2)*sps
);
-rSampled = rPhaseEq(sps*span/2+1:sps:(numSymbs + span/2) * sps);
-demodData = pskdemod(rSampled, M, 0, 'gray')';
+[rPSKSaPhEq, phiestsPSK] = phaseNoiseCorr(rPSKSa, M, pi/M, 40);
-[bitErrors, ber] = biterr(data, demodData)
+demodPSK = pskdemod(rPSKSaPhEq, M, pi/M, 'gray');
+demodDPSK = dpskdemod(rDPSKSa, M, pi/M, 'gray');
+[bitErrors, ber] = biterr(data, demodPSK.')
+
figure(2);
figure(2);
-plot(
-phiests
);
+plot(
t(1:40000), repelem(-phiestsPSK, sps)
);
hold on;
hold on;
-plot(
pTxLO
);
+plot(
t(1:40000), pTxLoPSK(1:40000)
);
legend('estimate', 'actual');
title('Phase noise estimation');
hold off;
legend('estimate', 'actual');
title('Phase noise estimation');
hold off;
-
+return
figure(3);
figure(3);
-plot(t(1:length(x)), real(
x
));
+plot(t(1:length(x)), real(
normalizeEnergy(x, numSymbs*sps, 1)
));
hold on;
hold on;
-plot(t, real(rPhaseEq), 'r');
-
%%
sampledTimes = t(sps*span/2+1:sps:(numSymbs+span/2)*sps);
+
%%
plot(t, real(rPhaseEq), 'r');
+sampledTimes = t(sps*span/2+1:sps:(numSymbs+span/2)*sps);
%%plot(sampledTimes, real(rSampled), 'x');
%%plot(sampledTimes, real(rSampled), 'x');
+plot(sampledTimes, real(normalizeEnergy(rSaPhEq, numSymbs, 1)), 'x');
legend('original signal', 'corrected received signal');
legend('original signal', 'corrected received signal');
-title('Phase noise correction, linewidth 1 MHz,
E_b/N_0=8
dB');
+title('Phase noise correction, linewidth 1 MHz,
$E_b/N_0=8$
dB');
ylabel('Real part of signals');
axis([t(1) t(300) -Inf +Inf]);
hold off;
ylabel('Real part of signals');
axis([t(1) t(300) -Inf +Inf]);
hold off;