Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 4

QPSK SİMÜLASYONU

Bu raporda, gürültülü bir kanalda QPSK modülasyonunun simülasyonu yapılmıştır.


Simülasyon Matlab 2012b ile yazılan kod ile gerçeklenmiştir. Bu kod ile ilgili açıklamalar
aşağıda verilmiştir.

Bu çalışmada QPSK modülasyonu için gürültülü kanalda simülasyon yapılmıştır.


Simülasyonda gönderilen sembol sayısı 2000 ve simülasyonun üzerinde koştuğu kanal sayısı
1000 olarak alınmıştır. İlk kısımda ‘BER’, ‘SNR’ ve ‘gain’ için sıfır matrisleri tanımlanmıştır.
Buradaki ‘n_gain’ ile tanımlanan kaç SNR ve BER değeri üzerinden simülasyonun
koşturulacağıdır.

İlk for döngüsü ‘gain’ ile tanımlanan gürültüye bağlı olarak SNR’yi değiştiren
değerler için yazılmıştır.

İkinci ve üçüncü for döngüleri ortalaması alınan 1000 adet kanal için tanımlanmıştır.
Bu kısımda, QPSK modülasyonlu veri, ‘veri_1’ ile üretilmiştir, burada veriyi üretmek için
“randn” Matlab komutu kullanılmıştır. Rastgele gürültü ise “randn” Matlab komutu
kullanılarak ‘gurultu’ tanımı ile üretilmiştir.’ p_s’ ve ‘p_n’ sırasıyla işaret ve gürültü
güçleridir ve ‘veri’ ile tanımlanan kısım ise gönderilen işarete gürültü eklenmiş durumdur.
Üçüncü for döngüsünde QPSK demodülasyonu ve ‘t_ber’ (bit hatası) ile tanımlanan BER
değerine ulaşmak için kullanılan değerler vardır.

Programın son kısmında ise BER ve SNR değerleri oluşturulup, Matlab’ın “semilogy”
komutuyla BER-SNR grafiği çizdirilmiştir.

İlgili simülasyonda kullanılan kod aşağıdaki gibidir.

%QPSK modülasyonu için simülasyon

clear all,clc
close all

sembol_sayisi=2000; % gönderilen sembol sayısı

n_gain=10; % Grafikte kullanılacak SNR-BER'in kaç tane değeri olacağı belirlenir


BER=zeros(1,n_gain); % n_gain kadar 0 matrisi oluşturuldu
SNR=zeros(1,n_gain); % n_gain kadar 0 matrisi oluşturuldu
gain=zeros(1,n_gain); % n_gain kadar 0 matrisi oluşturuldu
gain(1)=1;

1
for qq=2:n_gain
gain(qq)=gain(qq-1)/sqrt(1.6); % SNR artışını ayarlamak için
end

for gn=1:n_gain

p_s=0; %işaret gücü


p_n=0; %gürültü gücü
t_ber=0; %hatalı bit

for kanal_sayisi=1:1000

veri_1=2*(rand(1,sembol_sayisi)>.5)-1+(2*(rand(1,sembol_sayisi)>.5)-1)*1i;%QPSK'lı veri

gurultu=gain(gn)*(randn(1,length(veri_1))+randn(1,length(veri_1))*1i);%random gürültü

% Kanal çıkışı
veri=veri_1+gurultu;

p_s=p_s+norm(veri_1)*norm(veri_1); % işaret gücü elde edildi; norm komutu ile kareleri


toplamının karekökü alınır

p_n=p_n+norm(gurultu)*norm(gurultu);% gürültü gücü elde edildi; norm komutu ile


kareleri toplamının karekökü alınır

for n = 1 : sembol_sayisi

if(real(veri(n)) > 0 && imag(veri(n)) > 0) xm(n)=complex(1.0,1.0);end


if(real(veri(n)) > 0 && imag(veri(n)) < 0) xm(n)=complex(1.0,-1.0);end
if(real(veri(n)) < 0 && imag(veri(n)) > 0) xm(n)=complex(-1.0,1.0);end
if(real(veri(n)) < 0 && imag(veri(n)) < 0) xm(n)=complex(-1.0,-1.0);end

t_ber=t_ber+(abs(veri_1(n)-xm(n))* abs(veri_1(n)-xm(n)))/4; % hatalı bit


end

end % kanal sayısı

BER(gn)=t_ber/(2*(length(veri_1))* kanal_sayisi);%QPSK’da 2 bit olduğu için 2 ile


%çarpıldı

SNR(gn)=10*log10(p_s/p_n);

fprintf('SNR=%f\t BER=%f\n',SNR(gn),BER(gn));
end%gain

2
%SNR-BER grafiği
semilogy(SNR,BER)
grid
xlabel('SNR(dB)')
ylabel('BER')
title('QPSK modülasyonlu gürültülü gürültülü kanalda performans grafiği')

Aşağıdaki simülasyon sonucu oluşan BER ve SNR sayısal değerleri verilmiş olup, performans
grafiğinde gösterilmişlerdir.

SNR=-0.001396 BER=0.158797

SNR=2.037834 BER=0.103064

SNR=4.085659 BER=0.054670

SNR=6.124375 BER=0.021475

SNR=8.167714 BER=0.005226

SNR=10.207329 BER=0.000613

SNR=12.250051 BER=0.000021

SNR=14.289667 BER=0.000000

SNR=16.334178 BER=0.000000

SNR=18.375615 BER=0.000000

3
QPSK modülasyonlu gürültü kanalda performans grafiği
0
10

-1
10

-2
10
BER

-3
10

-4
10

-5
10
-2 0 2 4 6 8 10 12 14
SNR(dB)

Yiğit MAHMUTOĞLU/ 293021

You might also like