声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2036|回复: 9

[滤波] 请教高手,滤波后相位问题

[复制链接]
发表于 2007-9-15 16:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我用FIR滤波器加窗对信号进行了滤波,结果见附件,并用origin中带的fft-filter进行了分析,
结果发现用fir滤波结果相位与原始数据有较大偏移,请各位高手指点。
还有个问题就是阶数如何确定呀,有没有一些公式可参考,我这是随便取得,调试
还有就是求归一化频率时fs=1/dt吗

比较结果

比较结果
回复
分享到:

使用道具 举报

发表于 2007-9-15 20:12 | 显示全部楼层
一般滤波后都会产生延迟,所以发展出零相移的滤波。在MATLAB中有函数filtfilt,就不知FORTRAN或ORIGIN中是否有相应的函数或子程序。
 楼主| 发表于 2007-9-16 08:34 | 显示全部楼层

谢谢宋老师

谢谢宋老师,我用的是胡广书老师编的《数字信号处理》提供的fortran程序,并通过双向滤波,问题得到了一些改善,结果见附件。
现在的问题是在最后滤波结果与原始数据出现较大偏差,请宋老师指点,

改进后滤波图

改进后滤波图
 楼主| 发表于 2007-9-16 08:57 | 显示全部楼层
求归一化频率时,我用的fs=1/(dt*2) dt为采样间隔,但我用fs=1/dt时结果就很不好,见附图
请宋老师给指点

fs比较

fs比较
发表于 2007-9-16 12:06 | 显示全部楼层

回复 #3 弯弓射大雕 的帖子

后面不对的数据长度等于滤波器的阶数,呵呵.
发表于 2007-9-16 12:08 | 显示全部楼层
本帖最后由 wdhd 于 2016-9-7 15:53 编辑
原帖由 弯弓射大雕 于 2007-9-16 08:57 发表
求归一化频率时,我用的fs=1/(dt*2) dt为采样间隔,但我用fs=1/dt时结果就很不好,见附图
请宋老师给指点


表达的不太清楚,归一频率就应该等于1/dt/2啊.否则结果肯定要有问题啊.
 楼主| 发表于 2007-9-16 13:29 | 显示全部楼层

改进后

我看一些资料上都是,fs=1/dt呀,我也试了,结果可以通过调滤波器长度调好。我将数据反向输入,使得最后不太吻合的部分变得吻合了,这样处理可不可以呀

改进后

改进后
 楼主| 发表于 2007-9-16 13:30 | 显示全部楼层

问题

就是前面有一部分出现不太吻合,不过我只关心后面的部分,这样处理 可行吗
发表于 2007-9-16 14:35 | 显示全部楼层
实际上数据进行零相位滤波后,在数据的二端都会有一个过度过程,前端是在正向输入时产生的,后端是在反向输入时造成的,使它你有所偏离。楼主这样处理是可以的。
另外我想指出,fs=1/dt,但归一化频率,在MATLAB的滤波器设计中用的是fs/2。例如在buttord、cheb1ord、cheb2ord、ellipord等等中的ws和wp都是把实际频率除以fs/2(0<ws和wp<1),butter、cheby1、cheby2、ellip、fir1等等中的wn也是这样(0<wn<1),freqz作出的图给出归一化频率(0<fn<1),都是以fs/2归正的。所以楼主在FORTRAN中用到归一化频率,要注意是按fs还是按fs/2归一化的。

评分

1

查看全部评分

 楼主| 发表于 2007-9-16 15:57 | 显示全部楼层

回复 #9 songzy41 的帖子

我参考胡广书老师的fortran编的Fir加窗滤波器中,fs按照1/dt做的,并且我按照fs=1/dt,效果见上图(改进后),感觉还挺好的。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-27 01:22 , Processed in 0.065473 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表