有人知道正交相移键控(QPSK)系统的理论误码率(BER)曲线与仿真曲线相距大约1 dB的事实吗?

评论

如果时间不太长,可以共享代码吗?可能是各种各样的事情。

@George-请按照jeep9911的要求发布您的代码!没有它,我们只能猜测潜在的原因。我将这个问题移到我们的网站进行数字信号处理,他们将可以在这里为您提供更好的帮助。

也许您也可以共享用于计算理论BER曲线的表达式?在许多情况下,将符号错误概率的理论表达式得出的曲线与误码概率的模拟曲线进行了比较(反之亦然),这导致了很多混乱和心痛。计算SNR或将给定SNR转换为信号幅度时也很常见。

#1 楼

简单的解释是您的仿真中有错误。这是在MATLAB中工作的一种代码:

% number of symbols in simulation
Nsyms = 1e6;
% energy per symbol
Es = 1;
% energy per bit (2 bits/symbol for QPSK)
Eb = Es / 2;
% Eb/No values to simulate at, in dB
EbNo_dB = linspace(0, 10, 11);

% Eb/No values in linear scale
EbNo_lin = 10.^(EbNo_dB / 10);
% keep track of bit errors for each Eb/No point
bit_err = zeros(size(EbNo_lin));
for i=1:length(EbNo_lin)
    % generate source symbols
    syms = (1 - 2 * (randn(Nsyms,1) > 0)) + j * (1 - 2 * (randn(Nsyms, 1) > 0));
    % add noise
    syms_noisy = sqrt(Es/2) * syms + sqrt(Eb/(2*EbNo_lin(i))) * (randn(size(syms)) + j * randn(size(syms)));
    % recover symbols from each component (real and imaginary)
    syms_rec_r = sign(real(syms_noisy));
    syms_rec_i = sign(imag(syms_noisy));
    % count bit errors
    bit_err(i) = sum((syms_rec_r ~= real(syms)) + (syms_rec_i ~= imag(syms)));
end
% convert to bit error rate
bit_err = bit_err / (2 * Nsyms);

% calculate theoretical bit error rate, functionally equivalent to:
% bit_err_theo = qfunc(sqrt(2*EbNo_lin));
bit_err_theo = 0.5*erfc(sqrt(2*EbNo_lin)/sqrt(2));
figure;
semilogy(EbNo_dB, bit_err, 'bx', EbNo_dB, bit_err_theo, 'r', 'MarkerSize', 10, 'LineWidth', 2);
xlabel('Eb/No (dB)');
ylabel('Bit error rate');
title('QPSK bit error rate');
legend('Simulation','Theory');
grid on;




请注意,BPSK / QPSK调制的误码率的理论表达式为:

$$
P_b = Q \ left(\ sqrt {\ frac {2E_b} {N_0}} \ right)
$$

保持请注意,$ E_b $是每个信息位的能量。 $ E_b $和$ E_s $之间的细微差别(每个符号的能量)经常使刚接触该主题的人绊倒。这种差异也解释了为什么当表示为$ \ frac {E_b} {N_0} $的函数时,QPSK和BPSK具有相同的误码率;尽管您可以使用更少的占用带宽来获得给定的比特率,但是通过迁移到QPSK不会获得任何误码性能优势。

评论


$ \ begingroup $
正如我在对主要问题的评论中指出的那样,另一个引起混淆的原因是符号错误率是$$ P_s = 2Q \ left(\ sqrt {\ frac {2E_b} {N_0}} \ right)- \ left [Q \ left(\ sqrt {\ frac {2E_b} {N_0}} \ right)\ right] ^ 2 $$,因为如果至少一位被错误地解调,则符号是不正确的,同相位错误和正交分支是独立的,并且$$ P(A \ cup B)= P(A)+ P(B)-P(A \ cap B)= P(A)+ P(B)-P(A)P (B)= 2p-p ^ 2 $$用于概率为$ p $的独立事件
$ \ endgroup $
– Dilip Sarwate
2012年1月20日17:53



$ \ begingroup $
我可以问一个问题吗?您如何计算每位能量?我的意思是,实际上,它不等于1。因此,您可以解释一下我如何计算每位能量吗?非常感谢你!
$ \ endgroup $
–庆阮(Khanh Nguyen)
2013年9月25日上午11:45

$ \ begingroup $
@KhanhNguyen:假设您已实现了定时同步,则可以通过对许多符号周期内观察到的信号的累积平方强度求平均值,来估计每个符号的能量。也就是说,$ E_s \ approx \ frac {1} {M} \ sum_ {k = 0} ^ K \ sum_ {n = 0} ^ {N_s} | x [kN_s + n] | ^ 2 $,其中$ M $是平均的符号数,$ N_s $是每个符号的样本数。对于QPSK,每个符号有2位,因此$ E_b = \ frac {E_s} {2} $。
$ \ endgroup $
–Jason R
2013年9月25日12:24