Anda di halaman 1dari 2

Simulasi BER BASK, BFSK, BPSK, dan DPSK (Arif Rahmadian Arifianto)

%Script menyimulasikan sistem BASK, BFSK, x_DPSK(1) = bit(1); if (Z_BFSK(iter2) > 0 && bit(iter2) == 0) ||
BPSK, dan DPSK dan membandingkan %Melakukan differential encoding (Z_BFSK(iter2) < 0 && bit(iter2) == 1);
%dengan teori. for iter_DPSK = 1:Sig_Length E_BFSK = E_BFSK + 1;
x_DPSK(iter_DPSK + 1) = end
%Penulis: ARIF RAHMADIAN ARIFIANTO - xor(x_DPSK(iter_DPSK),bit(iter_DPSK));
18117016 end %Detektor BPSK
%Referensi dan Inspirasi: %Memasukkan sinyal dif. encoding ke modulator Z_BPSK(iter2) = Y_BPSK(iter2);
%#https://www.mathworks.com/matlabcentral/fileex BPSK %Decision circuit BPSK
change/67649-matlab-code-for-ber-performance-of-b x_DPSK = 2*x_DPSK-1; if (Z_BPSK(iter2) > 0 && bit(iter2) == 0) ||
inary-ask-digital-modulation (Z_BPSK(iter2) < 0 && bit(iter2) == 1);
%#https://www.mathworks.com/matlabcentral/fileex %Pembangkitan AWGN kompleks E_BPSK = E_BPSK + 1;
change/28649-ber-of-bfsk-in-awgn-channel N_ril = sqrt(No(iter)/2)*randn(1,Sig_Length); end
%#https://www.mathworks.com/matlabcentral/fileex N_imj = sqrt(No(iter)/2)*randn(1,Sig_Length);
change/66310-ber-for-bpsk-over-awgn-channel-vs-th N = N_ril + 1j*(N_imj); %Mengubah sinyal BPSK menjadi diff.
eoretical encoding
%Pembangkitan AWGN kompleks untuk DPSK if Y_DPSK(iter2+1) > 0.5
%Variabel bebas: (panjang DPSK berbeda dengan Z_pre_DPSK(iter2+1) = 1;
%Sig_Length - Panjang sinyal simulasi %modulasi lainnya else
%Eb - Besar bit energy yang digunakan N_ril_DPSK = Z_pre_DPSK(iter2+1) = 0;
sqrt(No(iter)/2)*randn(1,Sig_Length+1); end
%Panjang sinyal yang ditransmisikan N_imj_DPSK =
Sig_Length = 200000; sqrt(No(iter)/2)*randn(1,Sig_Length+1); %Detektor diff. encoding
%Besar bit energy N_DPSK = N_ril_DPSK + 1j*(N_imj_DPSK);
Eb = 1; Z_DPSK(iter2)=(xor(Z_pre_DPSK(iter2),Z_pre_DP
%Menambahkan AWGN kepada sinyal hasil SK(iter2+1)));
%Eb/No untuk teori (resolusi tinggi) modulasi %Decision circuit DPSK
EtoN_dB = linspace(0,20,100); Y_BASK = x_BASK + N; if (Z_DPSK(iter2) > 0.5 && bit(iter2) == 0) ||
EtoN = 10.^(EtoN_dB/10); Y_BFSK = x_BFSK + N; (Z_DPSK(iter2) < 0.5 && bit(iter2) == 1);
Y_BPSK = x_BPSK + N; E_DPSK = E_DPSK + 1;
%Eb/No untuk simulasi (resolusi 5 titik data) Y_DPSK = x_DPSK + N_DPSK; end
EtoN_dB_sim = linspace(0,20,5); end
EtoN_sim = 10.^(EtoN_dB_sim/10); %Detektor BPSK untuk sinyal DPSK
for iter_DPSK = 1:Sig_Length+1 %Perhitungan BER simulasi
%No untuk simulasi if Y_DPSK(iter_DPSK) > 0 BER_BASK_sim(iter) = E_BASK/Sig_Length;
No = Eb./EtoN_sim; Y_DPSK(iter_DPSK) = 1; BER_BFSK_sim(iter) = E_BFSK/Sig_Length;
else BER_BPSK_sim(iter) = E_BPSK/Sig_Length;
%Perhitungan BER teoretis Y_DPSK(iter_DPSK) = 0; BER_DPSK_sim(iter) = E_DPSK/Sig_Length;
BER_BASK_te = (1/2)*erfc(sqrt(EtoN/4)); end end
BER_BFSK_te = (1/2)*erfc(sqrt(EtoN/2)); end
BER_BPSK_te = (1/2)*erfc(sqrt(EtoN)); %Pembuatan grafik
BER_DPSK_te = (1/2)*exp(-EtoN); %Mengubah bit pertama sinyal BPSK menjadi semilogy(EtoN_dB,BER_BASK_te,'k','color','red');
diff. encoding hold on
for iter = 1:length(EtoN_sim) if Y_DPSK(1) > 0.5 semilogy(EtoN_dB_sim,BER_BASK_sim,'k*','color',
%Inisiasi nilai error awal Z_pre_DPSK(1) = 1; 'red');
E_BASK = 0; Z_DPSK(1) = 1; semilogy(EtoN_dB,BER_BFSK_te,'k','color','green');
E_BFSK = 0; else semilogy(EtoN_dB_sim,BER_BFSK_sim,'k*','color','
E_BPSK = 0; Z_pre_DPSK(1) = 0; green');
E_DPSK = 0; Z_DPSK(1) = 0; semilogy(EtoN_dB,BER_BPSK_te,'k','color','blue');
end semilogy(EtoN_dB_sim,BER_BPSK_sim,'k*','color','
%Pembangkitan sinyal biner secara random blue');
bit = randi([0 1],1,Sig_Length); for iter2 = 1:Sig_Length semilogy(EtoN_dB,BER_DPSK_te,'k','color','cyan');
%Detektor BASK semilogy(EtoN_dB_sim,BER_DPSK_sim,'k*','color',
%Pembangkitan sinyal modulasi BFSK Z_BASK(iter2) = (Y_BASK(iter2)); 'cyan');
x_BFSK = bit+1j*(~bit); %Decision circuit BASK legend('BASK teori','BASK simulasi','BFSK
if (Z_BASK(iter2) > 0.5 && bit(iter2) == 0) || teori','BFSK simulasi','BPSK teori','BPSK
%Pembangkitan sinyal modulasi BASK (Z_BASK(iter2) < 0.5 && bit(iter2) == 1); simulasi','DPSK teori','DPSK
x_BASK = bit; E_BASK = E_BASK + 1; simulasi','location','best');
end axis([min(EtoN_dB) max(EtoN_dB) 10^(-6) 1]);
%Pembangkitan sinyal modulasi BPSK xlabel('Eb/No (dB)');
x_BPSK = 2*bit-1; %Detektor BFSK ylabel('BER');
Z_BFSK(iter2) = title('Grafik BER terhadap Eb/No');
%Pembangkitan sinyal modulasi DPSK real(Y_BFSK(iter2))-imag(Y_BFSK(iter2)); grid on;
%Mendefinisikan bit pertama DPSK sebagai bit %Decision circuit BFSK hold off
pertama sinyal masukan
Hasil grafik dari ​script

Anda mungkin juga menyukai