读书人

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

发布时间: 2012-04-04 16:38:51 作者: rapoo

关于数据抖动频率的计算 程序
我们有一组数据,
例如:
(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;//抖动次数累加    }} 

读书人网 >C语言

热点推荐