projects
/
4yp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' into images
[4yp.git]
/
phasenoise1signal.m
diff --git
a/phasenoise1signal.m
b/phasenoise1signal.m
index
e0ee39d
..
fcd371a
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,36
+24,33
@@
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');
+modData =
d
pskmod(data, M, 0, 'gray');
x = txFilter(modData, rolloff, span, sps);
x = txFilter(modData, rolloff, span, sps);
-linewidthTx = 0;
%1e5;
% Hz
+linewidthTx = 0; % Hz
linewidthLO = 1e6; % Hz
linewidthLO = 1e6; % Hz
-%%linewidthTx = Rsym * 1e-4; % Hz
-%%linewidthLO = Rsym * 1e-3; % Hz
[xPN, pTxLO] = phaseNoise(x, linewidthTx, linewidthLO, Tsamp);
snr = EbN0_db + 10 * log10(log2(M)) - 10 * log10(sps);
[xPN, pTxLO] = phaseNoise(x, linewidthTx, linewidthLO, Tsamp);
snr = EbN0_db + 10 * log10(log2(M)) - 10 * log10(sps);
-noiseEnergy = 10 ^ (-snr / 10);
-y = awgn(xPN, snr, 'measured');
+%%y = awgn(xPN, snr, 'measured');
+y = xPN;
r = rxFilter(y, rolloff, span, sps);
r = rxFilter(y, rolloff, span, sps);
-[rPhaseEq, phiests] = phaseNoiseCorr(r, M, 40 * sps);
-rPhaseEq = normalizeEnergy(rPhaseEq, numSymbs, 1 + noiseEnergy);
-rSampled = r
PhaseEq(sps*span/2+1:sps:(numSymbs + span/2) *
sps);
-
demodData = pskdemod(rSampled, M, 0, 'gray')'
;
+rSampled = r
(sps*span/2+1:sps:(numSymbs+span/2)*
sps);
+
[rSaPhEq, phiests] = phaseNoiseCorr(rSampled, M, 40)
;
-[bitErrors, ber] = biterr(data, demodData)
+demodData = dpskdemod(rSaPhEq, M, 0, 'gray');
+[bitErrors, ber] = biterr(data, demodData.')
figure(2);
figure(2);
-plot(
-phiests
);
+plot(
repelem(-phiests, sps)
);
hold on;
plot(pTxLO);
legend('estimate', 'actual');
hold on;
plot(pTxLO);
legend('estimate', 'actual');
@@
-61,13
+58,14
@@
title('Phase noise estimation');
hold off;
figure(3);
hold off;
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;