您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 基于MATLAB的OQPSK调制解调实现
周翌《基于MATLAB的OQPSK调制解调实现》第1页共22页基于MATLAB的OQPSK调制解调实现学生姓名:周翌指导老师:吴志敏摘要本课程设计的目标在于深切理解OQPSK调制与解调的基本原理,学会使用MATALB软件中的M文件来实现OQPSK的调制与解调以及分析加入不同噪声时对信号的影响程度。首先产生一个数字基带信号,接下来调用MATLAB中的相应函数对这个基带信号进行调制,然后分析调制后的波形:,记录结果后对调制后的信号进行解调,观察解调结果并做好记录,最后在信号中加入噪声并观察其时频图的变化,分析信噪比的噪声对调制结果的影响。本课程设计的实验开发/运行平台为windowsXP/windows7,程序设计使用MATLAB语言。通过调试运行,基本完成设计目标,达到调制与解调的目的。关键词:MATLAB;M文件;OQPSK;调制与解调;噪声1引言数字调制与解调技术在数字通信中占有非常重要的地位,数字通信技术与MATLAB的结合是现代通信系统发展的一个必然趋势。在数字信号通信过程中,噪声的影响往往比较大,同时我们都希望有较高的频带利用率和功率利用率,而OQPSK也是一种恒包络调制技术,其频谱特性好,既保留着2PSK的高抗噪声性能、高频带利用率和高功率利用率,又有效地减弱了2PSK的“反相工作”缺陷,在通信研究中有着非常重要的意义,特别是在卫星通信和移动通信的领域有着广泛的应用。MATLAB作为当前国际控制界最流行的面向工程与科学计算的高级语言,在控制系统的分析、仿真与设计方面得到了非常广泛的应用,随着其信号处理专业函数和专业工具箱的成熟,越来周翌《基于MATLAB的OQPSK调制解调实现》第2页共22页越受到通信领域人士的欢迎,其在通信领域的应用也将更加广泛。1.1课程设计目的熟悉OQPSK的基本原理,掌握MATLAB中M文件的使用及相关函数的调用方法,在此基础上通过编程实现OQPSK的调制与解调,并通过加入的噪声来判断所设计的系统性能。这次课程设计不仅让我对OQPSK有了更加深入的了解,而且学会了如何利用MATLAB中的M文件来实现通信系统方面的应用,最重要的是,自己能够独立完成一个小项目了,有了这方面的经验,我在以后的学习中就会有更充足的信心和动力。1.2课程设计要求熟悉MATLAB中M文件的使用方法,并在深切理解OQPSK调制解调原理的基础上,编写出OQPSK调制解调程序。绘制出OQPSK信号解调前后在时域和频域中的波形,并观察解调前后频谱有何变化以加深对OQPSK信号解调原理的理解。分别对信号叠加不同噪声,并进行解调,绘制出解调前后信号的时频波形,分析不同噪声对信号传输造成的影响大小。1.3课程设计步骤先产生随机信号,然后对信号进行调制和解调,在调制和解调过程中加入高斯白噪声,观察现象。1、产生四进制数字作为数字基带信号,对其进行调制;2、将函数调制信号改为相应的时域波形调制信号;3、在函数调制信号中加入高斯白噪声,生成加入噪声后的时域波形调制信号;4、分别生成没加或加了噪声的调制信号波形图和频谱图;5、分别对没加或加了噪声的调制信号进行解调;6、计算误码率。周翌《基于MATLAB的OQPSK调制解调实现》第3页共22页2OQPSK调制解调原理2.1OQPSK调制原理OQPSK,即OffsetQuadraturePhaseShiftKeying的缩写,中文意思为偏置正交相移键控,是QPSK(正交相移键控,又有4PSK之称)的改进,有关QPSK的资料请参考《通信原理(第六版)》[1],这里就不多赘述了。OQPSK与QPSK相同的是相位关系,即:把输入信号分为两路,然后正交调制。所不同的是,OQPSK把同相和正交两支路的码流在时间上错开了半个码元周期。因为两支路码元上偏移了半个周期,每次只能有一路可能发生极性翻转。所以,OQPSK信号能跳变的相位只能是0o、+90o、-90o,不会发生180o的跳变,OQPSK与QPSK相比,信号的包络波动幅度有限,经过限幅放大后的频带范围也要小,所以性能也更加优良。其星座映射图如下(图2-1)所示:图2-1OQPSK星座映射图OQPSK的产生原理方框图如下(图2-2)所示:输入的数据信号是二进制不归零双极性码元,它被“串/并变换”电路变成两路码元a和b后,其每个码元的持续时间是输入码元的2倍,且b路码元在产生后马上增加了一个Ts/2(半个周期)的延时电路。由a路码元和经延时后的b路码元相加的信号即为OQPSK调制信号。周翌《基于MATLAB的OQPSK调制解调实现》第4页共22页图2-2OQPSK的产生原理框图2.2OQPSK解调原理OQPSK信号的解调原理图如下(图2-3)所示,OQPSK信号可以看作是两个正交信号2PSK信号a和b,且b路信号在时间上延迟了半个周期Ts/2后再与a路信号的叠加,所以用两路正交的相干载波和一个Ts/2延时器就可以分离这两路延迟正交的2PSK信号,且b路信号应该先延时Ts/2再进行抽样判决。这样产生的两路并行信号a和b,经过“并/串变换”后,成为串行数据输出,即解调信号。图2-3OQPSK的解调原理框图3仿真实现过程3.1OQPSK调制信号的产生首先利用函数x=randint(a,1,[03])产生一串四进制数字基带信号,其中a,1表示生成一个含a个元素的行向量,在这里可以直接表示为生成a个数字基带信号码元。[03]周翌《基于MATLAB的OQPSK调制解调实现》第5页共22页表示产生的随机数的范围是0~3。基带信号产生后可以利用fft(x,1024)对其进行傅里叶变换,得到基带信号的频谱图。再利用函数oqpskmod(x)对基带信号进行调制,由于MATLAB中的oqpskmod(x)函数功能有限,此时的调制信号还不能用波形图表示出来,需要自己编写部分代码(见附录),所以使用调制信号的星座图代替调制信号图,使用函数scatter(y)可生成星座图。代码编写完成后即可得到相应的OQPSK调制波形图,同样使用fft(n,1024)函数来产生波形信号的频谱图,其中n为调制信号,即在调制信号中取1024个点进行傅里叶变换。调制波形图出来以后进行加噪声处理,此处利用的是awgn(n,snr)函数,snr为信噪比的值,先设定snr为1。随后产生加入噪声后的调制信号频谱图。下面先介绍几个关键变量及重要函数,然后将展示出调制过程中出现的比较重要的图形。在这里为了更清晰地看出调制后信号的波形图、频谱图,及方便解调时对比加入噪声后出现的错码位置,只选取8个基带信号。a=8;%基带信号码元个数x=randint(a,1,[03]);%随机产生a个四进制数y=oqpskmod(x);%进行oqpsk调制scatterplot(y)%解调信号的星座图fc=100;%载波频率fs=1600;%抽样频率b=0;%设置初始相位为0s=0;%调制信号的波形图纵坐标初始化n=0;%调制信号波形图二维初始化基带信号(如图3-1):图3-1基带信号周翌《基于MATLAB的OQPSK调制解调实现》第6页共22页基带信号的频谱图如下(图3-2):r=fft(x,1024);%取1024个点对基带信号进行傅里叶变换fr=(0:length(r)-1)*fs/length(r)-fs/2;%横坐标为频域plot(fr,abs(r));%OQPSK基带信号频谱图图3-2基带信号频谱图函数调制信号的星座图如下(图3-3)所示:scatterplot(y)%产生调制信号的星座图图3-3调制信号星座图函数调制信号的星座图会随输入基带信号初值的变化而改变,即不同的第一个信号码元对应不同的星座图。因为OQPSK信号是由两路原本相互正交、但其中一路比另一路早半个周期的信号组成,这就使得第一路信号刚进去时和第二路信号最后进去时系统中都只有一路信号,此时会出现纯实数或纯虚数,即会出现上面调制信号星座图中非角落的点。调制信号波形图如下(图3-4)所示:m=(2*pi*fc*k)/fs+b;%合相位s=sin(m);%生成波形图周翌《基于MATLAB的OQPSK调制解调实现》第7页共22页n=[nsin(m)];%将一维转化为二维g=1:length(n);%g为调制波形图的横坐标plot(g,n)%调制信号波形图图3-4调制信号波形图加了噪声之后的调制信号波形图如下(图3-5)所示:snr=0.01;%信噪比noi=n+awgn(n,snr);%加入噪声后的调制信号图3-5加噪声后的调制信号调制信号频谱图如下(图3-6)所示:s1=fft(n,1024);%去1024个点对调制信号进行傅里叶变化fs1=(0:length(s1)-1)*fs/length(s1)-fs/2;%横坐标为频域plot(fs1,abs(s1));%OQPSK调制信号频谱图周翌《基于MATLAB的OQPSK调制解调实现》第8页共22页图3-6调制信号频谱图调制信号加噪声后的频谱图如下(图3-7)所示:s2=fft(noi,1024);%取1024个点对加噪声后的调制信号进行傅里叶变换fs2=(0:length(s2)-1)*fs/length(s2)-fs/2;%横坐标为频域plot(fs2,abs(s2))%加入噪声后OQPSK调制信号的频谱图图3-7调制信号加入噪声后的频谱图3.2OQPSK解调实现此步建立在已经进行完OQPSK调制的基础之上。在OQPSK的解调过程中,我们周翌《基于MATLAB的OQPSK调制解调实现》第9页共22页使用的是oqpskdemod(y)这个函数,与函数oqpskmod(x)一样,这个函数的功能也非常有限,仅是oqpskmod(x)的逆过程,即oqpskdemod(y)的输入信号必须是oqpskmod(x)的输出信号,否则系统就会报错。在没有加噪声之前,仅依靠简单的oqpskdemod(y)函数就可以将调制后的信号解调出来。k=oqpskdemod(y);%解调信号解调信号如下(图3-8)所示:图3-8解调信号解调信号的频谱图如下(图3-9)所示:jtpp=fft(k,1024);%解调信号的傅里叶变换fj=(0:length(jtpp)-1)*fs/length(jtpp)-fs/2;%横坐标为频域plot(fj,abs(jtpp))%解调信号的频谱图图3-9解调信号的频谱图与上一小节(3.1)中的调制信号进行对比,可以看出时域已经由不规则正弦信号还原成数字信号;且调制信号的频域变化非常快,两个最高峰都超过了50,这样有利于信号在信道中进行传输,而解调信号的频域变化比较缓慢,最高峰也都低于15,已经恢复周翌《基于MATLAB的OQPSK调制解调实现》第10页共22页到基带信号的频域特征了。与上一小节中的基带信号进行对比,可以看出,解调后信号的值和频谱图与原基带信号完全一致,即OQPSK信号经调制后再解调,前后没有发生任何变化,实现了调制与解调的功能。把调制信号当做在信道中传输的信号,此时的信道可以看成绝对理想信道,即信号在信道中的传输过程中没有受到任何干扰。然而实际通信信道中,噪声是不可避免的一个影响信道性能的重要因素,在下一小节中将讨论加入噪声后的解调情况。3.3叠加噪声的OQPSK解调噪声在通信系统中是一个不可忽视的元素,即使没有传输信号,通信系统中也有噪声,噪声永远存在于通信系统中,因此叠加了噪声的模拟OQPSK调制与解调结果会更加具有真实性、更有实用意义。依然在前面的基础上进行下面的步骤,将没加噪声的解调结果和加入信噪比为0.01的噪声后的解调结果作一个对比。加入噪声后的解调信号如下(图3-10)所示:xx=awgn(y,snr);%对调制信号加入噪声jjt=oqpskdemod(xx);%对加入噪声的调制信号进行解调图3-10加入噪声后的解调信号加人噪声后的解调频谱图如下(图3-11)所示:周翌《基于MATLAB的OQPSK调制解调实现》第11页共22页图3-11加人噪声后的解调频谱图此处使用了函数[num,ratio]=symerr(x,jjt)来计算错码数和误码率,其中num为错码
本文标题:基于MATLAB的OQPSK调制解调实现
链接地址:https://www.777doc.com/doc-5426721 .html