卡尔曼滤波 python,轻松理解卡尔曼滤波

  卡尔曼滤波 python,轻松理解卡尔曼滤波

  本文主要为大家介绍卡尔曼滤波数据处理技巧的通俗理解和python实现。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。

  00-1010学习前言什么是卡尔曼滤波器,卡尔曼滤波器是如何滤波的?卡尔曼滤波的例子和卡尔曼滤波的python代码实现

  

目录

  很久没用arduino了。接下来我要用arduino和超声波做一个小实验。必须对读取的模拟量进行过滤。不然这个模拟量怎么用?

  

学习前言

  我们先来看看百度百科的解释:卡尔曼滤波是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据包含了系统中噪声和干扰的影响,最优估计也可以看作是一个滤波过程。

  重要的事情说三遍:

  还不如不看!

  还不如不看!

  还不如不看!

  其实我们没必要把卡尔曼滤波当成一件很复杂的事情。通俗来说,卡尔曼滤波算法只是一种滤波算法。它的作用是滤波,滤波的作用是减少噪声和干扰对数据测量的影响。

  

什么是卡尔曼滤波

  接下来我用一句话来总结卡尔曼滤波的操作过程:

  卡尔曼滤波是将历史数据、历史累积误差、当前测量数据和当前误差相结合的一种当前测量的最优预测值。

  首先,我们要明白目前测量的最佳预测值是多少:

  有两个重要的概念,即最优值和预测值:

  这意味着:

  1.卡尔曼滤波的结果不是实际测量的,而是公式计算出来的预测结果(并不是说预测结果不好,测量还是有误差的!);

  2.它是最优的是因为卡尔曼滤波考虑的比较多,它结合了四个参数来预测当前的测量数据,所以效果更好。

  接下来要理解历史数据、历史累计误差、当前实测数据、当前误差的概念。

  我会通过例子告诉你这四样东西的概念。

  

卡尔曼滤波是怎么滤波的

  假设我们在用超声波测量距离!现在是T时刻,我们需要用t-1时刻的距离来估计T时刻的距离。

  假设t-1时超声波的实测最优预测值为50cm,t-1时的累计误差为3cm,而你自己预测的不确定性误差为4cm,那么t-1时的总误差为(32 42)1/2=5cm。

  T时刻,超声波测得的实际值为53cm,测量误差为2cm。怎么才能相信上次的预测值和这次的实际值呢?因为两者都不准确,我们可以用误差来计算。

  因此,我们结合历史数据、历史累积误差、当前测量数据和当前误差来计算:

  所以目前的最优预测值是52.59。

  

卡尔曼滤波实例

  将numpy作为np导入

  将matplotlib.pyplot作为plt导入

  # Q是本轮的心理估计误差。

  Q=0.00001

  # R是下一轮的测量误差。

  R=0.1

  # Accumulated_Error是上一轮的估计误差,是所有误差的累加。

  累积误差=1

  #初始旧值

  卡尔曼_adc_old=0

  范围=50

  def卡尔曼(ADC_Value):

  全局卡尔曼_adc_old

  全局累计_误差

  #当新值和旧值之间的差异过大时进行跟踪。

  if(ABS(ADC _ Value-Kalman _ ADC _ old)/SCOPE 0.25):

  Old_Input=ADC_Value*0.382卡尔曼_adc_old*0.618

  else:

  旧输入=卡尔曼模数转换器旧

  #最后一轮的总误差=累积误差2估计误差2

  old _ Error _ All=(Accumulated _ Error * * 2q * * 2)* *(1/2)

  # R是这一轮的估计误差。

  # H是以均方差计算的双方的置信度。

  H=旧_错误_全部**2/(旧_错误_全部**2 R**2)

  #旧值1.00001/(1.00001 0.1) *(新值-旧值)

  卡尔曼_adc=旧输入H * (ADC值-旧输入)

  #计算新的累积误差

  累计_错误=((1-H)*旧_错误_全部**2)**(1/2)

  #新值变成旧值

  卡尔曼_adc_old=卡尔曼_adc

  返回卡尔曼_adc

  array=np.array([50]*200)

  s=np.random.normal(0,5,200)

  测试数组=数组s

  plt.plot(测试数组)

  adc=[]

  对于范围(200):内的I

  ADC . append(Kalman(test _ array[I]))

  plt.plot(adc)

  plt.plot(数组)

  plt.show()

  实验结果如下:

  以上是对卡尔曼滤波数据处理技巧的大致了解,以及python实现的详细内容。更多关于python卡尔曼滤波数据处理的信息,请关注盛行IT软件开发工作室的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: