您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > Matlab-完成简单的OFDM-信号的产生与解调程序
Matlab完成简单的OFDM信号的产生与解调程序实验研究OFDM(OrthogonalFrequencyDivisionMultiplexing)即正交频分复用技术,实际上OFDM是MCMMulti-CarrierModulation,多载波调制的一种。其主要思想是:将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到在每个子信道上进行传输。正交信号可以通过在接收端采用相关技术来分开,这样可以减少子信道之间的相互干扰ICI。每个子信道上的信号带宽小于信道的相关带宽,因此每个子信道上的可以看成平坦性衰落,从而可以消除符号间干扰。而且由于每个子信道的带宽仅仅是原信道带宽的一小部分,信道均衡变得相对容易。一、OFDM系统原理框图输入的串行数据先经过串/并信号转换,实现数据流的多路分离,然后再通过IFFT完成相应的调制,经过并/串信号转换后,加入保护时间间隔也就是整个系统信号循环前缀,然后通过数模转换,上变频至高频区将信号发射出去。接收端进行相反的过程,信道出来的信号先经过下变频,模数转换,然后去除整个系统信号的循环前缀,再通过串/并信号转换、FFT解调、并/串信号转换,还原得到信宿序列。1、OFDM调制原理框图OFDM通过把需要发射的数据流分解为若干个并行的数据子流,这样每个数据子流在速率上就会降低很多,然后再进行相关调制,将它们调制到一组总数为N,频率之间的间隔相等,且又两两正交的子载波上。2、OFDM解调原理框图OFDM的调制可以用离散傅里叶反变化(IDFT)来实现,相应的有在解调端可以用离散傅里叶变换(DFT)来实现。而这两种傅里叶变换都有相应的快速算法,在系统的效率和相应时间上会有所提高。系统的实际应用中一般采用IFFT和FFT技术二、多天线原理框图多输人多输出(MIMO)技术是指在发送端和接收端都采用多天线技术,通过利用多天线分集接收抑制多径效应造成的衰落,在提高数据传输速率的同时,极大的降低了误码率。天线数目的增多也使得系统的信道容量成线性的增加。系统的发送端有rrl个天线,接收端有n个天线,垴表示接收端第j个天线收到发送端第i个天线信号的信道传输参数,MIMO系统信源发送端所传输的信号,经过空时编码处理后,被分为m个信息子流并行传输,通过无线信道环境至MIMO系统的接收端。Matlab实现代码如下:%DVB-T2KTransmission%Theavailablebandwidthis8MHz%2Kisintendedformobileservicesclearall;closeall;%DVB-TParametersTu=224e-6;%usefulOFDMsymbolperiodT=Tu/2048;%basebandelementaryperiodG=1/4;%choiceof1/4,1/8,1/16,and1/32delta=G*Tu;%guardbanddurationTs=delta+Tu;%totalOFDMsymbolperiodKmax=1705;%numberofsubcarriersKmin=0;FS=4096;%IFFT/FFTlengthq=10;%carrierperiodtoelementaryperiodratiofc=q*1/T;%carrierfrequencyRs=4*fc;%simulationperiodt=0:1/Rs:Tu;%Datagenerator(A)M=Kmax+1;rand('state',0);a=-1+2*round(rand(M,1)).'+i*(-1+2*round(rand(M,1))).';A=length(a);info=zeros(FS,1);info(1:(A/2))=[a(1:(A/2)).'];%Zeropaddinginfo((FS-((A/2)-1)):FS)=[a(((A/2)+1):A).'];%Subcarriersgeneration(B)carriers=FS.*ifft(info,FS);tt=0:T/2:Tu;figure(1);subplot(211);stem(tt(1:20),real(carriers(1:20)));subplot(212);stem(tt(1:20),imag(carriers(1:20)));figure(2);f=(2/T)*(1:(FS))/(FS);subplot(211);plot(f,abs(fft(carriers,FS))/FS);[Pxx,f]=pwelch(carriers,[],[],[],2/T);plot_Pxx1=10*log10(Pxx);subplot(212);plot(f,plot_Pxx1);%D/AsimulationL=length(carriers);chips=[carriers.';zeros((2*q)-1,L)];p=1/Rs:1/Rs:T/2;g=ones(length(p),1);%pulseshapefigure(3);stem(p,g);dummy=conv(g,chips(:));u=[dummy(1:length(t))];%(C)figure(4);subplot(211);plot(t(1:400),real(u(1:400)));subplot(212);plot(t(1:400),imag(u(1:400)));figure(5);ff=(Rs)*(1:(q*FS))/(q*FS);subplot(211);plot(ff,abs(fft(u,q*FS))/FS);[Pxx,f]=pwelch(u,[],[],[],Rs);plot_Pxx2=10*log10(Pxx);subplot(212);plot(f,plot_Pxx2);[b,a]=butter(13,1/20);%reconstructionfilter[H,F]=FREQZ(b,a,FS,Rs);figure(6);plot(F,20*log10(abs(H)));uoft=filter(b,a,u);%basebandsignal(D)figure(7);subplot(211);plot(t(80:480),real(uoft(80:480)));subplot(212);plot(t(80:480),imag(uoft(80:480)));figure(8);subplot(211);plot(ff,abs(fft(uoft,q*FS))/FS);[Pxx,f]=pwelch(uoft,[],[],[],Rs);plot_Pxx3=10*log10(Pxx);subplot(212);plot(f,plot_Pxx3);%Upconverters_tilde=(uoft.').*exp(1i*2*pi*fc*t);s=real(s_tilde);%passbandsignal(E)figure(9);plot(t(80:480),s(80:480));figure(10);subplot(211);plot(ff,abs(fft(s,q*FS))/FS);[Pxx,f]=pwelch(s,[],[],[],Rs);plot_Pxx4=10*log10(Pxx);subplot(212);plot(f,plot_Pxx4);figure(11);subplot(211);plot(ff,abs(fft(((real(uoft).').*cos(2*pi*fc*t)),q*FS))/FS);[Pxx,f]=pwelch(((real(uoft).').*cos(2*pi*fc*t)),[],[],[],Rs);plot_Pxx5=10*log10(Pxx);subplot(212);plot(f,plot_Pxx5);figure(12);subplot(211);plot(ff,abs(fft(((imag(uoft).').*sin(2*pi*fc*t)),q*FS))/FS);[Pxx,f]=pwelch(((imag(uoft).').*sin(2*pi*fc*t)),[],[],[],Rs);plot_Pxx6=10*log10(Pxx);subplot(212);plot(f,plot_Pxx6);实验结果如下图:
本文标题:Matlab-完成简单的OFDM-信号的产生与解调程序
链接地址:https://www.777doc.com/doc-5278667 .html