⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qamver2aseli.m

📁 this for 16QAM with AWGN and BERR
💻 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 + -