实验二利用相关性的基于 CP的 STO估计实验目的1.熟悉OFDM传输系统中利用相关性的基于CP的STO估计的整个设计流程,加深对符号定时偏差STO、载波频率偏差CFO的理解,学习掌握该估计方法的原理和思路。2.熟悉Matlab应用软件中用到的相关函数。二、 实验内容1、以前缀CP、理想信道、CFO、STO+AWGN噪声设计的OFDM传输系统% STO_estimation.mclear, clf%++++++++++++++++++++++++-nSTOs=[-3-3 2 2];%对应STO的采样数CFOs=[00.5 00.5];%CFO向量%SNRSNRdB=40;Maxlter=10;%送代次数Nfft=128;%FFT大小Ng=Nfft/4;%CP长度Nofdm= Nfft+Ng;%OFDM符号长度Nbps=2;M= 2^Nbps;%每一OFDM符号的比特数mod_object=modem.qammod("M',M,'SymbolOrder,'gray");Es=1;%信号能量A=sqrt(3/2/(M-1)*Es);%QAM归一化因子N= Nfft:com_delay=Nofdm/2;Nsym=100;rand('seed',1);randn('seed',1):nSTOsjisuan=zeros(1,length(nSTOs):%++++++++++++++++++++++++fori=1:length(nSTOs)nSTO=nSTOs(i);CFO=CFOs(i);x=]:%初始化OFDM信号块for m=1:Nsym%发射OFDM信号1/3
1 / 3 实验二 利用相关性的基于 CP 的 STO 估计 一、 实验目的 1.熟悉 OFDM 传输系统中利用相关性的基于 CP 的 STO 估计的整个设计流程,加深对符号 定时偏差 STO、载波频率偏差 CFO 的理解,学习掌握该估计方法的原理和思路。 2.熟悉 Matlab 应用软件中用到的相关函数。 二、 实验内容 1、以前缀 CP、理想信道、CFO、STO+AWGN 噪声设计的 OFDM 传输系统 % STO_estimation.m clear, clf %++++++++++++++++++++++++ nSTOs=[-3 -3 2 2]; %对应 STO 的采样数 CFOs=[0 0.5 0 0.5]; %CFO 向量 SNRdB=40; %SNR MaxIter=10; %迭代次数 Nfft=128; %FFT 大小 Ng=Nfft/4; %CP 长度 Nofdm= Nfft+Ng; %OFDM 符号长度 Nbps=2; M= 2^Nbps; %每一 OFDM 符号的比特数 mod_object= modem.qammod('M', M, 'SymbolOrder', 'gray'); Es=1; %信号能量 A= sqrt(3/2/(M-1)*Es); %QAM 归一化因子 N= Nfft; com_delay=Nofdm/2; Nsym=100; rand('seed',1); randn('seed',1); nSTOsjisuan=zeros(1,length(nSTOs)); %++++++++++++++++++++++++ for i=1:length(nSTOs) nSTO= nSTOs(i); CFO=CFOs(i); x=[]; %初始化 OFDM 信号块 for m=1:Nsym %发射 OFDM 信号
%msgint=randint(1,N,M);msgint= randi([0 3],1,N):Xf=A*modulate(mod_object, msgint);xt= ifft(Xf, Nff): %IFFT%加CPx_sym=[xt(end-Ng+1:end) xt); x=[x x_sym];endy=x;%y_CFO=add_CFO(y.CFO,Nfft);nn=0:length(y)-1;y_CFO=y.*exp(1i*2*piCFO*nn/Nfft);%加CFO%y_CFO_STO=add_STO(y_CFO,-nSTO);if-nSTO>=0y_CFO_STO=[y_CFO(-nSTO+1:end) zeros(1,-nSTO)];elsey_CFO_STO=[zeros(1,nSTO)y_CFO(1:end-nSTO)];endMag_cor=0;for iter=1:Maxltery_aw=awgn(y_CFO_STO,SNRdB,'measured'); %AWGN%[STO_cor,mag_cor]=STO_by_correlation(y_aw,Nfft,Ng,com_delay)%++++++++++++++++++++++++nn=0:Ng-1;yy=y_aw(nn+com_delay)y_aw(nn+com_delay+Nfft);%相关函数maximum=abs(yy):mag_cor=zeros(1,Nofdm);forn=1:Nofdmn1=n-1;yy1=y_aw(n1+com_delay)*y_aw(n1+com_delay+Nfft);yy2=y_aw(n1+com_delay+Ng)*y_aw(n1+com_delay+Nfft+Ng)";yy=yy-yy1+yy2mag_cor(n)=abs(yy);if (mag_cor(n)>maximum)maximum=mag_cor(n);2 /3
2 / 3 %msgint=randint(1,N,M); msgint= randi([0 3],1,N); Xf=A*modulate(mod_object, msgint); xt= ifft(Xf, Nfft); %IFFT x_sym=[xt(end-Ng+1:end) xt]; %加 CP x=[x x_sym]; end y=x; %y_CFO= add_CFO(y,CFO, Nfft); nn=0:length(y)-1; y_CFO=y.*exp(1i*2*pi*CFO*nn/Nfft); %加 CFO %y_CFO_STO=add_STO(y_CFO,-nSTO); if -nSTO>=0 y_CFO_STO=[y_CFO(-nSTO+1:end) zeros(1,-nSTO)]; else y_CFO_STO=[zeros(1,nSTO) y_CFO(1:end-nSTO)]; end Mag_cor=0; for iter=1:MaxIter y_aw=awgn(y_CFO_STO,SNRdB,'measured'); %AWGN %[STO_cor,mag_cor]=STO_by_correlation(y_aw, Nfft, Ng, com_delay); %++++++++++++++++++++++++++++ nn=0:Ng-1; yy=y_aw(nn+com_delay)*y_aw(nn+com_delay+Nfft)'; %相关函数 maximum=abs(yy); mag_cor=zeros(1,Nofdm); for n=1:Nofdm n1=n-1; yy1=y_aw(n1+com_delay)*y_aw(n1+com_delay+Nfft)'; yy2=y_aw(n1+com_delay+Ng)*y_aw(n1+com_delay+Nfft+Ng)'; yy=yy-yy1+yy2; mag_cor(n)=abs(yy); if (mag_cor(n)>maximum) maximum=mag_cor(n);
STO_cor=Nofdm-com_delay-n1;endend%++++++++++++++++++++++Mag_cor=Mag_cor+mag_cor;end[Mag_cor_max,ind_max]=max(Mag_cor);nc= ind_max-1-com_delay:nSTOsjisuan(i)=nc;nn=-Nofdm/2:length(Mag_cor)-1-Nofdm/2subplot(220+i):plot(nn,Mag_cor'b");hold on%xlable(Sample'),ylabel(Magnitude")%stem(nc,Mag_cor(nc+com_delay+1),b")end2、运行结果KO08000SH图1不同STO初始条件下的相关性估计数据曲线图2原始STO偏差与估计值之间的数据对比3 /3
3 / 3 STO_cor=Nofdm-com_delay-n1; end end %++++++++++++++++++++++++++++++ Mag_cor=Mag_cor+mag_cor; end [Mag_cor_max,ind_max]=max(Mag_cor); nc= ind_max-1-com_delay; nSTOsjisuan(i)=nc; nn=-Nofdm/2:length(Mag_cor)-1-Nofdm/2; subplot(220+i); plot(nn,Mag_cor,'b'); hold on %xlable('Sample'), ylabel('Magnitude') %stem(nc, Mag_cor(nc+com_delay+1),'b') end 2、运行结果 图 1 不同 STO 初始条件下的相关性估计数据曲线 图 2 原始 STO 偏差与估计值之间的数据对比