📄 qamver2aseli.m
字号:
clear all;
clc;
samp=16 %mendefinisikan jumlah sampling yaitu 16
SNR=20; %mendefinisikan nilai SNR
data=randint(1,256,2,1) %membangkitkan data biner sebanyak 256 bit
t=0:1/samp:1-(1/samp); %konstelasi 16 titik
data1=reshape(data,4,[]);
%%MAPPING PADA INPHASE%%
SI1=2*data1(1:4:end)-1; %mendefinisikan nilai 1 dan -1 pada diagram konstelasi
SI2=2*data1(2:4:end)+1; %mendefinisikan nilai 3 dan -3 pada diagram konstelasi
mapI=SI1.*SI2 %menggabungkan nilai 1 -1 3 -3
%%MAPPING PADA QUADRTURE%%
SQ1=2*data1(3:4:end)-1; %memunculkan nilai 1 dan -1 untuk vector mapping
SQ2=2*data1(4:4:end)+1; %memunculkan nilai 3 dan -3 untuk vector mapping
mapQ=SQ1.*SQ2 %perkalian SQ1 dan SQ2 untuk menghasilkan nilai vector mapping -3 -1 1 3 di basis quadrature
bs=ones(1,10);
qamI=reshape((bs'*mapI),1,[]);
qamQ=reshape((bs'*mapQ),1,[]);
subplot(2,2,1);plot(0:length(qamI)-1,qamI); %plotting sinyal QAM inphase
subplot(2,2,2);plot(0:length(qamQ)-1,qamQ); %plotting sinyal QAM quadrature
spektrumI=abs(fft(qamI));
spektrumQ=abs(fft(qamQ));
subplot(2,2,3);plot(0:length(spektrumI)-1,spektrumI); %plotting spektrum frekuensi QAM inphase
subplot(2,2,4);plot(0:length(spektrumQ)-1,spektrumQ); %plotting spektrum frekuensi QAM quadrature
%%Sinyal ditransmisikan
sket=mapI+i*mapQ;
scatterplot(sket);grid on; % plotting sinyal ke dalam mapping modulasi 16-QAM
%%Sinyal di kanal
kanal=awgn(sket,SNR,'measured');
scatterplot(kanal);grid on; % plotting sinyal dengan awgn ke dalam mapping modulasi 16-QAM
%%DEMODULASI
ref=[-3 -1 1 3 ]; %referensi mapping
rxI=real(kanal) %pemisahan nilai real sinyal dari kanal
rxQ=imag(kanal) %pemisahan nilai imaginer sinyal dari kanal
for i=1:length(rxI)
d1=abs(rxI(i)-ref);
[p rxI(i)]=min(d1);
d2=abs(rxQ(i)-ref);
[p rxQ(i)]=min(d2);
end
rxII=de2bi(rxI-1,'left-msb',2)'; % menkonversi nilai decimal ke biner dari sinyal terima inphase lalu flag dari output di balik dari kiri
rxQQ=de2bi(rxQ-1,'left-msb',2)'; % menkonversi nilai decimal ke biner dari sinyal terima quadrature lalu flag dari output di balik dari kiri
rx=reshape([rxII;rxQQ],1,[]);
biterr(data,rx) %Hitung nilai BER
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -