声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3206|回复: 18

[滤波] 多级复解析滤波器问题

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

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

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

x
如果信号经过了一级复解析滤波器,然后降采样,此时信号已经变为实部+虚部了,如何再通过第二级复解析滤波器呢?是不是只把实部取出来然后与复解析滤波器相卷积就行了呢?谢谢!
回复
分享到:

使用道具 举报

发表于 2007-1-19 08:52 | 显示全部楼层
不是的,得用滤波后的复信号与滤波器做卷积
 楼主| 发表于 2007-1-20 17:57 | 显示全部楼层
谢谢!

像matlab中的filter函数都是用的fft做的滤波,在这种情况下,会导致谱分析的精度降低。

也就是说,如果要利用降采样进行高精度谱分析,就不能用filter函数进行滤波,而需要将信号与滤波器一个一个地卷积对不对?
发表于 2007-1-20 18:37 | 显示全部楼层
matlab中的filter也是在时域对数据进行滤波的吧
 楼主| 发表于 2007-1-20 18:48 | 显示全部楼层
原帖由 yangzj 于 2007-1-20 18:37 发表
matlab中的filter也是在时域对数据进行滤波的吧


刚刚又详细看了一下帮助,确实是在时域进行滤波的。

我做的程序有一些频率混叠,原以为是filter函数的问题。现在看来是其它问题了。按理说将信号经过Hilbert变换后再进行谱分析可以将image频谱去除,发生频率混叠的概率要小得多。难道是带通滤波器没做好?

再问一句:将信号直接通过复解析带通滤波器的效果,和将信号进行Hilbert变换后通过普通滤波器的效果是不是一样的?谢谢!
发表于 2007-1-20 19:33 | 显示全部楼层
原帖由 Aprilgogo 于 2007-1-20 18:48 发表


刚刚又详细看了一下帮助,确实是在时域进行滤波的。

我做的程序有一些频率混叠,原以为是filter函数的问题。现在看来是其它问题了。按理说将信号经过Hilbert变换后再进行谱分析可以将image频谱去除,发 ...


原信号与该信号的Hilbert变换对相加就成为了一个解析信号,也就是说没有了负频率成分,这个相加信号再进行普通的滤波, 和把这个信号直接进行得解析带通滤波效果是一样的
 楼主| 发表于 2007-1-20 19:45 | 显示全部楼层
原帖由 yangzj 于 2007-1-20 19:33 发表


原信号与该信号的Hilbert变换对相加就成为了一个解析信号,也就是说没有了负频率成分,这个相加信号再进行普通的滤波, 和把这个信号直接进行得解析带通滤波效果是一样的


没有了负频率成分,这也就是可以将复解析滤波器的带通带宽扩展一倍的原因吧?

如果经过ZoomFFT分析后感兴趣的频率两边的分辨精度很低,且产生频率混叠现象,是不是因为带通滤波器的过渡带宽太大了呢?比如说,信号是200Hz的,虽然经过ZFFT可以显示出200Hz的频率分量,但200Hz两边的原本为0的频率已经混叠了。我写的ZFFT程序就出现了这样的问题。能帮助分析下原因吗?谢谢!
发表于 2007-1-20 19:59 | 显示全部楼层
没太明白你的意思,最好帖上图来

你是说200两边还会出现一些其它频率折叠回来的?
如果你用文中的第一、三种方法的话那是肯定出现这种情况的,这时候要根据你的滤波器过渡带宽来舍弃两边的谱线。
那篇文章里对滤波器的设计写的很详细的
 楼主| 发表于 2007-1-20 20:19 | 显示全部楼层
原帖由 yangzj 于 2007-1-20 19:59 发表
没太明白你的意思,最好帖上图来

你是说200两边还会出现一些其它频率折叠回来的?
如果你用文中的第一、三种方法的话那是肯定出现这种情况的,这时候要根据你的滤波器过渡带宽来舍弃两边的谱线。
那篇文章里 ...


嗯,把图贴上来了。第一幅图是我的程序生成的,第二幅图是用你的程序生成的。

信号是2000Hz和2002Hz的。我说的部分是图中红线画的2000和2002Hz旁边本不该出现的频谱泄露现象。使用你写的程序分析的结果,就没有那些泄露。

丁老师的文章我一直在看,因为基础比较差,还没有完全理解。我现在写的程序只是使用一些matlab函数,大致将文章中的思想描述了出来,还没有做到你那样大部分都使用自己的代码,而不是调用matlab中的函数。首先遇到的问题就是图中的频谱泄露了:-(肯定是自己程序中出现了一些问题,或者是没有深刻理解原文的意思。

再次谢谢你的帮助!
2000.jpg
2001.jpg
发表于 2007-1-20 20:31 | 显示全部楼层
频谱泄露是由于没整周期采样引起的,或者说实际频率没有与所求的离散频率对上引起的。
你这里的两个峰值是不是并不刚刚好是2000和2002?
如果不是的话,我想你的程序并没有多少问题?
你把你设置的参数列出来看看
 楼主| 发表于 2007-1-20 21:06 | 显示全部楼层


  1. fs = 8000;
  2. fc = 2000;
  3. N = 2^15;
  4. t = 0 : 1/fs : (N - 1) / fs;
  5. x = sin(2 * pi * f * t) + sin( 2 * pi * (f + 2) * t);
  6. D = 100;
  7. Nfft = 2^13;
  8. [F,Y] = zfft_hilbert(X,fc,fs,Nfft,D);
  9. % x:进行ZOOM FFT分析的数字信号
  10. % fc: 为进行ZOOM FFT分析的中心频率
  11. % fs: 信号的采样频率
  12. % Nfft: FFT点数
  13. % D: 放大倍数

复制代码


zfft_hilbert的流程为:

对信号x进行Hilbert变换->通过以(f1,f2)频率(fc为中心频率)的带通滤波器->以D重采样->移频-f1->做Nfft点fft->调整频率对应关系。
 楼主| 发表于 2007-1-20 21:09 | 显示全部楼层
原帖由 yangzj 于 2007-1-20 20:31 发表
频谱泄露是由于没整周期采样引起的,或者说实际频率没有与所求的离散频率对上引起的。
你这里的两个峰值是不是并不刚刚好是2000和2002?
如果不是的话,我想你的程序并没有多少问题?
你把你设置的参数列出来看看


我觉得即使频率并不刚好是2000和2002,也不会出现如此大的频率泄露。毕竟频率分辨率已经很高了。

现在正捧着奥本海姆的离散时间信号处理找原因哪:loveliness:
发表于 2007-1-20 21:28 | 显示全部楼层
原帖由 Aprilgogo 于 2007-1-20 21:09 发表


我觉得即使频率并不刚好是2000和2002,也不会出现如此大的频率泄露。毕竟频率分辨率已经很高了。

现在正捧着奥本海姆的离散时间信号处理找原因哪:loveliness:



频率分辨率再高都改善不了频谱泄露的
发表于 2007-1-20 21:33 | 显示全部楼层
原帖由 Aprilgogo 于 2007-1-20 21:06 发表


fs = 8000;
fc = 2000;
N = 2^15;
t = 0 : 1/fs : (N - 1) / fs;
x = sin(2 * pi * f * t) + sin( 2 * pi * (f + 2) * t);
D = 100;
Nfft = 2^13;
= zfft_hilbert(X,fc,fs,Nfft,D);
% x:进行ZOOM ...


为什么你的D*NFFT>N?
 楼主| 发表于 2007-1-20 21:44 | 显示全部楼层
原帖由 yangzj 于 2007-1-20 21:33 发表


为什么你的D*NFFT>N?


我是这样想的:

N/D为降采样后的点数,fft分析的点数应该大于信号的点数,Nfft>N/D便是对降采样后的点数进行Nfft点fft分析了。

不过改为D*NFFT<N后似乎频谱泄露少了点:@o
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-18 20:02 , Processed in 0.232020 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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