基于Matlab 2016的OFDM调制与解调的仿真报告

基于Matlab 2016的OFDM调制与解调的仿真报告

ID:35344225

大小:303.54 KB

页数:12页

时间:2019-03-23

上传者:U-9364
基于Matlab 2016的OFDM调制与解调的仿真报告_第1页
基于Matlab 2016的OFDM调制与解调的仿真报告_第2页
基于Matlab 2016的OFDM调制与解调的仿真报告_第3页
基于Matlab 2016的OFDM调制与解调的仿真报告_第4页
基于Matlab 2016的OFDM调制与解调的仿真报告_第5页
资源描述:

《基于Matlab 2016的OFDM调制与解调的仿真报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

基于Matlab2016的OFDM调制与解调的仿真报告学院专业名称姓名学号 目录一、FDM频分多路复用2二、OFDM中的正交2三、调制解调基本原理3四、关键技术34.1DFT/IDFT34.1.1FFT变换44.1.2IFFT变换6五、系统框图及实现7 一、FDM频分多路复用指的是用不同频率传输多路信号,以实现多路通信。复用路数的多少主要取决于允许带宽和费用。频分复用的主要优点是复用路数多、分路方便,因此是目前模拟通信中最主要的一种复用方式,特别是在有线和微波通信系统中获得广泛应用,缺点是设备庞大、复杂。频分复用使用于两大城市间的固定通信。频分复用的另一个缺点是不可避免出现路间干扰,主要原因是系统中存在非线性。例如,多路信号通过公用的放大器时由于非线性失真会引起各路信号频谱交叉重叠,这样就带来路间干扰,在传输话音信号时产生可懂串话。另外频分复用还可以节省功率。实验表明,N路话音信号进行复用时,所需功率不是单个消息所需功率的N倍,而是N开方倍,这时只有1%的时间过载。OFDM即正交频分复用技术,实际上OFDM是多载波调制的一种。其主要思想是:将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到在每个子信道上进行传输。正交信号可以通过在接收端采用相关技术来分开,这样可以减少子信道之间的相互干扰。每个子信道上的信号带宽小于信道的相关带宽,因此每个子信道上的可以看成平坦性衰落,从而可以消除符号间干扰。而且由于每个子信道的带宽仅仅是原信道带宽的一小部分,信道均衡变得相对容易。二、OFDM中的正交正交的定义如下:设有函数f1(t)和f2(t),则在整个区间对f1(t)*f2(t)的积的积分的值=0的情况下,认为函数f1(t)和f2(t)正交。从物理意义上,当然可以理解为二者没有相交,但是很多情况下很难在物理意义上进行理解,所以只要满足上述数学条件就是正交的。至于在频率域或者时间域则没有限制。OFDM产生正交的子载波,产生是用IFFT,IFFT处理其实是完成多载波调制的一个过程,只是从数学角度讲,相当于对其进行了一次IFFT运算,经其调制后,每个子载波在一个OFDM符号周期内都包含整数倍个周期,而且各个相邻子载波之间相差一个周期,其信号频谱实际上是满足乃奎斯特准则的,时域相互正交,频率域相互重叠,即多个子载波之间不存在互相干扰。每个子载波在一个OFDM符号周期内都包含整数倍个周期,而且各个相邻的子载波之间相差1个周期。这一特性可以用来解释子载波之间的正交性,即三、调制解调基本原理123正交频分复用(OFDM)是多载波调制(MCM)技术的一种。MCM的基本思想是把数据流串并变换为N路速率较低的子数据流,用它们分别去调制N路子载波后再并行传输。因子数据流的速率是原来的1/N,即符号周期扩大为原来的N倍,远大于信道的最大延迟扩展,这样MCM就把一个宽带频率选择性信道划分成N个窄带平坦衰落信道,从而“先天”具有很强的抗多径衰落和抗脉冲干扰的能力, 特别适合于高速无线数据传输。OFDM是一种子载波相互混叠的MCM,因此它除了具有上述的优势外,还具有更高的频谱利用率。OFDM选择时域相互正交的子载波,虽然在频域相互混叠,却仍能在接收端被分离出来。上述描述的OFDM系统的实现需要大量的正弦波发生器、滤波器、调制器和相干解调器,因此所需的设备比较复杂。we1nstein和Ebert提出了采用离散傅立叶变换(DFT)来实现多载波调制。随着数字信号处理技术的发展,可以采用快速傅立叶变换(FFT)技术实现,大大降低了OFDM技术实现的复杂程度,使得OFDM技术越来越广泛的应用在各种移动通信系统中。一、关键技术12344.1DFT/IDFTDFT定义:设是连续函数的N个抽样值,这N个点的宽度为N的DFT为:IDFT定义:设是连续频率函数的个抽样值,这N个点的宽度为N的IDFT为: 称为N点DFT的变换核函数,称为N点IDFT的变换核函数。它们互为共轭。同样的信号,宽度不同的DFT会有不同的结果。DFT正逆变换的对应关系是唯一的,或者说它们是互逆的。实际运用中,常采用IFFT/FFT代替IDFT/DFT进行调制,可以显著降低运算复杂度。FFT/IFFTFFT是一种DFT的高效算法,称为快速傅立叶变换(fastFouriertransform)。FFT算法可分为按时间抽取算法和按频率抽取算法,先简要介绍FFT的基本原理设x(n)为N项的复数序列,由DFT变换,任一X(m)的计算都需要N次复数乘法和N-1次复数加法,而一次复数乘法等于四次实数乘法和两次实数加法,一次复数加法等于两次实数加法,即使把一次复数乘法和一次复数加法定义成一次“运算”(四次实数乘法和四次实数加法),那么求出N项复数序列的X(m),即N点DFT变换大约就需要N^2次运算。当N=1024点甚至更多的时候,需要N2=1048576次运算,在FFT中,利用的周期性和对称性,把一个N项序列(设N=2k,k为正整数),分为两个N/2项的子序列,每个N/2点DFT变换需要(N/2)2次运算,再用N次运算把两个N/2点的DFT变换组合成一个N点的DFT变换。这样变换以后,总的运算次数就变成N+2*(N/2)^2=N+(N^2)/2。继续上面的例子,N=1024时,总的运算次数就变成了525312次,节省了大约50%的运算量。而如果我们将这种“一分为二”的思想不断进行下去,直到分成两两一组的DFT运算单元,那么N点的DFT变换就只需要Nlog2N次的运算,N在1024点时,运算量仅有10240次,是先前的直接算法的1%,点数越多,运算量的节约就越大,这就是FFT的优越性。根据上述分析可知1.1.1FFT变换(A)利用Bulestein布鲁斯坦所提出的等式:nk=12[n2+k2-k-n2]则:XZk=n=0N-1x(n)A-nω12[n2+k2-k-n2]=n=0N-1x(n)A-nω12n2ω-(k-n)22ω12k2=ω12k2n=0N-1x(n)A-nω12n2ω-(k-n)22 (B)令gn=x(n)A-nωn22,n=0,1,…,N-1hn=ω-n22,n=0,1,…,M-1可知:Zk点的Z变换值XZk可以通过gn和hn的离散卷积值并乘ω12k2得到,即:XZk=ωk22[gn*hn],k=0,1,…,M-1gn与hn的离散卷积,可以用gn和hn的圆周卷积来实现,而圆周卷积可用FFT的方法来求得。(C)Zk=Aω-k,k=0,1,…,M-1A=A0ejθ0ω=ω0e-jφ0=>Zk=A0ejθ0∙ω0-kejφ0k=A0ω0-kej(θ0+φ0k)=>Z0=A0ejθ0,Z1=A0ω0-1ej(φ0+θ0)Zk=A0ω0-kej(θ0+φ0k)ZM-1=A0ω0-(M-1)ej(θ0+φ0(M-1))(D)当满足下面特殊条件:(a)M=N(b)A=A0ejθ0=1,即A0=1,θ0=0°(c)ω=ω0e-jφ0=e-j2πN,即ω0=1,φ0=2πN此时Zk为均匀分布在单位圆周上,即由CZT变换求出该序列的DFT,此时:XZk=n=0N-1x(n)Zk-n=n=0N-1xn[Aω-k]-n=n=0N-1x(n)(e-j2πN)kn=n=0N-1x(n)e-j2πNkn(E)hn=ω-n22可以想象为频率随时间(n)成线性增长的复指数序列:∵hn=[ω0e-jφ0]-n22=ω0-n22∙ejφ0n22(F)计算DFT的具体步骤:①加长补零将g(n)变成列长为L的序列:L=2mgn=xnA-nωn22=xne-j2πNn22=x(n)e-jπn2N0≤n≤N-1=>gn=xne-jπn2N0≤n≤N-10N≤n≤L-1L≥2N-1且L=2m②求g(n)的DFT利用FFT方法求g(n)序列的DFT Gr=n=0L-1g(n)e-j2πLrn0≤r≤L-1③h(n)补零加长,周期延拓成L点序列:hn=ω-n220≤n≤N-1[ω=e-j2πN]-n22=ejπn2N0N≤n≤L-Nω-(L-N)22L-N+1≤n≤L-1④求h(n)的DFT利用FFT方法求h(n)序列的DFTHr=n=0L-1hne-j2πLrn0≤r≤L-1⑤求G(r)与H(r)的乘积Qr=Gr∙Hr0≤r≤L-1Q(r)即为g(n)*h(n)的频域值∵DFT[g(n)*h(n)]=DFT[g(n)]·DFT[h(n)]⑥作Q(r)的IFFT即可得到:q(k)=g(k)*h(k)=g(k)h(k)由于只有N点有关所以只取前N点序列q(k)=g(k)*h(k)=g(k)h(k)0≤K≤N-1⑦将q(k)与ωk22=[e-j2πN]k22=e-jπNk2相乘即得所要求的N个X(Zk)值,即为x(n)的DFT。1.1.1IFFT变换根据FFT变换分析可知:当ω=ej2πN时x(n)的CZT变换为:XZk=n=0N-1xnZk-n=n=0N-1xn∙ej2πknN0<=n<=N-1因此可推出ω=ej2πN时x(n)的CZT变换后除以数据长度N即可得到IFFT。具体步骤:①加长补零将g(n)变成列长为L的序列:L=2mgn=xnA-nωn22=xnej2πN∙n22=x(n)ejπN∙n2=>gn=xnejπN∙n20≤n≤N-10N≤n≤L-1L≥2N-1且L=2m②求g(n)的DFT:利用FFT求g(n)序列的DFT Gr=n=0L-1g(n)e-j2πLrn0≤r≤L-1③h(n)补零加长,周期延拓成L点序列:hn=ω-n22=ej2πN∙-n22=e-jπN∙n20≤n≤N-10N≤n≤L-Nω-(L-N)22=ej2πN∙-(L-n)22=e-jπN∙(L-n)2L-N+1≤n≤L-1④求h(n)的DFT利用FFT求h(n)序列的DFTHr=n=0L-1hne-j2πLr∙n⑤求G(r)与H(r)的乘积Qr=Gr∙Hr0≤r≤L-1Q(r)即为g(n)*h(n)的频域值∵DFT[g(n)*h(n)]=DFT[g(n)]·DFT[h(n)]⑥作Q(r)的IFFT即可得到:q(k)=g(k)*h(k)由于只有N点相关,所以只取前N点序列⑦将q(k)与ωk22=ej2πN∙k22=ejπNk2相乘即可得到X(n)的DFT。附:a+bjejπN∙n2=a+bj∙[cosπN∙n2+jsin(πN∙n2)]=a∙cosπN∙n2-b∙sinπN∙n2+j[b∙cosπN∙n2+a∙sinπN∙n2]一、系统框图及实现OFDM系统框图如下: 用一千个比特流仿真。仿真结果如下:误码率如下1.000000e-03代码如下:clear;clc;SNR=10;%信噪比fl=100;%设置FFT长度Ns=5;%设置一个OFDM信号的个数para=100;%设置并行传输的子载波个数sr=250000;%符号速率br=sr.*2;%每个子载波的比特率gl=20;%保护时隙的长度nloop=1;%仿真循环次数noe=0;%误码数nod=0;%传输的数据数量eop=0;%误组数nop=0;%传输的分组数foriii=1:nloop %-------------发送部分------------%-------------产生1000个二进制比特流数据------------Signal=rand(1,para*Ns*2)>0.5;%1000个二进制比特流%------------串并转换---------paradata=reshape(Signal,para,Ns*2);%------------QPSK调制--------[ich,qch]=qpskmod(paradata,para,Ns,2);kmod=1./sqrt(2);ich1=ich.*kmod;qch1=qch.*kmod;qpsk_x=ich1+qch1.*sqrt(-1);%频域数据变时域%---------------IFFT------------fy=ifft(qpsk_x);ich2=real(fy);qch2=imag(fy);%--------------插入保护间隔------------ich3=[ich2(fl-gl+1:fl,:);ich2];qch3=[qch2(fl-gl+1:fl,:);qch2];%--------------计算衰减--------------spow=sum(ich3.^2+qch3.^2)/Ns./para;attn=0.5*spow*sr/br*10.^(-SNR/10);attn=sqrt(attn);%--------并串变换----------------ich4=reshape(ich3,1,(fl+gl)*Ns);qch4=reshape(qch3,1,(fl+gl)*Ns);%形成复数发射数据TrData=ich4+qch4.*sqrt(-1);%接收机ReData=awgn(TrData,SNR,'measured');%------------移去保护间隔-------------idata=real(ReData);qdata=imag(ReData);%-------------并串转换------------------- idata1=reshape(idata,fl+gl,Ns);qdata1=reshape(qdata,fl+gl,Ns);idata2=idata1(gl+1:gl+fl,:);qdata2=qdata1(gl+1:gl+fl,:);%-------------------FFT----------------------Rex=idata2+qdata2.*sqrt(-1);ry=fft(Rex);ReIChan=real(ry);ReQChan=imag(ry);ReIchan=ReIChan/kmod;ReQchan=ReQChan/kmod;%---------------QPSK解调----------------RePara=qpskdemod(ReIchan,ReQchan,para,Ns,2);%----------------并串转换------------------ReSig=reshape(RePara,1,para*Ns*2);%-----------误码比特率(BER)------noe2=sum(abs(ReSig-Signal));nod2=length(Signal);%发送信号的总长度noe=noe+noe2;nod=nod+nod2;%计算误组率(PER)(每次循环作为一个分组)ifnoe2~=0eop=eop+1;elseeop=eop;endeop;nop=nop+1;fprintf('%dt%et%d ',iii,noe2/nod2,eop)%屏幕显示;end%----------输出结果------------per=eop/nop;%总的误组数ber=noe/nod;%总的误码率figure(1)%发送信号与接收信号的图形subplot(2,1,1),stem(Signal),gridminor;title('原波形(1000个比特流)');xlabel('x'),ylabel('y');subplot(2,1,2),stem(ReSig),gridminor;title('调制后的波形')function[demodata]=qpskdemod(idata,qdata,para,nd,ml) demodata=zeros(para,ml*nd);demodata((1:para),(1:ml:ml*nd-1))=idata((1:para),(1:nd))>=0;demodata((1:para),(2:ml:ml*nd))=qdata((1:para),(1:nd))>=0;function[iout,qout]=qpskmod(paradata,para,nd,ml)m2=ml./2;paradata2=paradata.*2-1;count2=0;forjj=1:ndisi=zeros(para,1);isq=zeros(para,1);forii=1:m2isi=isi+2.^(m2-ii).*paradata2((1:para),ii+count2);isq=isq+2.^(m2-ii).*paradata2((1:para),m2+ii+count2);endiout((1:para),jj)=isi;qout((1:para),jj)=isq;count2=count2+ml;end

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭