QPSKシステムのMatlabプロットが理論上のBER曲線と完全に一致しない


9

直交位相シフトキーイング(QPSK)システムの理論上のビットエラーレート(BER)曲線が、シミュレーションされた曲線から約1 dBシフトしているという事実について簡単な説明があるかどうかを誰かが知っていますか?


長すぎない場合は、コードを共有できますか?いろいろなことかもしれません。

@George-jeep9911の要求に応じてコードを投稿してください!それがなければ、潜在的な原因を推測することしかできません。私はこの質問をデジタル信号処理のための私たちのサイトに移動します、彼らはそこであなたをよりよく助けることができるでしょう。
ケビンフェルメール

2
おそらく、理論上のBER曲線の計算に使用される式を共有することもできますか?シンボルエラー確率の理論式から導き出された曲線がビットエラー確率のシミュレーションされた曲線と比較された(およびその逆の)場合、多くの混乱と心痛をもたらした多くの事例がありました。SNRの計算、または特定のSNRを信号振幅に変換する際のエラーも一般的です。
Dilip Sarwate、2012年

回答:


9

簡単な説明は、シミュレーションにエラーがあることです。以下は、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;

QPSKビット誤り率プロット

BPSK / QPSK変調のビット誤り率の理論式は次のとおりです。

Pb=Q(2EbN0)

情報ビットあたりエネルギーであることを覚えておいてください。と間のやや微妙な違い、シンボルあたりエネルギーは、対象に新しい人をつまずくことがよくあります。この違いは、QPSKとBPSKが関数として表されたときに同じビットエラーレートをもつ理由も説明します。QPSKに移行してもビットエラーパフォーマンスのメリットは得られませんが、占有帯域幅を減らして所定のビットレートを達成できます。E b E s E bEbEbEsEbN0


1
Ps=2Q(2EbN0)[Q(2EbN0)]2
P(AB)=P(A)+P(B)P(AB)=P(A)+P(B)P(A)P(B)=2pp2
p

質問してもいいですか?ビットあたりのエネルギーをどのように計算しますか?つまり、実際には1に等しくないということです。では、ビットあたりのエネルギーを計算する方法を実際に説明できますか?どうもありがとうございました!
Khanh Nguyen 2013

Es1Mk=0Kn=0Ns|x[kNs+n]|2MNsEb=Es2
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.