基于minn算法的OFDM定时同步matlab仿真

目录

1.MMSE定时同步原理

2.minn定时同步原理

3.matlab核心程序

4.仿真结果

正交频分复用(Orthogonal Frequency Division Multiplexing, OFDM)是一种多载波传输技术,通过将高速数据流分解到多个正交子载波上进行传输。在接收端,精确的定时同步对于恢复出高质量的数据至关重要,因为它直接影响到子载波之间的正交性以及符号间干扰(ISI)的消除。

定时同步算法通常分为基于非辅助数据的同步算法和基于辅助数据的同步算法。目前应用最广泛的基于导频的定时和频偏估计算法是由Schmidl提出的。这种算法采用相同的两段训练序列进行定时,该方法采用递推公式进行计算,实现复杂度很低,在OFDM系统中被广泛采用,然而这种方法的定时判决函数存在一个误差平台,会引起很大的定时偏差。为了减小定时判决函数的误差平台造成的影响,Minn对Schmidl的方法做出了一定的改进。Minn的定时判决函数是一个尖峰,在一定程度上消除了误差平台的影响;Park提出了一种定时判决函数更加尖锐的波形。但是由于循环前缀的存在,这种方法的判决函数有很大的旁瓣,在循环前缀较长时,几乎与主瓣的高度相同,在信噪比较低的情况下,很难得到正确的定时结果。采用训练序列与本地PN码互相关有明显的单峰值,但在频偏较大的情况下,定时判决函数会严重变形,引起较大的定时误差。

1.MMSE定时同步原理
在OFDM系统中,通常使用导频信号(如循环前缀或特定位置的已知训练序列)来进行定时同步。假设接收到的OFDM符号为 r[n],其中包含了时延 τ\tauτ 和噪声的影响。理想情况下,我们希望找到使接收到的信号与本地生成的参考信号 s[n]最佳对齐的时延值。

 

4.复杂度考虑 为了降低计算复杂度,可以选择在离散时间点上搜索最优时延,或者采用快速算法如FFT来实现互相关计算。

5.性能分析 MMSE定时同步算法的性能取决于信噪比、信道条件和定时采样点数等因素。通过对上述互相关函数进行优化处理,可以得到一个相对准确的时延估计值,从而有效完成OFDM系统的定时同步任务。

2.minn定时同步原理
Minn算法是一种基于训练序列的OFDM定时同步算法,它利用训练序列的特定结构来估计定时偏移。该算法通过计算接收信号与本地训练序列之间的相关性来实现同步。在OFDM系统中,定时同步对于确保子载波之间的正交性和减少符号间干扰(ISI)至关重要。Minn算法使用一个特定的训练序列,通常是在OFDM符号的开头插入的一段已知数据。这个训练序列在接收端用于同步处理。训练序列的设计应具有良好的自相关性和互相关性,以便在接收端能够准确地检测到定时偏移。

为了消除Schmidl算法出现的平顶影响,minn等人改变了训练队列的结构,并重新设计了一种新的同步度量函数,虽然成功消除了schmidl算法的平顶效应,使得同步自相关峰变得尖锐,提高了定时同步估计的精度和可靠性,但是该向相关峰还不够尖锐,而且在同步度量函数曲线主峰两边出现了多个副峰,在信道环境恶劣的条件下,也即低信噪比条件下,定时同步估计将受到较大的影响。

 

 

所求得的d对应的是训练序列(不包含循环前缀)的开始位置。

3.matlab核心程序

...................................................................
for p=1:length(SNR) % 遍历不同的信噪比
p % 显示当前信噪比的索引(此行代码实际上没有必要,可以删除)
for k=1:sim_times; % 对于每个信噪比,进行多次仿真
% 给信号添加加性高斯白噪声,信噪比由SNR(p)决定
signal_channel=awgn(signal,SNR(p),'measured');

% 初始化相关信号数组
signal_cor=zeros(1,len_m);
Minn_cor=zeros(1,len_m); % 初始化一个数组来存储相关值的模平方(原代码遗漏了此定义)

% 对信号进行相关处理
for l=len_m/2:2*len_m
signal_temp=signal_channel(l:l+len_m-1);
% 计算信号的相关值
signal_cor(l)=signal_temp(257:512)*signal_temp(1:256)'+signal_temp(769:1024)*signal_temp(513:768)';
% 计算相关值的模平方
Minn_cor(l)=abs(signal_cor(l))^2;
end

% 找到相关值模平方的最大值及其位置
[peak time_index(k)]=max(Minn_cor);

% 计算时间误差
time_error(k)=abs(time_index(k)-1153);

end

% 计算均方误差
MSE_syn(p)=sum(time_error)/sim_times;
end

% 绘制相关值的模平方
figure
plot(Minn_cor,'k');

% 绘制信噪比与均方误差的关系图
figure
plot(SNR,MSE_syn,'b*-');
4035

4.仿真结果

 

posted @ 2024-03-19 10:30  fpga和matlab  阅读(73)  评论(0编辑  收藏  举报