用终极的方式回答你的问题怎么样?如果无限次或实际上多次应用低通滤波器会发生什么?相信你理解这个更有意义。
我想首先强调一个事实 ,则将过滤器应用于次,相当于将过滤器应用于一次
。FdkF′d
F′=F∗F∗⋯∗Fktimes
您问题的“最终”版本的答案是:无论您从哪里开始使用低通滤波器,都说,使用和 ,当您将滤波器应用于某些离散信号次时,您最终将应用高斯滤波器F=[f0,f1,⋯,fn]∑ni=0fi=1fi≥0GFd=[d0,d1,⋯,dm]k→∞
注意:这个结论不依赖于 1)要处理的信号是什么,2)你使用哪个,以及它是lowpass。dF
这是一些ipython代码,你可能会玩。
import numpy as np
# generate a random low pass filter
F = np.random.randint(0,1000,(100,1) ).astype('float').ravel();
# ensures sum to 1
F = F / F.sum();
print "sum(F) = ", F.sum();
# create copy to buffer the last version of convolving F for k times
Fk = F.copy();
Fk_list = [];
for k in range( 5 ) :
Fk = np.convolve( Fk, F, 'full' );
Fk = Fk / Fk.sum();
# donot worry about this line, see comments below
Fk = np.asarray( filter( lambda x : x > 1e-6, Fk ) );
Fk = Fk / Fk.sum();
Fk_list.append( Fk );
# plot results
f, axarr = pyplot.subplots( 3, 2 );
# plot data
axarr[0,0].plot( F ),
axarr[0,0].set_title( 'k = 0' );
axarr[0,1].plot( Fk_list[0] ),
axarr[0,1].set_title( 'k = 1' );
axarr[1,0].plot( Fk_list[1] ),
axarr[1,0].set_title( 'k = 2' );
axarr[1,1].plot( Fk_list[2] ),
axarr[1,1].set_title( 'k = 3' );
axarr[2,0].plot( Fk_list[3] ),
axarr[2,0].set_title( 'k = 4' );
axarr[2,1].plot( Fk_list[4] ),
axarr[2,1].set_title( 'k = 5' );
pyplot.show();
- 带有 filter 关键字的那行只是简单地丢弃非常小的组件,因为我想让你看到漂亮的钟形高斯。否则,结果仍然是 Gassuian,但由于我们可能包含许多超出 4 倍标准差的东西,您会看到类似峰值的东西。
以下是上述 ipython 代码的结果。如您所见,卷积到 self 的次数越多,得到的低通滤波器就越类似于高斯滤波器。F

现在让我用一个非常不同的给你另一个视觉演示,它只包含两个非零值。虽然这次你看不到在 5 次卷积中是高斯的,但长期行为,即并没有改变。经过大量的自卷积后会变成高斯样。FFk→∞

最后,您可能会问为什么会发生这种情况?因为上帝爱高斯。这个结论就是所谓的“中心极限定理”(详见http://en.wikipedia.org/wiki/Central_limit_theorem)。我不会为你解释一切,因为我希望你能自己学习。但这里有一个提示:概率/离散分布、算术平均值、低通滤波器系数、线性算子和卷积,它们都是相关的。如果您在理解新事物方面有任何困难,请尝试通过您在亲密关系中已经知道的事物来理解它。