首页 > 其他分享 >m基于马尔科夫随机场和Gardner环的WSN网络时间同步matlab仿真

m基于马尔科夫随机场和Gardner环的WSN网络时间同步matlab仿真

时间:2023-05-22 19:55:05浏览次数:34  
标签:outQ end interp Gardner WSN 算法 matlab outI 漂移

1.算法仿真效果

matlab2022a仿真结果如下:

 

 

 

        RBS算法的累积误差在50us大于80%;ERBS算法的累积误差在25us大于80%;本文所提出的MRF-MAP-Gardner ERBS算法的累积误差在10us大于80%。因此,在降低同步误差方面,MRF-MAP-Gardner ERBS算法性能优于RBS算法和ERBS算法。

 

 

 

       RBS算法的同步误差在40us到100us所在比重最大,ERBS算法的的同步误差则主要集中在20us以内,而MRF-MAP-Gardner ERBS算法的同步误差集中在18us之内.

 

 

2.算法涉及理论知识概要

       ERBS是在RBS算法的基础上改进得到的,但其性能上依旧存在如下几个方面的缺陷:在非确定性相位偏差估计方面,EBRS算法假定了相位偏差测量值服从均值为0,方差为的高斯分布,此外,其非确定性相位偏差估计是基于有限个相位偏差测量值来获得的,因此这种方法当WSN网络环境发生较大程度的改变的时候,则会产生较大的估计误差。在时钟漂移估计方面,EBRS算法将其节点时钟漂移模型简化为线性模型进行估计,而实际中,时钟漂移是一个动态变化的过程,对时钟漂移的估计需要进行实时的跟踪和估计才能获得一个较为精确的估计结果。针对这两个问题,提出了一种新型的高精度能量有效无线传感器网络时间同步算法。

 

      算法通过一种基于马尔科夫随机场的最大后验估计方法对无线传感器网络中不相邻的两个接收节点在多个参考广播消息条件下的相位偏差进行估计,然后通过Gardner环对时钟漂移进行实时的估计和跟踪,实现时间同步过程。

 

       在非确定性相位偏差估计方面,本文采用了一种基于马尔科夫随机场的最大后验估计算法。定义WSN中任意两个不相邻的的节点i和节点j交换m个参考消息包的相位偏差为:

 

 

 

       在时钟漂移估计方面,由于WSN中各个节点的时钟漂移是由于晶振的频率漂移导致的,假设一个晶振的频率为100Mhz,其频率漂移为20ppm,那么晶振的实际输出频率为100Mhz2Khz。因此,接收节点将存在接收信号与本节点频率不同步的问题。同时,即便是同一型号的晶振,其频率漂移也是存在偏差的,因此需要通过一种实时跟踪和估计的方法来获得各种晶振的时钟漂移值。

 

 

3.MATLAB核心程序

 

function yout=func_gardner(data0);
nsamp     = 2;
data = zeros(1,nsamp*length(data0));
for i = 1:length(data)-2
    data(i) = data0(floor(i/nsamp)+1);
end
interplen = length(data);
 
w         = 0.5;%lf输出
q0        = 0.9;
q         = zeros(1,interplen);
m         = 5;
j         = 3;
C1        = 0.001;
C2        = C1 * 0.0005;
datarcosI = data(9:end) ;
datarcosQ = data(9:end) ;
s0        = 2;%插值乘法器值
Detector_out   = zeros(1,interplen);%误差检测输出
interp_outI    = zeros(1,interplen * 2);%插值filter输出;
interp_outQ    = zeros(1,interplen * 2);
interp_outI(1) = datarcosI(2);
interp_outI(2) = datarcosI(4);
interp_outQ(1) = datarcosQ(2);
interp_outQ(2) = datarcosQ(4);
     
for i = 2 : interplen - 12
 
 for k = 1 : 1
      y_temp = q0 - w;%=============================
      q(m) = q0;
      if y_temp > 0
          q0 = y_temp;
      else 
          q0 = mod(y_temp,1);
          mk = m;
          uk = s0 * q(m);
          uu(j) = uk;
          data1 = datarcosI(mk);
          data2 = datarcosI(mk + 1);
          interp_outI(j) = uk * data2 + (1 - uk) * data1;
          if mod(j,2) ~= 0
              qoutI((j+1)/2) = interp_outI(j);
          end
          data1 = datarcosQ(mk);
          data2 = datarcosQ(mk + 1);
          interp_outQ(j) = uk * data2 + (1 - uk) * data1;
          if mod(j,2) ~= 0
              qoutQ((j+1)/2) = interp_outQ(j);
          end
          j = j + 1;
      end
      m  = m + 1;
 end         
  Detector_out(i) = (interp_outI((i - 2)* 2 + 2)) * ((interp_outI((i - 1)* 2 + 1)) - (interp_outI((i - 2)* 2 + 1)))...
                   + (interp_outQ((i - 2)* 2 + 2)) * ((interp_outQ((i - 1)* 2 + 1)) - (interp_outQ((i - 2)* 2 + 1)));
  w = w + (C1 * (Detector_out(i) - Detector_out(i - 1)) + C2 * Detector_out(i));  
  Wm(i) = w;
end
yout = (interp_outI + interp_outQ)/2/nsamp;

 

  

 

标签:outQ,end,interp,Gardner,WSN,算法,matlab,outI,漂移
From: https://www.cnblogs.com/51matlab/p/17421582.html

相关文章

  • m基于GRNN广义回顾神经网络的车牌字符分割和识别算法matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:    2.算法涉及理论知识概要        车牌识别系统(VehicleLicensePlateRecognition,VLPR)是计算机视频图像识别技术在车辆牌照识别中的一种应用。车牌识别在高速公路车辆管理中得到广泛应用,电子收费(ETC)系统中,也是......
  • 机械臂模糊PID控制matlab仿真
    何为模糊PID:链接模糊PID理论基础:链接二自由度机械臂运动建模:  末端位置E(x,y),则两个关节角度可以由下式求得:theta1=atan2(y,x);%theta1=acos(x/sqrt(x*x+y*y));c=sqrt(x*x+y*y);%末端到原点的距离theta3=acos((c*c+a*a-b*b)/(2*a*c));theta2=theta1-......
  • Matlab二维绘图
    %%1.基本绘图指令plot()%%2.矩阵绘图%%3.绘制三条曲线%%4.绘制双纵坐标图%%5.极坐标绘图%%6.极坐标和直角坐标的相互转化%%7.对数坐标系绘图%%8.图形窗分割subplot()%%9.坐标轴设置%%10.图形标识%%11.ezplot()简易绘图指令(......
  • Matlab符号计算(实例)
    %%1.数值常量转换为符号变量%%2.符号表达式的创建%%3.符号表达式中符号自变量的确定%%4.符号对象和数值对象的转换%%5.符号数值的精度控制%%6.合并同类项%%7.因式分解%%8.分子多项式和分母多项式的提取%%9.符号表达式的展开%%10.......
  • matlab默认工作路径的修改方法,永久的
    说起来也简单,就是到安装路径文件夹下C:\ProgramFiles\R2011a\toolbox\local找文件mathrc.m文件,在最后一行添加cd'你想要的默认路径下文件夹',andifyoufinishthisstep,thenyoumakeit.......
  • MATLAB 能做什么?Matlab下载_Matlab中文版下载_Matlab使用教程
    MATLAB软件是一款非常强大的科学计算和数据分析工具,广泛应用于工程、物理、金融等领域。对于初次使用MATLAB软件的用户来说,想要运用它进行科学计算和数据分析可能并不是一件容易的事情。因此,本文将通过实际案例的方式,给大家介绍关于MATLAB软件功能使用技巧。首先,让我们来了解一下MA......
  • Matlab字符串相关操作-拼接、格式化
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • ★教程3:Simulink学习教程入门50例目录2.MATLAB/Simulink安装
    1.订阅本教程用户可以免费获得本博任意1个(包括所有免费专栏和付费专栏)博文对应代码;2.本Simulink课程的所有案例(部分理论知识点除外)均由博主编写而成,供有兴趣的朋友们自己订阅学习使用。未经本人允许,禁止任何形式的商业用途;3.本课程除了介绍常见的Simulink模块介绍之外,我们更侧......
  • matlab练习程序(二维图形的傅里叶级数)
    如何用傅里叶级数表示二维图形,首先要找到数学表达式,然后做傅里叶拟合即可。我最初想的是$R=f(theta)$这样的式子,$R$是极径,$theta$是极角。不过这样似乎处理不了$theta$一样的情况,比如图形有凹陷的情况。后来看了一些文章说可以把$x$和$y$分开表示,即$x=f(t)$,$y=f(t)$,这样可以......
  • matlab如何通过命令查看主机相关信息
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......