QPSK调制解调的仿真.docx
(2.2.1)Mt)、Q(t)分别为同相和正交支路,3C为载波频率,那么相干解调后,同相支路相乘可得:Ii(t)=SQPSK(t)cosct=Kt)cosct+Q(t)sinctcosct=1(t)cos2wct+Q(t)sinwet/2=Kt)2-1(t)cos2ct+Q(t)sin2ct(2.2.(2) 支路相乘可得:Qq(t)=SQPSK(t)sinct-1(t)cosct+Q(t)sinctsinct=1(t)sinct×cosct+Q(t)sin2ct=I(t)sin2ct2+Q(t)-Q(t)cos2ct(2.2.(3)经过低通滤波器可得:Ii(t)=0.51(也Qq(t)=0.5Q(t)(2.2.(4)原理框图如图2.2所示:放1(t)同信任道门限=0<n<FHI鲁Y;)回回图2.3QPSK调制与解调系统总框图3仿真与分析3.1程序仿真流程图程序仿真流程图是程序仿真的步骤与大体框架,基干流程图,我们可以有效的避开程序次序的先后问题,将主程序分割成许多个子程序来逐一实现,严格依据流程图的次序进行编程仿真。最终将各个子程序综合起来实现最终的程序仿真。流程图如图3.1所示图3.2matlab调制仿真图3.3QPSK解调方式Matlab仿真正交支路和同相支路分别设置两个相关器(或匹配滤波器),得到Mt)和Q(t),经电平判决和并/串变换后即可复原原始信息CI_demo=QPSK_rc_nO.*cos(2*pi*fl*tl);%解调(相干解调,与裁波相乘)Q_demo=QPSK_rc_nO.*sin(2*pi*f1*t1);1.reCOVer=COnV(1.demo,XrC);%低通茂波Q_rccover=conv(Q_dcmo,xrc);2基帝信号,2O0511.52xW*调制信号yl1002003C04£0500解谓电出Iimiau200.511.5基帝信号功率谐密度20406080100Frequency(Hz)调制信号功率谱密度。-10-20.30蜀-50.6020406080100Frequency(Hz)解调输出功率诺密度GHZQP)AUGnb8waMJ0d204060801Fmquency(Hz)o-10-20-3040-50-aH/gpAUUanbaEZMOd图3.4志向信道下的QPSK仿真结果图3.4结果显示,完成了QPSK信号在志向信道上的调制,传输,解调的过程,由于调制过程中加进了栽波,因此调制信号的功率谱密度会发生改变。并且可以看出调制解调的结果没有误码。理论学问有限、文中难免出现不足之处,敬请各位老师指贵指正。分考文献1张志勇等.精通matlab6.5>>J.北京:北京航空航天高校出版社,2003.3.2JohnG-ProakisMasoudSalehiGerhardBaUCh.著刘树棠附录%主文件%题目:基于matlab环境下的QPSK仿真%作者:杨遇春%完成日期:2015-01-14%邮箱:%clear;到一个1*100的矩阵datanrz=data.*2-1;%变成极性码data1=zeros(1,nbdclta-T);%创建一个l*nb/delta_T的零矩阵forq=l:nbdata1(q-1)delta-T+1:q/dclta_T)=datanrz(q);%将极性码变成对应的波形信号end%将基带信号变换成对应波形信号dataO=zeros(1,nbdelta-T);%创建一个l*nb/delta_T的零矩阵forq=l:nbdata(q-1)delta-T+1:q/dclta_T)=data(q);%将极性码变成对应的波形信号end%放射的信号data2=abs(fft(data1);%串并转换,将奇偶位数据分开idata=datanrz(1:ml:(nb-1);%将奇偶位分开,因此间隔ml为2qdata=datanrz(2:ml:nb);%QPSK信号的调制ich=zeros(lfnb/delta_T/2);%创建一个l*nb/delta_T/2的零矩阵,以便后面存放奇偶位数据fori=l:nb/2%瑞利衰落信道和高斯信道%瑞利衰落信道ray_ich=raylrnd(0.8,l,nb/2/delta_T);ray_qch=raylrnd(0.8,l,nb/2/delta_T);Ray_idata=idatal.*ray_ich;Ray_qdata=qdatal.*ray-qch;Ray_s=Ray_idata+Ray_qdata;%通过高斯信道之后的信号%快速傅里叶变换得到频谱%高斯噪声曲线%高斯信道sl=awgn(s,SNR);sil=abs(fft(sl);si1l=sl-s;%Awgn_s=awgn(Ray_s,SNR);%通过高斯信道再通过瑞利哀落信道%elseqdata3(n)=0;endend%为了显示星座图,将信号进行处理idata4=zeros(l,nb2);qdata4=zeros(l,nb2);forn=l:nb/2Awgn_ichsum(n)=sum(idata2(n-l)/delta_T+l:n/dclta_T)*delta_TifAwgn_ichsum(n)>=0idata4(n)=l;elseidata4(n)=0;endAwgn_qchsum(n)=sum(qdata2(n-l)/delta_T+l:n/delta_T)*delta_T;ifAwgn_qchsum(n)>=0qdata4(n)=l;elseqdata4(n)三0;endend%abs(demodata-data)求接收端和放射端%数据差的肯定值,累计之后就是误码个数Ray_num_BER=sum(abs(Ray_dcmodata-data)%误码率计算%调用了Cm_sm320;和Cm_sm33()函数%声明:函数声明在另外俩个M文件中%作用:cm_sm32()用于瑞利信道误码率的计算%cm_sm33()用于高斯信道误码率的计算%ecohon/off作用在于确定是否显示指令内容%SNRindBl=O:!:6;SNRindB2=0:0.1:6;%瑞利衰落信道fori=1:length(SNRindB1),pb,ps=cm-sm32(SNRindBl(i);%比特误码率smld_bit_ray_err_prb(i)=pb;Smk1.SymbO1.ray_err_Prb(i)=ps;disp(ps,pb);echooff;h=spectrum.welch;%类似于C语言的宏定义,便利以下的调用%输出显示部分%第一部分(志向)figured)subplot(3,2,l);PIot(data),title('基带信号');axis(020000-22);subplot(3,2,2);PSdhdata1,Rs),titleC基带信号功率基密度subplot(3,2,3);PlOt(三),titl*调制信号上axis(0500-33);SUbPlOt(3,2,4);psd(h,s,'fs',fs),title('调制信号功率谱密度');subplot(3,2,5);plot(demodata1),title('解调输出');%通过高斯信道再通过瑞利衰落信道figure(3)subplot(2,2,l)plot(Ray.s),title(,调制信号(Ray+Awgn)');axis(O500-55);subplot(2,2,2);PSdhRay_s;s/s),titled调制信号功率谱密度(Ray);subplot(2,2,3);fori=l:nb/2plot(idata(i),qdata(i),r+,),title('QPSK信号星座图(Awgn+Ray)');holdon;axis(-22-22);plot(Ray_ichsum(i),Ray_qchsum(i),'*');holdon;Iegendr理论值(放射端)实际值(接收端);endSUbPIOH2,2,4)SCmiIogy(SNRindB2,theo_err_awgn_prb,'r'),title('误码率曲线');holdon;semilogy(SNRindB1,smld_bit_awgn_crr_prb,'r*');holdon;semilogy(SNRindB2,theo_err_ray_prb);holdon;SemilogyISNRindB1,smld_bit_ray_err_prb,'*j;xlabel(EbNo)jylabel(BER');Iegend('理论AWGN;仿真AWGN?理论Rayleigh;仿真Rayleigh');%文件2functionpb,ps=cm_sm32(snr_in_dB)%pb,ps=cm_sm32(snr_in_dB)%CM_SM3findsthepr