首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于数据抖动频率的计算 程序解决方法

2012-04-04 
关于数据抖动频率的计算 程序我们有一组数据,例如:(C语言方便,借一下C的方法表达)data[20]{1,2,4,2,3,5,1

关于数据抖动频率的计算 程序
我们有一组数据,
例如:
(C语言方便,借一下C的方法表达)
data[20]={1,2,4,2,3,5,1,4,6,7,8,9,0,2,6,7,-1,-9,1,-20}

想要用一种方法计算数据的抖动频率(往复频率)。

然后我自己想了一个算法,就是:
   
  If (data(i) > data(i - 1)) Then
  Ady1 = 1
  Else
  Ady1 = -1
  End If
   
  If (data(i - 1) > data(i - 2)) Then
  Ady2 = 1
  Else
  Ady2 = -1
  End If
   
  Ady2 * Ady1 <0 说明数的增减方向有转向(抖动)


  If (Ady2 * Ady1 < 0) Then 

  ShakeY = ShakeY + 1 '抖动次数累加
   
  End If

但是这个方法有一个缺陷,那就是前面的抖动点会重复计算两次,而最后一次却不会。

所以最后结果:Label14 = Round(ShakeX / 2) 会有1HZ的误差。

谁能想到好的算法帮我解决这个问题?




[解决办法]

C/C++ code
int cnt = 0;for(i = 1; i < 19; ++i){    if((data[i] > data[i-1] && data[i] > data[i+1]) ||        (data[i] < data[i-1] && data[i] < data[i+1]) )    {        ++cnt;//抖动次数累加    }} 

热点排行