park算法代码

训练序列结构 T=[\(C\) \(D\) \(C^{*}\) \(D^{*}\)],其中C表示由长度为N/4的复伪随机序列PN,ifft变换得到的符号序列
\(C(n) = D(N/4-n)\)


原文解释:The training symbol is produced by transmitting
a real-valued PN sequence on the even frequencies, while zeros
are used on the odd frequencies. This means that one of the
points of a BPSK constellation is transmitted at each even fre-quency.
---

\(\bigstar\)park:为了进一步解决minn算法存在的不足,park等人在分析了schmidl算法和minn算法定时效果不佳的原因后,重新设计了新的前导训练序列的结构,并给出了新的定时同步度量函数,该算法的定时度量函数曲线出现了一个更为尖锐的自相关峰,很明显该算法消除了schmidl算法中由于循环前缀的存在而导致的平顶效应,同时得到了比minn算法更为尖锐的自相关峰,提高了定时的精度和确定性,但是在噪声干扰较大的情况下,该算法还是会出现较大的定时同步估计误差,其同步估计的稳定性依然较差。

参考文献
Park B,Choen H , KO E ,et al.A novel timing estimation method for OFDM systems[J].IEEE Commun.Leet.2003,7(5):53-55.

\[M(d)=\frac{\left | P(d) \right |}{R^{2}(d)}^{2}\]

\[P(d)=\sum_{m=0}^{N/2 -1}r(d-m) r(d+m)\]

\[R(d)=\sum_{m=0}^{N/2-1}\left | r(d+m) \right |^{2}\]

实际在算法实现上
\(P(d)=\sum_{m=0}^{N/2-1}r(d-1-m) r(d+m)\)
这是因为序列个数通常是偶数而非奇数,不会出现
\(r(d)r(d)\)的情况。
所求得的d对应的是训练序列(不包含循环前缀)的中间位置。

仿真验证如果发送的数据是随机的[1+1i,-1+1i,-1-1i,1-1i],且训练队列由PN序列(用随机序列代替)通过IFFT得到时,结果与原论文结果最相近。而且如果此时PN序列的最大值为7时更容易看到跟原论文作者一样的结果,具有两个副峰

clear all;
clc;
%参数定义
N=256;       %FFT/IFFT 变换的点数或者子载波个数(Nu=N)
Ng=N/8;      %循环前缀的长度 (保护间隔的长度)
Ns=Ng+N;     %包括循环前缀的符号长度
SNR=25;
%************利用查表法生成复随机序列**********************
QAMTable=[7+7i,-7+7i,-7-7i,7-7i];
buf=QAMTable(randi([0,3],N/2,1)+1); %加1是为了下标可能是0不合法%产生train
pn=rand(1,N/2)>0.5;
pn=reshape(pn,N/4,2);
[ich,qch]=qpskmod(pn,N/4,1,2);
kmod=sqrt(2);
x=ich*kmod+qch*kmod*i;
y=ifft(x);
y=reshape(y,N/4,1);
train=[y;y(N/4:-1:1,1);conj(y);conj(y(N/4:-1:1,1))];%*****************添加一个空符号以及一个后缀符号*************
src = QAMTable(randi([0,3],N,1)+1).';
sym = ifft(src);
sig =[zeros(N,1) train sym];
%sig =[sym train sym];%**********************添加循环前缀*************************
tx =[sig(N - Ng +1:N,:);sig];
%tx = [sig(1,N-Ng+1:N) sig];%***********************经过信道***************************
recv = reshape(tx,1,size(tx,1)*size(tx,2)); %size的1表示行,2表示列,从%前向后数,超过了为1
%recv = tx;
%recv1 = awgn(recv,1,'measured');
%recv2 = awgn(recv,5,'measured');
%recv3 = awgn(recv,10,'measured');
%recv = awgn(recv,SNR);
%*****************计算符号定时*****************************
P=zeros(1,2*Ns);
R=zeros(1,2*Ns); for d = Ns/2+1:1:2*Ns for m=0:N/2  P(d-Ns/2) = P(d-Ns/2) + (recv(d+m))*recv(d-1-m);  R(d-Ns/2) = R(d-Ns/2) + power(abs(recv(d+m)),2); end
end
% for d = Ns/2+1:1:2*Ns
%     for m=0:1:(N/2-1)
%         P(d-Ns/2) = P(d-Ns/2) + recv(d-m)*recv(d+m);
%         R(d-Ns/2) = R(d-Ns/2) + power(abs(recv(d+m)),2);
%     end
% end
M=power(abs(P),2)./power(abs(R),2);
[a b]=max(M);
b+Ns/2
%**********************绘图******************************
figure('Color','w');
d=1:1:400;
figure(1);
plot(d,M(d+N/2));
grid on;
axis([0,400,0,1.1]);
title('park algorithm');
xlabel('Time (sample)');
ylabel('Timing Metric');
%legend('no noise','SNR=1dB','SNR=5dB','SNR=10dB');));
hold on;

转载于:https://www.cnblogs.com/jiandahao/p/9310950.html

OFDM同步算法之Park算法相关推荐

  1. OFDM同步算法之Minn算法

    minn算法代码 算法原理 训练序列结构 T=[B B -B -B],其中B表示由长度为N/4的复伪随机序列PN,ifft变换得到的符号序列 (原文解释):B represent samples of ...

  2. matlab仿真ofdm的ccdf,OFDM系统峰均比降低算法的研究+Matlab仿真(6)

    OFDM系统峰均比降低算法的研究+Matlab仿真(6) 时间:2016-11-28 22:19来源:毕业论文 2.2.5 自适应技术 自适应调制技术在OFDM系统中也占有非常重要的地位,其调制思想是 ...

  3. MIMO OFDM 系统常用信号检测算法

    ​ 新年都未有芳华, 二月初惊见草芽. 白雪却嫌春色晚, 故穿庭树作飞花. --韩愈 1. 前言 MIMO的空分复用技术可以使得系统在系统带宽和发射带宽不变的情况下容易地获得空间分集增益和信道的容量增 ...

  4. 基于伪随机序列共轭相乘的OFDM通信系统频偏补偿算法matlab仿真

    目录 一.理论基础 二.核心程序 三.仿真结论 一.理论基础 OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术,实际上OFDM是MCM ...

  5. OFDM通信系统PAPR抑制算法matlab仿真,对比SLM算法和PTS算法

    目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 OFDM(Orthogonal Frequency Division Multiplexing)正交频分复用技术,OFDM是一 ...

  6. 【PTS】OFDM中PAPR抑制算法PTS的matlab仿真

    1.软件版本 matlab2017b 2.本算法理论知识 在PTS全局搜索的时候,预先设定好一个门限值,如果搜索到 那么就直接退出搜索. 所以使用这个方法,可以进行快速的搜索,而不用像全局搜索那样,全 ...

  7. 基于PSO优化的OFDM系统PAPR抑制PTS算法MATLAB仿真

    目录 1.算法仿真效果 2.MATLAB核心程序 3.算法涉及理论知识概要 4.完整MATLAB 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB核心程序 .......... ...

  8. m基于PTS+TR的OFDM系统PAPR联合抑制算法matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 部分传输序列(Partial Transmit Sequence , PTS)由于其不受载波 ...

  9. 手把手教你架构3d游戏引擎pdf_游戏开发中的算法

    游戏技术这条路,可深可浅.你可以满足于完成GamePlay玩法层面的东西,你也可以满足于架构和框架设计层面的东西,你也可以醉心于了解某一游戏引擎带来的掌控感.但是,我们不该止步于此,止步与目前所见或所 ...

最新文章

  1. 22.Chain of Responsibility(职责链)模式
  2. pip3 install numpy
  3. Linux - 添加PATH环境变量
  4. leetcode算法题--反转链表★
  5. StartSSL免费SSL证书申请和账户注册完整过程
  6. 165. 小猫爬山【爆搜+剪枝】
  7. tftp刷路由器 linux,TP-Link无线路由器HTTP/TFTP后门漏洞
  8. java日期函数精确到日,java日期时间函数分享
  9. 2021年前端还好找工作吗?
  10. leetcode力扣406. 根据身高重建队列
  11. MySQL InnoDB存储引擎为什么要用自增的主键?
  12. 【FPGA入门一】一个简单的LED流水灯
  13. 示波器如何设置实现单次触发
  14. Camera 的3A
  15. 卸载并安装NVIDIA显卡驱动
  16. android mapview 自定义地图标注,关于Android集成高德地图的那些事儿...地图标注Marker 、Poi 搜索...
  17. Python “最短”挑战(12.21)
  18. MACC与TOPS(FLOPS)互相换算
  19. 大数据能否解决城市所面临的环境问题
  20. 网络客户/服务器程序

热门文章

  1. Rancher使用--后端流水线
  2. ubuntu下配置bind9为局域网的DNS服务器
  3. 我肝了一个月,给你写出了这本Java开发手册。
  4. 微软研究员:fork() 已落后,需要淘汰
  5. Thread中,join()方法
  6. MySQL:给表的某个字段添加唯一性约束
  7. python取中间值的函数_tensorflow实现在函数中用tf.Print输出中间值
  8. mysql子查询缺点_[慢查优化]慎用MySQL子查询,尤其是看到DEPENDENT SUBQUERY标记时
  9. 多线程 python layer_在Caffe中加Python Layer的方法
  10. 无限级菜单 mysql设计_无限级菜单简单的设计