多级复解析滤波器问题
如果信号经过了一级复解析滤波器,然后降采样,此时信号已经变为实部+虚部了,如何再通过第二级复解析滤波器呢?是不是只把实部取出来然后与复解析滤波器相卷积就行了呢?谢谢! 不是的,得用滤波后的复信号与滤波器做卷积 谢谢!像matlab中的filter函数都是用的fft做的滤波,在这种情况下,会导致谱分析的精度降低。
也就是说,如果要利用降采样进行高精度谱分析,就不能用filter函数进行滤波,而需要将信号与滤波器一个一个地卷积对不对? matlab中的filter也是在时域对数据进行滤波的吧 原帖由 yangzj 于 2007-1-20 18:37 发表
matlab中的filter也是在时域对数据进行滤波的吧
刚刚又详细看了一下帮助,确实是在时域进行滤波的。
我做的程序有一些频率混叠,原以为是filter函数的问题。现在看来是其它问题了。按理说将信号经过Hilbert变换后再进行谱分析可以将image频谱去除,发生频率混叠的概率要小得多。难道是带通滤波器没做好?
再问一句:将信号直接通过复解析带通滤波器的效果,和将信号进行Hilbert变换后通过普通滤波器的效果是不是一样的?谢谢! 原帖由 Aprilgogo 于 2007-1-20 18:48 发表
刚刚又详细看了一下帮助,确实是在时域进行滤波的。
我做的程序有一些频率混叠,原以为是filter函数的问题。现在看来是其它问题了。按理说将信号经过Hilbert变换后再进行谱分析可以将image频谱去除,发 ...
原信号与该信号的Hilbert变换对相加就成为了一个解析信号,也就是说没有了负频率成分,这个相加信号再进行普通的滤波, 和把这个信号直接进行得解析带通滤波效果是一样的 原帖由 yangzj 于 2007-1-20 19:33 发表
原信号与该信号的Hilbert变换对相加就成为了一个解析信号,也就是说没有了负频率成分,这个相加信号再进行普通的滤波, 和把这个信号直接进行得解析带通滤波效果是一样的
没有了负频率成分,这也就是可以将复解析滤波器的带通带宽扩展一倍的原因吧?
如果经过ZoomFFT分析后感兴趣的频率两边的分辨精度很低,且产生频率混叠现象,是不是因为带通滤波器的过渡带宽太大了呢?比如说,信号是200Hz的,虽然经过ZFFT可以显示出200Hz的频率分量,但200Hz两边的原本为0的频率已经混叠了。我写的ZFFT程序就出现了这样的问题。能帮助分析下原因吗?谢谢! 没太明白你的意思,最好帖上图来
你是说200两边还会出现一些其它频率折叠回来的?
如果你用文中的第一、三种方法的话那是肯定出现这种情况的,这时候要根据你的滤波器过渡带宽来舍弃两边的谱线。
那篇文章里对滤波器的设计写的很详细的 原帖由 yangzj 于 2007-1-20 19:59 发表
没太明白你的意思,最好帖上图来
你是说200两边还会出现一些其它频率折叠回来的?
如果你用文中的第一、三种方法的话那是肯定出现这种情况的,这时候要根据你的滤波器过渡带宽来舍弃两边的谱线。
那篇文章里 ...
嗯,把图贴上来了。第一幅图是我的程序生成的,第二幅图是用你的程序生成的。
信号是2000Hz和2002Hz的。我说的部分是图中红线画的2000和2002Hz旁边本不该出现的频谱泄露现象。使用你写的程序分析的结果,就没有那些泄露。
丁老师的文章我一直在看,因为基础比较差,还没有完全理解。我现在写的程序只是使用一些matlab函数,大致将文章中的思想描述了出来,还没有做到你那样大部分都使用自己的代码,而不是调用matlab中的函数。首先遇到的问题就是图中的频谱泄露了:-(肯定是自己程序中出现了一些问题,或者是没有深刻理解原文的意思。
再次谢谢你的帮助! 频谱泄露是由于没整周期采样引起的,或者说实际频率没有与所求的离散频率对上引起的。
你这里的两个峰值是不是并不刚刚好是2000和2002?
如果不是的话,我想你的程序并没有多少问题?
你把你设置的参数列出来看看
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 FFT分析的数字信号
% fc: 为进行ZOOM FFT分析的中心频率
% fs: 信号的采样频率
% Nfft: FFT点数
% D: 放大倍数
zfft_hilbert的流程为:
对信号x进行Hilbert变换->通过以(f1,f2)频率(fc为中心频率)的带通滤波器->以D重采样->移频-f1->做Nfft点fft->调整频率对应关系。 原帖由 yangzj 于 2007-1-20 20:31 发表
频谱泄露是由于没整周期采样引起的,或者说实际频率没有与所求的离散频率对上引起的。
你这里的两个峰值是不是并不刚刚好是2000和2002?
如果不是的话,我想你的程序并没有多少问题?
你把你设置的参数列出来看看
我觉得即使频率并不刚好是2000和2002,也不会出现如此大的频率泄露。毕竟频率分辨率已经很高了。
现在正捧着奥本海姆的离散时间信号处理找原因哪:loveliness: 原帖由 Aprilgogo 于 2007-1-20 21:09 发表
我觉得即使频率并不刚好是2000和2002,也不会出现如此大的频率泄露。毕竟频率分辨率已经很高了。
现在正捧着奥本海姆的离散时间信号处理找原因哪:loveliness:
频率分辨率再高都改善不了频谱泄露的 原帖由 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? 原帖由 yangzj 于 2007-1-20 21:33 发表
为什么你的D*NFFT>N?
我是这样想的:
N/D为降采样后的点数,fft分析的点数应该大于信号的点数,Nfft>N/D便是对降采样后的点数进行Nfft点fft分析了。
不过改为D*NFFT<N后似乎频谱泄露少了点:@o
页:
[1]
2