[C语言] 电机程序问题

[复制链接]
 楼主| cklgf 发表于 2013-8-26 10:53 | 显示全部楼层 |阅读模式
在一个电机控制程序中看到这样一句语句,不太理解语句的意思,speed_filter += ((((speed - speed_filter) <<16) >> filter_K) >>16);
其中,filter_K仅进行定义,但没有赋值,其值为0。有同事说这句话起滤波作用,但我不明白其中原理,请大侠指教~~~
huangxz 发表于 2013-8-26 13:32 | 显示全部楼层
这个要看原理,看作者的模型是怎么创建的
 楼主| cklgf 发表于 2013-8-31 09:59 | 显示全部楼层
huangxz 发表于 2013-8-26 13:32
这个要看原理,看作者的模型是怎么创建的

你说的模型是指什么?
程序里面多个地方出现 类似speed_filter += ((((speed - speed_filter) <<16) >> filter_K) >>16);这样左移后再右移的滤波,但对于这个滤波,我觉得,如果filter_K为零的话,第一次进入,则speed_filter = speed,第二次进入,通过想减后再移位,得出的结果speed_filter 不也一样是等于speed;同理后面的进入。因此我觉得这个语句起不到滤波作用
acgean 发表于 2013-8-31 10:22 | 显示全部楼层
是用来滤波, 但 filter_K =0 就没有滤波作用.

是的, 其实就是为了调试方便, 使用了这个参数. 最终置0取消了滤波算法.
 楼主| cklgf 发表于 2013-9-2 13:36 | 显示全部楼层
acgean 发表于 2013-8-31 10:22
是用来滤波, 但 filter_K =0 就没有滤波作用.

是的, 其实就是为了调试方便, 使用了这个参数. 最终置0取消 ...

那我想问问,这是采用什么的原理来进行滤波?filter_K的取值对结果有什么影响?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

86

主题

137

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部