2

平滑值

以下适用于 c# .net 4。我正在寻找 ac# 代码。

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

(图2)时间轴

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

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

如何实时确定 x1 到 xn?因此,假设当前时间是 dt1+dt2+dt3 内的某个位置。我不知道 dt3 什么时候完成(即使之前的 dt 在 9 毫秒和 30 毫秒之间)以及会有什么价值。我怎么能猜到 x4 的值,它考虑了以前的变化?

如何同时平滑(图 1)的值以使它们成为 - 比如说 - 700 - 708 - 712 - 720,即消除抖动?

4

2 回答 2

0

我认为有两种解决方案,因为我理解了您的问题

  1. 通过引用传递变量,例如:x(ref t(ref (x1))
  2. 将您的变量声明为静态变量,例如:静态 x1
于 2012-05-23T11:37:01.700 回答
0

将对此进行尝试(以下是措辞不佳的操作序列):

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

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

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

  6. 设置 Xt = X2

  7. 转到 2

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

于 2012-05-23T09:44:36.680 回答