查看: 77|回复: 2|关注: 0

[未答复] 基于窗函数的fir1滤波器的延时问题解决

[复制链接]

新手

11 麦片

财富积分


050


20

主题

122

帖子

0

最佳答案
发表于 7 天前 | 显示全部楼层 |阅读模式
matlab中用窗函数设计了一个27阶的FIR滤波器,对信号滤波,结果发现滤波后信号好像延时了13个点,想请教大家这是为什么?

第二,怎么去除这种延时,如果我的信号是不断进来的(信号实时处理,一帧一帧处理的),也就是前后我可以补信号点的话,是否可以去除这种延时呢?比如我考虑将滤波后的信号左移,则右边信号必然少了,那么,我是否可以这样处理:在滤波前,将信号后面补一些点,比如我一帧信号是1024点,我补成1024+13=1037点,然后滤波,得到1037点,因为和滤波前信号有13点的延后,那么我将1037点左移13点,然后取前面1024点,这样是否可行呢?

下面是关键代码和数据(point_frame_buf数据见附件mat,要使用load即可)——

滤波器设计代码:
fsamp = 360;
fcuts = [100 150];
mags = [1 0];
devs = [0.01 0.001];
[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,fsamp);
hh = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');

信号滤波:
point_frame_buf3 = filter(hh,1,point_frame_buf2);

figure
plot(point_frame_buf2)
hold on
plot(point_frame_bu3,'r')
hold off


point_frame_buf2.mat

5.62 KB, 下载次数: 0

新手

11 麦片

财富积分


050


20

主题

122

帖子

0

最佳答案
 楼主| 发表于 7 天前 | 显示全部楼层
因为我看窗函数设计的滤波器是对称的,那么我处理时,还是直接将我现在一帧信号的1024点最后13个点做对称然后补在本帧信号后面呢?

新手

11 麦片

财富积分


050


20

主题

122

帖子

0

最佳答案
 楼主| 发表于 7 天前 | 显示全部楼层
还是直接补13个0?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

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