QPSK sisteminin Matlab planı, teorik BER eğrileri ile mükemmel bir uyum içinde değil


9

Bir Quadrature faz kaydırma anahtarlama (QPSK) sisteminin teorik bit hata oranı (BER) eğrilerinin simüle edilen eğrilerden yaklaşık 1 dB kaydırılmış olduğu konusunda basit bir açıklama olup olmadığını bilen var mı?


Çok uzun değilse, kodunuzu paylaşabilir misiniz? Çeşitli şeyler olabilir.

@George - Lütfen kodunuzu jeep9911 tarafından talep edildiği şekilde gönderin! Onsuz, sadece potansiyel nedenleri tahmin edebiliriz. Bu soruyu dijital sinyal işleme için sitemize taşıyorum, orada size daha iyi yardımcı olacaklar.
Kevin Vermeer

2
Belki de teorik BER eğrisini hesaplamak için kullanılan ifadeyi paylaşabilirsiniz. Sembol hatası olasılığı için teorik ifadeden türetilen eğrinin, bit hatası olasılığı için simüle edilmiş eğri ile karşılaştırıldığı (ve tam tersi) birçok karışıklık ve gönül yarası meydana gelmiştir. SNR hesaplamadaki hatalar veya belirli bir SNR'yi sinyal genliklerine çevirme de yaygındır.
Dilip Sarwate

Yanıtlar:


9

Basit açıklama, simülasyonunuzda bir hata olmasıdır. İşte MATLAB'da çalışan bir tane:

% 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 bit hata oranı grafiği

BPSK / QPSK modülasyonu için bit hata oranı için teorik ifadenin:

Pb=S(2EbN-0)

akılda tutarak Ebolduğu bilgisi bit başına enerji . Biraz ince bir ayrımEb ve Es, Simge enerjisini , genellikle konuya yeni insanlarla kadar gezileri şeydir. Bu fark aynı zamanda QPSK ve BPSK'nın bir fonksiyonu olarak ifade edildiğinde neden aynı bit hata oranına sahip olduğunu açıklar.EbN-0; QPSK'ya geçerek herhangi bir bit hatası performans avantajı elde edemezsiniz, ancak daha az dolu bant genişliğiyle belirli bir bit hızına erişebilirsiniz.


1
Ana soru hakkındaki yorumumda belirttiğim gibi, başka bir karışıklık kaynağı da sembol hata oranının
Ps=2S(2EbN-0)-[S(2EbN-0)]2
en az bir bit yanlış bir şekilde demodüle edilirse sembol yanlış olduğundan , faz içi ve kareleme dallarındaki bit hataları bağımsızdır ve
P(birB)=P(bir)+P(B)-P(birB)=P(bir)+P(B)-P(bir)P(B)=2p-p2
bağımsız olasılık olayları için p
Dilip Sarwate

Bir soru sorabilir miyim? Bit başına enerjiyi nasıl hesaplarsınız? Yani, gerçekte, 1'e eşit değildir. Peki, gerçekte bit başına enerjiyi nasıl hesaplayacağımı açıklayabilir misiniz? Çok teşekkür ederim!
Khanh Nguyen

@KhanhNguyen: Zamanlama senkronizasyonunu gerçekleştirdiğinizi varsayarsak, birçok sembol periyodunda gözlenen sinyalin toplam kare büyüklüğünü ortalayarak sembol başına enerjiyi tahmin edebilirsiniz. Yani,Es1MΣk=0KΣn=0N-s|x[kN-s+n]|2, nerede M ortalama ve N-ssembol başına sahip olduğunuz örnek sayısıdır. QPSK için, sembol başına 2 bit vardır, bu nedenleEb=Es2.
Jason R
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.