基于最大似然估计的OFDM盲同步

论文:ML Estimation of Time and Frequency Offset in OFDM Systems
代码:https://www.mathworks.com/matlabcentral/fileexchange/33299-ml-estimation-of-timing-and-cfo-in-ofdm-systems
假设:
AWGN信道,时域非色散,无多径
公式推导:
N为FFT长度,L为CP长度,观察区间2N+L,在此区间内可以完整包含一个OFDM符号,如下图所示
在这里插入图片描述
记区间I和I’分别为CP部分和CP复制部分,两者由于复制关系因此存在相关性,而其他不属于I或者I’——即I∪I’的区间的符号都是独立的。
在这里插入图片描述
由相关性可以得到,任意属于I的数据,对其求自相关,满足以下关系,即当时延为0和N时候有极大值
在这里插入图片描述
建立似然函数,由于属于I和I’区间的数据存在相关性,因此f(r1,r2,…,r_2N+L-1)中部分可以用独立性质拆出,另外CP部分和CP复制部分对应的元素不能拆,因此得到论文公式(4)的样子,再对后部分乘上I∪I’的数据,同时前部分除掉,一乘一除保持不变。
在这里插入图片描述
论文中给出f(rk)的分布和f(rk,rk+N)的联合分布如下:
f(rk,rk+N)的联合分布
f(rk)的分布
之后论文指出分布满足旋转不变性,由于f(rk)中与CFO相关的只有高斯分布均值位置的r(k),但由于取了绝对值的缘故,因此与CFO无关。同时f(rk)的累乘也与STO无关,因为2N+L个f(rk)从1到2N+L累乘和时延STO之后从STO到2N+L+STO累乘是一样的。因此似然函数(4)可以抛弃后面的部分,只考虑前面部分。此时得到
在这里插入图片描述
展开具体的分布形式得到
在这里插入图片描述
取log后得到
在这里插入图片描述
上述中存在三个定义,分别是自相关,能量,相关系数。从(8)得知该算法也需要提前求出带内信噪比。
在这里插入图片描述

根据最优化性质可以简化似然函数为
在这里插入图片描述
最大化似然函数(5),在取得最大值的时候应该有cos(~)=1,因此得到
在这里插入图片描述
其中n是任意整数,假设e在0.5内,n不影响其取值。在cos(~)=1时候有
在这里插入图片描述
令(11)最大时候得到STO的ML估计值,根据STO估计值得到CFO的估计值
在这里插入图片描述

代码

%% ML estimation of time and frequency offset in OFDM systems
% Algorithm authors : J.J. van de Beek, M. Sandell, and P.O. Borjesson
% Prepared by Hiren Gami

clc
clear all;
%% Parameter declaration according to paper
Nfft = 1024;		% FFT点数
Ncp = 128;			% CP长度
Nsym = 6;			% OFDM符号数
FreqOffset = 0.25;	% CFO
SNRdb = 15;			% 信噪比
theta = 256;		% STO
%% OFDM symbol generation
data = 2*randi([0 1],1, Nsym*Nfft)-1; % BPSK data

Tx = zeros(1,Nsym*(Nfft+Ncp));	% 发射端数据
OFDMsym = zeros(1,Nfft);  
for sym = 1:Nsym
    OFDMsym = ifft(data(Nfft*(sym-1)+1:(Nfft*sym)),Nfft)*sqrt(Nfft);
    Tx((Nfft+Ncp)*(sym-1)+1:(Nfft+Ncp)*sym) = [OFDMsym(Nfft-Ncp+1:Nfft) OFDMsym];	% 加CP
end

%% AWGN channel
snr = 10^(-SNRdb/10);
noise = sqrt(snr/2)*(randn(1,Nsym*(Nfft+Ncp))+1i*randn(1,Nsym*(Nfft+Ncp)));
Rx = exp(1i*2*pi*FreqOffset*(0:length(Tx)-1)./Nfft).*Tx + noise; 	% AWGN信道
%% ML estimation of timing and frequency offset
PHI_sum = zeros(1,Nsym*(Nfft+Ncp)-Nfft);			% 初始化PHI,长度是OFDM符号总长度-Nfft,因为k取值从1到end-Nfft,对应rk和时延Nfft后的r_k+N
GM_sum = zeros(1,Nsym*(Nfft+Ncp)-Nfft);				% 初始化Gamma

rho = (snr/(snr+1)) / 2;							% 自相关系数
for n = theta:Nsym*(Nfft+Ncp)-(Nfft+Ncp)			
    PHI=0;GM=0;
    for m = n:n+Ncp-1    							% 在I内
        PHI = PHI+ (Rx(m)*conj(Rx(m)) + Rx(m+Nfft)*conj(Rx(m+Nfft)));
        GM = GM+ Rx(m)*conj(Rx(m+Nfft));    
    end
    PHI_sum(n) = abs(GM)- rho*PHI;
    GM_sum(n) = -angle(GM)/(2*pi);
end

%% Estimation results display

subplot(2,1,1);plot(PHI_sum);title('Estimation of timing offset');grid on;
subplot(2,1,2);plot(GM_sum);title('Estimation of frequency offset');grid on;

[value,thetaEst]=findpeaks(PHI_sum,'minpeakdistance',Nfft);
disp(thetaEst);
disp(GM_sum(thetaEst));

猜你喜欢

转载自blog.csdn.net/weixin_45121008/article/details/133276295