Matlab环境中16-QAM的性能仿真(共3页).docx
精选优质文档-倾情为你奉上Matlab环境下16-QAM仿真1.原理框图均匀随机数M=2n 的QAM信号映射器+=+高斯随机数高斯随机数检测器比较差错计数器2.matlab程序:clear all;nsymbol=;%每种信噪比下的发送符号数M=16;%16-QAMgraycode=0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10;%格雷码编码规则EsN0=5:20;%信噪比的范围snr1=10.(EsN0/10);%将dB值转化成线性值msg=randint(1,nsymbol,M);%由0-15的整数值组成的均匀随机数msg1=graycode(msg+1);%将随机数映射成格雷码msgmod=qammod(msg1,M);%16-QAM调制spow=norm(msgmod).2/nsymbol;%求出每个符号的平均功率for indx=1:length(EsN0) sigma=sqrt(spow/(2*snr1(indx) ;%根据符号功率求出噪声功率 rx=msgmod+sigma*(randn(1,length(msgmod)+j*randn(1,length(msgmod); %混入高斯加性白噪声 y=qamdemod(rx,M);%16-QAM的解调 decmsg=graycode(y+1);%格雷码的逆映射 err,ber(indx)=biterr(msg,decmsg,log2(M);%求误比特率 err,ser(indx)=symerr(msg,decmsg);%求误符号率Endp4=2*(1-1/sqrt(M)*qfunc(sqrt(3*snr1/(M-1);ser1=1-(1-p4).2;%理论误符号率ber1=1/log2(M)*ser1;%理论误比特率semilogy(EsN0,ber,'o',EsN0,ser,'*',EsN0,ser1,EsN0,ber1,'-k.');title('16-QAM载波调制信号在AWGN信道下的性能');xlabel('Es/N0');ylabel('误比特率和误符号率');legend('误比特率','误符号率','理论误符号率','理论误比特率');scatterplot(msgmod);%画出调制之后的星座图title('16-QAM调制之后的星座图');xlabel('同相分量');ylabel('正交分量');scatterplot(rx);%画出混入高斯加性白噪声后的星座图title('16-QAM信号经过AWGN信道之后的星座图');xlabel('同相分量');ylabel('正交分量');程序说明: 先将均匀随机数映射成格雷码,再用qammod函数实现16-QAM调制,已调信号由分别表示幅度和相位的两部分数据构成。计算出每个符号的平均功率之后,再根据信噪比算出噪声的平均功率。将噪声叠加到已调信号上,对幅度和相位两部分都叠加上噪声。其后通过qamdemod函数解调,得到由格雷码表示的数据,再通过格雷码的逆映射还原出0-15组成的均匀随机数,再与没有调制的数据比较,得出误比特率和误符号率。并画出调制之后的信号和叠加了噪声之后的已调信号的星座图。3.仿真结果:专心-专注-专业