为什么通过归零FFT箱子来过滤一个坏主意?

2021-05-10 07:51:05

$ \ Begingroup $ IT' S非常容易通过对其执行FFT来过滤信号,从而归零一些箱,然后执行IFFT。例如:

t = linspace(0,1,256,端点= false)x = sin(2 * pi * 3 * t)+ cos(2 * pi * 100 * t)x = fft(x)x [64:192] = 0Y = IFFT(x)

$ \ endgroup $

0.

$ \ Begingroup $频域中的归零器与频域中的矩形窗口的乘数相同。通过频域中的窗口乘以循环卷积的乘语与时域中该窗口的转换相同。矩形窗口的变换是SINC功能($ \ SIN(\ OMEGA T)/ \ OMEGA T $)。请注意,SIST功能具有大量大的涟漪和纹波,延长了时域孔的全宽度。如果可以输出所有这些涟漪(振铃)的时域过滤器是A"坏主意"那么归零箱。

这些涟漪对于&#34的任何光谱含量将是最大的;箱子&#34之间;或FFT孔径宽度的非整数周期性。因此,如果您的原始FFT输入数据是该窗口中任何数据的窗口,则在该窗口中存在某种数据(例如最不同步的采样"现实世界"信号),那么那些特定的伪像将由零产生-ing垃圾箱。

查看的另一种方法是每个FFT结果箱代表时域中的正弦波的某个频率。因此,归零一个箱将产生与减去该正弦波的相同的结果,或者等效地添加精确的FFT键中心频率但具有相反相位的正弦波。注意,如果时域中的某些内容的频率在FFT宽度中不纯粹是整数周期性,则尝试通过添加完全整数周期性正弦波的倒数来取消它,而不是沉默,而是看起来更像的东西A"击败"注意(AM调制不同频率的正弦波)。再次,可能不是想要的。

相反,如果您的原始时域信号只是少数纯未调制的正弦曲线,那么FFT光圈宽度的整体周期性完全整数,那么零ING FFT箱将在没有伪影的情况下删除指定的。

$ \ endgroup $

5 $ \ begingroup $这个答案有很好的东西,但我更愿意重点关注吉布斯的效果。 $ \ endgroup $ - 吉姆粘土

$ \ begingroup $试图在此处询问gibbs效果的答案:dsp.stackexchange.com/questions/1144/... $ \ endgroup $ - hotpaw2.

$ \ begingroup $ @ hotpaw2这是一个很好的解释。但是,我需要对此的提及,并在识别一个方面找到一些困难。这是我们做时间域过滤而不是在频域中工作的原因。 (也是,时域可以是实时的。)但是,没有人似乎首先说明这个! $ \ endgroup $ - 休

$ \ begingroup $如何与过滤器设计的窗口方法相关? $ \ endgroup $ - Filipe Pinto.

$ \ begingroup $比较von HANN窗口(et.al.)的转换与任何矩形窗口的变换。一般更好的过滤滤波,尤其是在止动带中的FFT箱之间。通常,突然归零的垃圾箱比过渡附近的零级更差。 $ \ endgroup $ - hotpaw2.

$ \ begingroup $这个问题也很长一段时间让我感到困惑。 @ hotpaw2'解释很好。您可能对使用matlab的简单实验感兴趣。

为了验证这一事实很简单,我们只需要谨慎遵守理想(?)带通滤波器的脉冲响应的频谱,该频带通过过滤器只是零速率垃圾箱。为什么我需要添加副词和#34;谨慎&#34 ;?如果我们只使用相同的FFT大小来观察脉冲的响应,我们将被欺骗,如图1所示。如果我们在观察过滤器的输出时添加DFT的顺序,即零填充脉冲响应,我们可以找到所谓的GIBB现象,频域的涟漪,如图2所示。

事实上的结果来自窗口效果。如果您想完全理解该问题,请参阅DSP(1)的圣经的第7.6和第10.1-10.2章。总结一下,这里指出了三个关键点。

窗口的属性(类型/大小)主导DTFT的形状。 (Ex。较宽的主叶导致频率响应的瞬态带宽。)

DFT只是频域中DTFT的采样。而且,DFT的顺序越高,DFT的频谱的密集是。

因此,在图2中的密度频谱的帮助下,我们可以通过理想(假)带通滤波器的面具看到。

(1)Alan V. Oppenheim和Ronald W. Schafer。离散时间信号处理(第3 ED)。 Prentice Hall Press,Upper Saddle River,NJ,美国。

fps = 15; lpf = 1; hpf = 2; n = -511:512; n0 = 0;否定=(n == n0); nyquistf = 1/2 * fps; %%理想bpftmp_n = 512; tmp_n = 0 :1:tmp_n-1; freq =(n。* fps)./ tmp_n; f = fft(imp,tmp_n); f_bpf = lealBandPassFilter(F,FPS,LPF,HPF); IMP_REP = [REAL(IFFT(F_BPF))'];%零padding.imp_rep2 = [零(1,2048)真实(IFFT(f_bpf))& #39;零(1,2048)]; n = 2 ^ nextPow2(长度(IMP_rep)); f = fft(Imp_rep,n); freq_step = fps / n; freq = -fps / 2:freq_step:fps / 2-freq_step; freq = freq(n / 2 + 1:结束)&#39 ;;图;绘图(弗里克,abs(f(1:n / 2))); xlabel(' freq(hz)' ); ylabel(' mag');标题(' mis领先的freq response'); n = 2 ^ nextpow2(长度(Imp_rep2)); f = fft(Imp_rep2,n); freq_step = fps / n; freq = -fps / 2:freq_step:fps / 2-freq_step; freq = freq(n / 2 + 1:结束)&#39 ;;图;图(弗里克,abs(f(1: n / 2)); xlabel(' freq(弗里克)'); ylabel(' mag');标题('零填充(dft)与更多点&# 39;); %% functionfunction filered_signal = lealbandpassfilter(input_signal,fs,w1,w2)n =长度(input_signal); n = 0:1:n-1; freq =(n。* fs)./ n; filered_signal = zeros(n,1);对于i = 1:n如果freq(i)> W1& freq(i)< w2 filered_signal(i)= input_signal(i);结束终止

$ \ endgroup $

0.

$ \ Begingroup $ FFT给出了较差的时间分辨率,即它并在特定频率的时间内提供信息。它提供了关于给定信号持续时间的现有频率分量的信息。

$ \ endgroup $

3 $ \ Begingroup $然而,对于非常长的信号来取FFT和IFFT存在计算困难。为避免信号的Zitter /振铃滤波必须从通过带频带平稳地传输到停止频带。 $ \ endgroup $ - ITTA Gouthami.

$ \ begingroup $" fft给出了较差的时间分辨率" FFT不会提供时间分辨率,它' s一个频谱域变换等,之类之后,仅提供有关信号的频率分量的信息。 $ \ endgroup $ - Edparadox.

$ \ begingroup $的fft提供的分辨率是它的长度' s窗口。 在FFT&#39之外的任何东西都没有像在FFT' s窗口内部没有解决。 $ \ endgroup $ - hotpaw2. 点击“发布答案”,您同意我们的服务条款,隐私政策和Cookie政策 不是答案你和#39;寻找? 浏览其他标记的问题或提出您自己的问题。