matlab 中使用fir滤波器后相位延迟如何补偿?

比如,我利用加速度计获得了加速度信号,利用加速度信号对振动进行控制,但是由于加速度信号中有噪声,需要进行滤波。但是,滤波之后,加速度相位延迟。应该怎么把延迟消除,或者知道延迟了多少呢?感谢!!!

是直接用matlab设计的线性相位滤波器吧?这样的话,很简单,设滤波器阶数为N。对采样点的延迟就是N/2,N为偶数;或者(N-1)/2,N为奇数。然后在滤波器输出结果那里,直接从头扔掉N/2或者(N-1)/2个点就好了。追问

感谢回复。因为我要用加速度信号进行控制,直接扔掉可能不会吧?应该怎么补偿一下呢? N/2*1/fs, fs是采样频率,这样得到的是延迟的时间吧?另外,有没有其他较好的滤波方法,相位延迟比较小,可以获得较好的结果?谢谢。

追答

simulink里的滤波器我没有用过。一直都是直接在fdtool里设计,你所谓的实时控制,是连滤波器的结构都调整了吗?如果结构没有变化,只是系数在变的话,用这个方法也可以。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-02-18
朋友,我也在做关于冲击度的分析,但经验不足。遇到跟你提问的问题了,希望能分享下经验。
第2个回答  2012-04-17
你用的是多少阶的滤波器?滤波器第一个输出数据的延迟就是你的延迟了追问

我就是用的simulink里面自带的一个。关键问题我不知道第一数据延迟多少啊。我是实时控制。。。请继续指教,谢谢。。。

相似回答