一、Minn符号同步算法原理
Minn位同步算法是一种基于训练序列的位同步算法,位同步算法训练序列的结构可由下图表示:
如上图所示,训练序列s具有4个组成部分,其中前两部分相同,后两部分与前两部分反相,下面的训练符号构建代码是以16QAM为例进行的,如果应用其他高级调制格式,可以仿照该实例进行产生训练序列。
%用于同步的复随机序列
L=150;%训练序列单元长度
B=[1+1i,1-1i,1+3i,1-3i,-1+1i,-1-1i,-1+3i,-1-3i,3+1i,3-1i,3+3i,3-3i,-3+1i,-3-1i,-3+3i,-3-3i];
A=B(randi([1,16],L,1));
train=[A,A,-A,-A];
其中B中所包含的就是16QAM的所有符号,你们在进行构建其他高级调制格式的训练序列时,只需要将B中的元素替换成你所用的高级调制格式的所有符号即可,从B中随机选取L个元素构成A,最终的训练序列就为train=[A,A,-A,-A]。
构建好训练序列后就是具体的数学算法过程了,Minn算法的具体过程可由如下式子表示:
由上式可知 ,Minn算法也是对训练序列进行滑动自相关。
二、Minn符号同步算法matlab仿真
Minn位同步算法的matlab仿真代码如下:
function index=Hminn(signal,L)
m=0:L-1;
for i=1:length(signal)-4*L
P(i)=conj(signal(i+m))*signal(i+m+L).'+conj(signal(i+m+2*L))*signal(i+m+3*L).';
R(i)=abs(signal(i+m+L))*abs(signal(i+m+L))'+abs(signal(i+3*L+m))*abs(signal(i+3*L+m))';
end
m1=abs(P).^2;
m2=R.^2;
M=m1./m2;
[value,index]=max(M);
while index>length(signal)/2
M(index)=0;
[value,index]=max(M);
end
figure(14)
plot(M)
axis([0,2000,0,2]);
end
仿真结果:
结果分析:
上图中所显示的尖峰所在位置的下标即为训练符号的开始位置,也就是程序中的index即为训练序列的开始位置,得到了此值后,就可以根据训练序列的长度推断真实数据符号的起始位置从而完成同步,同步后即进行符号判决。
三、参考文献
[1] Minn H , Zeng M , Bhargava V K . On timing offset estimation for OFDM systems[J]. IEEE Communications Letters, 2000, 4(7):0-244.