QPSK 시스템의 Matlab 플롯이 이론적 BER 곡선과 완벽하게 일치하지 않습니다


9

QPSK (Quadrature Phase-Shift Keying) 시스템의 이론적 BER (Berial-Error Rate) 곡선이 시뮬레이션 된 곡선에서 약 1dB 이동되었다는 사실에 대한 간단한 설명이 있는지 아는 사람이 있습니까?


너무 길지 않다면 코드를 공유 할 수 있습니까? 다양한 것들이 될 수 있습니다.

@George-jeep9911의 요청에 따라 코드를 게시하십시오! 그것 없이는 잠재적 인 원인 만 추측 할 수 있습니다. 이 질문을 디지털 신호 처리를 위해 당사 사이트로 옮기면 더 효과적으로 도와 드릴 수 있습니다.
케빈 베르메르

2
아마도 이론적 BER 곡선을 계산하는 데 사용 된 표현을 공유 할 수 있습니까? 심벌 에러 확률에 대한 이론적 표현으로부터 도출 된 곡선이 비트 에러 확률에 대한 시뮬레이트 된 곡선과 비교되고 (그 반대의 경우도) 많은 혼란과 상심을 초래하는 경우가 많이 있었다. SNR을 계산하거나 주어진 SNR을 신호 진폭으로 변환 할 때 발생하는 오류도 흔합니다.
Dilip Sarwate

답변:


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 변조의 비트 오류율에 대한 이론적 표현은 다음과 같습니다.

=(2이자형0)

명심하십시오 이자형는 IS 정보 비트 당 에너지 . 약간의 미묘한 차이이자형이자형에스심볼 당 에너지는 종종 주제로 새로운 사람들을 여행 무언가이다. 이 차이점은 QPSK와 BPSK의 비트 오류율이 같은 함수 인 이유를 설명합니다.이자형0; 적은 점유 대역폭으로 특정 비트 전송률을 달성 할 수 있지만 QPSK로 이동하면 비트 오류 성능 이점을 얻을 수 없습니다.


1
주요 질문에 대한 의견에서 언급했듯이 혼란의 또 다른 원인은 심볼 오류율이
에스=2(2이자형0)[(2이자형0)]2
경우 기호가 잘못이기 때문에 적어도 1 비트 위상 및 직교 지점에 잘못 비트 오류를 복조 독립적이며,
()=()+()()=()+()()()=22
독립적 인 확률 사건
Dilip Sarwate

질문을해도 되나요? 비트 당 에너지는 어떻게 계산합니까? 실제로는 1과 같지 않습니다. 비트 당 에너지를 어떻게 계산합니까? 대단히 감사합니다!
Khanh Nguyen

@KhanhNguyen : 타이밍 동기화를 달성했다고 가정하면 여러 심볼주기에 걸쳐 관측 된 신호의 누적 제곱 크기를 평균하여 심볼 당 에너지를 추정 할 수 있습니다. 그건,이자형에스1미디엄케이=0케이=0에스|엑스[케이에스+]|2, 어디 미디엄 평균 이상의 기호 수 에스기호 당 가지고있는 샘플 수입니다. QPSK의 경우 심볼 당 2 비트가 있으므로이자형=이자형에스2.
Jason R
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.