打印

一个非常适合单片机的算法(内附匠人分析见14楼)

[复制链接]
楼主: whlz58
手机看帖
扫描二维码
随时随地手机跟帖
21
suoma| | 2010-5-5 22:18 | 只看该作者 回帖奖励 |倒序浏览
潜水是个什么状态?

使用特权

评论回复
22
linqing171| | 2010-5-5 23:23 | 只看该作者
实际使用的时候,SUM初始值最好用第一次测量的结果。

使用特权

评论回复
23
whlz58|  楼主 | 2010-5-6 00:24 | 只看该作者
初值使用要看应用的条件,初始值可以使用第一次的结果,最好人工做一个偏差SUM=S*n-常数,使之不满足应用的条件,我用的时候初始化不管,初始化为0,直接S*n或做偏差。看大家应用条件。

使用特权

评论回复
24
southernsky| | 2010-5-6 08:23 | 只看该作者
跟着大家学习

使用特权

评论回复
25
HWM| | 2010-5-6 08:59 | 只看该作者
本帖最后由 HWM 于 2010-5-6 23:00 编辑

SUM = SUM - SUM/n +S

两边都除上n,就显然有

X = X (1 - 1/n) + S/n

搞得数学点(加上下标[m]),有:

X[m+1] = X[m] (1 - 1/n)  + S[m]/n
(X[m+1] - X[m]) / (1/n) + X[m] = S[m]

那是什么?不就是这玩意儿:

d X(t) / dt + X(t) = S(t)

使用特权

评论回复
26
eakliu| | 2010-5-6 09:10 | 只看该作者
很好,学习了!谢谢楼主分享经验

使用特权

评论回复
27
yuandian01| | 2010-5-6 09:31 | 只看该作者
看完1楼和25楼后,不知道该不该使用这种算法了。

使用特权

评论回复
28
程序匠人| | 2010-5-6 09:47 | 只看该作者
看完1楼和25楼后,不知道该不该使用这种算法了。
yuandian01 发表于 2010-5-6 09:31


本质是一样的。只不过,一个是非典型形式(来自于作者的实践),一个是典型形式(来自于前人的总结提炼)。

该不该用这种算法,取决于其效果是否能为我所用,而不是公式的外在形式。

使用特权

评论回复
29
whlz58|  楼主 | 2010-5-6 11:43 | 只看该作者
简单好用就可以,建议大家用一下,把经验写出来。

使用特权

评论回复
30
highgear| | 2010-5-6 21:26 | 只看该作者
25 楼 HWM:
搂主的公式没有问题, 不会越搞越大. 你的推导大致也是对的, 这样写更清楚些:
y(k+1) = y(k)*(1-1/n) + x(k+1)

这个迭代公式是收敛的,不会越搞越大. z变换公式:
y*z = y *(1-1/n) + x*z. 

a = 1 - 1/n 得到:
y/x = z/(z-a)

这个公式的传递函数是 z/(z-a), 教科书上可以查到这个公式是一个指数函数: a^k (k = 0, 1, 2, 3, ..... )
由于a<1, 所以 a^k 是收敛的. 如果 b = 1/a = a^(-1) 则时间域冲击响应的方程为:
f(t) = (1 - a^t) = 1 - b^(-t) , 也可以变换为:
f(t) = 1 - e^(-t/T) -------> 这也是 RC 滤波器的冲击响应函数.




 

使用特权

评论回复
31
HWM| | 2010-5-6 23:03 | 只看该作者
哦,确实,相差n倍。

使用特权

评论回复
32
highgear| | 2010-5-6 23:12 | 只看该作者
更正 30 的错误, 
f(t) = (1 - a^t) = 1 - b^(-t), f(t) = 1 - e^(-t/T) 是阶越响应. 
f(t) = b^(-t), f(t) = e^(-t/T) 才是冲击响应函数.

使用特权

评论回复
33
efen| | 2010-5-6 23:23 | 只看该作者
mark

使用特权

评论回复
34
fywx| | 2010-5-7 11:45 | 只看该作者
理论和实际的良好结合!学习中...

使用特权

评论回复
35
程序匠人| | 2010-5-7 12:08 | 只看该作者
HWM 和 highgear 把此贴上升到了理论的层面

使用特权

评论回复
36
xuyiyi| | 2010-5-7 12:27 | 只看该作者
21IC上高手倍出,学习了。

使用特权

评论回复
37
sh007| | 2010-5-7 13:09 | 只看该作者
学习中!!!!

使用特权

评论回复
38
linqing171| | 2010-5-7 14:19 | 只看该作者
和移动平均算法来比。
1 如果信号是有噪声的直流信号,测量的由于有微分功能,会不如移动平均算法准。
2 对于信号不是直流的,特别2楼的图,优势就出来了。
3 省控件资源。
4 计算快,节省时间。

认了那句大道从简。

使用特权

评论回复
39
xxt0913| | 2010-5-8 12:21 | 只看该作者
可以看作一个惯性环节

使用特权

评论回复
40
mfkoyniw520| | 2010-5-10 10:48 | 只看该作者
顶楼主   强

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则