一、MATLAB仿真实现步骤
1.产生二进制数据流
2.将二进制数据转换为整型数据(qammod函数默认输入整型数据)
3.16-QAM调制
4.加AWGN
5.绘制加AWGN前后的星座图
6.16-QAM解调
7.将整型输出数据转换为二进制数据
8.计算BER
二、MATLAB仿真代码
M=16
k=log2(M)
n=30000
sps=1
rng default
datain=randi([0 1],n*k,1);
datasymbolsin=bit2int(datain,k)
datamod=qammod(datasymbolsin,M,'bin')
datamodG=qammod(datasymbolsin,M)
Ebn0=5
snr=convertSNR(Ebn0,'ebno',SamplesPerSymbol=sps,BitsPerSymbol=k)
receivedsignal=awgn(datamod,snr,"measured")
receivedsignalg=awgn(datamodG,snr,"measured")
splotfig=scatterplot(receivedsignal,1,0,'y.')
hold on
scatterplot(datamod,1,0,'k*',splotfig)
title('binary consellation')
splotfig2=scatterplot(receivedsignalg,1,0,'g.')
hold on
scatterplot(datamodG,1,0,'k*',splotfig2)
title('gray consellation')
datasymbolsout=qamdemod(receivedsignal,M,'bin')
datasymbolsoutg=qamdemod(receivedsignalg,M)
dataout=int2bit(datasymbolsout,k)
dataoutg=int2bit(datasymbolsoutg,k)
[numerros,ber]=biterr(datain,dataout)
fprintf('\nThe binary coding error rate is %5.2e,based on %d errors.\n',ber,numerros)
[numerrosg,berg]=biterr(datain,dataoutg)
fprintf('\nThe gray coding error rate is %5.2e,based on %d errors.\n',berg,numerrosg)
三、MATLAB仿真结果星座图展示:
(1)当Eb/n0=5时:
(2)当Eb/n0=20时