📄 qpsk2.m
字号:
% QPSK 2
clear all, close all
N = 1000;
iter = 100;
expSymErrs = 10;
EbNo = 0:1:10;
bitsnrdB = EbNo;
bitsnrlin = 10.^(bitsnrdB/10);
theo_berr = 0.5*erfc(sqrt(bitsnrlin));
theo_serr = 1 - (1 - theo_berr).^2;
semilogy(bitsnrdB,theo_berr,'m', bitsnrdB,theo_serr,'g');
axis([0 max(EbNo) 1e-6 1]);
grid on
hold on
drawnow
for t = 1:length(EbNo)
idx = 1;
errSym = 0;
while ((idx <= iter) || (sum(errSym) <= expSymErrs))
s = 1/sqrt(2)*(randsrc(N,1) + j*randsrc(N,1));
% Compute EsNo
EsNo = EbNo(t) + 10*log10(2);
EsNolin = 10.^(EsNo/10);
No = 1/EsNolin; % Assuming Es = 1
var = No; %
n = sqrt(var/2)*(randn(N,1) + j*randn(N,1));
x = s + n;
% Detection follows
alph = [1+j, 1-j, -1+j, -1-j]/sqrt(2);
detx = zeros(N,1);
for tt = 1:N
[val,id] = min(abs(x(tt) - alph));
detx(tt) = alph(id);
end
errSym(idx) = length(find(s ~= detx));
idx = idx + 1;
end
pe(t) = mean(errSym)/N;
semilogy(EbNo(t),pe(t),'-ob')
drawnow
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -