Biểu đồ Matlab của hệ thống QPSK không hoàn toàn đồng ý với các đường cong BER lý thuyết


9

Có ai biết nếu có một lời giải thích đơn giản về thực tế là các đường cong tỷ lệ lỗi bit (BER) lý thuyết của hệ thống khóa dịch pha pha cầu phương (QPSK) xấp xỉ 1 dB được dịch chuyển từ các đường cong mô phỏng không?


Nếu nó không quá dài, bạn có thể chia sẻ mã của mình không? Nó có thể là một loạt các thứ.

@George - Vui lòng gửi mã của bạn theo yêu cầu của jeep9911! Không có nó, chúng ta chỉ có thể đoán ở những nguyên nhân tiềm năng. Tôi đang chuyển câu hỏi này đến trang web của chúng tôi để xử lý tín hiệu số, họ sẽ có thể giúp bạn tốt hơn ở đó.
Kevin Vermeer

2
Có lẽ bạn cũng có thể chia sẻ biểu thức được sử dụng để tính đường cong BER lý thuyết? Đã có nhiều trường hợp đường cong xuất phát từ biểu thức lý thuyết cho xác suất lỗi ký hiệu đã được so sánh với đường cong mô phỏng cho xác suất lỗi bit (và ngược lại) dẫn đến nhiều nhầm lẫn và đau lòng. Lỗi trong tính toán SNR, hoặc dịch SNR đã cho thành biên độ tín hiệu, cũng rất phổ biến.
Dilip Sarwate

Câu trả lời:


9

Giải thích đơn giản là có một lỗi trong mô phỏng của bạn. Đây là một hoạt động trong 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;

Biểu đồ tỷ lệ lỗi bit QPSK

Lưu ý rằng biểu thức lý thuyết cho tỷ lệ lỗi bit cho điều chế BPSK / QPSK là:

Pb= =Q(2EbN0)

EbEbESEbN0


1
PS= =2Q(2EbN0)-[Q(2EbN0)]2
P(MộtB)= =P(Một)+P(B)-P(MộtB)= =P(Một)+P(B)-P(Một)P(B)= =2p-p2
p

Tôi có thể đặt một câu hỏi? Làm thế nào để bạn tính toán năng lượng mỗi bit? Ý tôi là, trong thực tế, nó không bằng 1. Vì vậy, bạn có thể giải thích trong thực tế làm thế nào để tôi tính năng lượng trên mỗi bit? Cảm ơn rât nhiều!
Khánh Nguyễn

ES1MΣk= =0KΣn= =0NS|x[kNS+n]|2MNSEb= =ES2
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.