根据以前的值实时猜测值

时间:2012-05-23 09:28:41

标签: c# c#-4.0 smooth smooth-streaming

smoothing values

以下内容适用于c#.net 4.我正在寻找一个c#代码。

(图1)我有不同的值,例如700,712,703和720.dt1例如是30ms,dt2可能是9ms。重要的是dt1到dtn不是恒定的。

(图2)时间轴

(图3)这就是我想要的,恒定时间间隔tc的值约为17ms。 x1到xn是变量包含的值,即:

x(t(x1)) = x1
x(t(x2)) = x2
...
x(t(xn)) = xn

如何实时确定x1到xn?所以让我们说当前时间是dt1 + dt2 + dt3内的某个地方。我不知道什么时候dt3会完成(即使之前的dt介于9ms和30ms之间)并且会有什么价值。我怎么能猜出将先前的变化考虑在内的x4的值?

如何平滑(图1)它们的值 - 例如 - 700 - 708 - 712 - 720,即消除抖动?

2 个答案:

答案 0 :(得分:0)

要对此采取措施(以下措辞措辞不当):

  
      
  1. 读取当前X(让我们称之为Xt)
  2.   
  3. 使用Xt
  4. 执行您需要的任何操作   
  5. 存储Xt
  6.   
  7. 阅读新X(我们称之为X2)
  8.   
  9. 如果abs(X1-X2)小于某个公差,则丢弃X2并使其= X1

         

    如果X2> X1,丢弃X2的值并使其= X1 + K

         

    如果X2< X1,丢弃X2的值并使其= X1-K

  10.   
  11. 设置Xt = X2

  12.   
  13. 转到2
  14.   

只是一个非常粗略的“平滑”概念,你忽略了价值,只关心x的“运动”的方向。

答案 1 :(得分:0)

我认为有两个解决方案,因为我理解你的问题

  1. 通过引用传递变量,例如:x(ref t(ref(x1))
  2. 将您的变量声明为静态变量,例如:static x1