课程设计(II)通信系统仿真MQAM在瑞利信道下的性能仿真1、课程设计目的(1)了解MQAM多进制幅度调制技术原理(2)在MATLAB环境下编程实现调制、解调过程(3)在MATLAB环境下仿真不同MQAM的误码率,并绘制曲线(4)比较16QAM误比特率在理论和实际条件下的误差2、课程设计内容本课题在MATLAB环境下,进行多进制调制在瑞利信道下进行信号传输的仿真实验,传输信号在发送端进行MQAM调制,并分析在不同的多进制调制下,信号在瑞利信道下的性能,并比较。3、设计与实现过程3.1设计思想和设计流程首先进行系统的分析的设计,整个设计分为如下几个部分:随机序列的产生,序列的串并和并串转换,16QAM调制,星座图的绘制,16QAM解调,加入噪声,误码率的测量及绘图。MQAM信号由2个独立的基带波形对2个相互正交的同频载波进行调制而构成,利用其在同一带宽内频谱正交的性质来实现两路并行的数字信息传输。调制后的信号经信道传输,由于信道的非理想特性,MQAM信号会发生频率选择性衰减/码间干扰、相位旋转以及受各种噪声的影响,这部分影响都包含在信道模型中。数字通信中数据采用二进制数表示,星座点的个数是2的幂。常见的MQAM形式有16-QAM、64-QAM、256-QAM等。星座的点数越多,符号能够传输的数据量就越大。但是,如果在星座图的平均能量保持不变的情况下增加星座点,基于星座图聚类的方法成为了数字幅相调制信号识别的重要方法之一。会使星座点之间的距离变小,进而导致误码率上升。因此高阶星座图的可靠性比低阶要差。3.1.1调制器串并转换单元、IQ分路单元及调制混频器组成了MQAM系统的调制器。将串行数据转换成并行数据是通过串并转换完成的;IQ分路主要的作用是检测调制的要求,调制混频器的作用是把I、Q两路信号混频及合成,最终形成调制信号输出。的调制方式有两种:正交调幅法和复合相移法。本次仿真针对MQAM.,采用正交调幅法。16QAM3.1.2解调器瑞利分布是一个均值为0,方差为σ2的平稳窄带高斯过程,其包络的一维分布是瑞利分布。瑞利分布是最常见的用于描述平坦衰落信号接收包络或独立多径分量接受包络统计时变特性的一种分布类型。两个正交高斯噪声信号之和的包络服从瑞利分布。把接收到的信号通过正交相干解调法解调,将接收的信号分成两路,一路与cosct相乘,另一路与sinct相乘。然后再经过低通滤波器来滤除掉乘法器产生出的高频分量,获得原先的信号。低通滤波器输出可以通过抽样判决恢复出原电平信号。然后再经过并/串变换得到原数据。3.2调制、解调框图3.3实现过程3.3.1clearall;clc;echooff;closeall;N=10000;%设定码元数量fb=1;%基带信号频率fs=32;%抽样频率fc=4;%载波频率,为便于观察已调信号,我们把载波频率设的较低Kbase=2;%Kbase=1,不经基带成形滤波,直接调制;Kbase=2,基带经成形滤波器滤波后,再进行调制info=random_binary(N);%产生二进制信号序列[y,I,Q]=qam(info,Kbase,fs,fb,fc);%对基带信号进行16QAM调制y1=y;y2=y;%备份信号,供后续仿真用T=length(info)/fb;m=fs/fb;nn=length(info);dt=1/fs;t=0:dt:T-dt;subplot(211);%便于观察,这里显示的已调信号及其频谱均为无噪声干扰的理想情况%由于测试信号码元数量为10000个,在这里我们只显示其总数的1/10plot(t(1:1000),y(1:1000),t(1:1000),I(1:1000),t(1:1000),Q(1:1000),[035],[00],'b:');title('已调信号(In:red,Qn:green)');%傅里叶变换,求出已调信号的频谱n=length(y);y=fft(y)/n;y=abs(y(1:fix(n/2)))*2;q=find(y<1e-04);y(q)=1e-04;y=20*log10(y);f1=m/n;f=0:f1:(length(y)-1)*f1;subplot(223);plot(f,y,'r');gridon;title('已调信号频谱');xlabel('f/fb');%画出16QAM调制方式对应的星座图subplot(224);constel(y1,fs,fb,fc);title('星座图');SNR_in_dB=8:2:24;%AWGN信道信噪比forj=1:length(SNR_in_dB)y_add_noise=awgn(y2,SNR_in_dB(j));%加入不同强度的高斯白噪声y_output=qamdet(y_add_noise,fs,fb,fc);%对已调信号进行解调numoferr=0;end;fori=1:Nif(y_output(i)~=info(i)),numoferr=numoferr+1;end;end;Pe(j)=numoferr/N;%统计误码率end;figure;semilogy(SNR_in_dB,Pe,'red*-');gridon;xlabel...