好的,频谱平坦度(也称为维纳熵)定义为频谱的几何平均值与其算术平均值的比率。

维基百科和其他参考文献都提到了功率谱。那不是傅立叶变换的平方吗? FFT产生一个“振幅频谱”,然后将其平方即可得到“功率频谱”?

基本上我想知道的是,如果spectrum = abs(fft(signal))是正确的?


spectral_flatness = gmean(spectrum)/mean(spectrum)
spectral_flatness = gmean(spectrum^2)/mean(spectrum^2)

维基百科的定义似乎直接使用了幅度:


$$
\ mathrm {Flatness} = \ frac {\ sqrt [N] {\ prod_ {n = 0} ^ {N-1} x(n)}} {\ frac {\ sum_ {n = 0} ^ {N-1} x(n)} {N}} = \ frac {\ exp \ left(\ frac {1} {N} \ sum_ {n = 0} ^ {N-1} \ ln x(n)\ right)} { \ frac {1} {N} \ sum_ {n = 0} ^ {N-1} x(n)}
$$$
其中$ x(n)$表示bin数量$的大小n $。


SciPy文档将功率谱定义为:


当输入a是时域信号且A = fft(a)时,np.abs(A)是它的功率谱振幅谱,而np.abs(A)**2是它的功率谱。


该来源同意“功率谱”的定义,并称其为$ S_ {f}(\ omega)$:


我们可以定义$ F_ {T}(\ omega)$,它是p中信号的傅立叶变换。 ,然后将功率谱定义如下:
$ \ displaystyle S_ {f}(\ omega)= \ lim_ {T \ rightarrow \ infty} \ frac {1} {T} {\ mid F_ { T}(\ omega)\ mid} ^ 2. $


此源代码根据$ S(f)$定义维纳熵。

但是我看不到像这样的方程式的平方,它似乎是基于振幅谱:


$$
S_ {flatness} = \ frac {\ exp \ left(\ frac {1} {N} \ sum_k \ log(a_k)\ right)} {\ frac {1} {N} \ sum_k a_k}
$$


同样,另一个来源根据功率谱定义频谱平坦度,但随后直接使用FFT仓的幅度,这似乎与上述“功率谱”的定义相冲突。

“功率谱”对不同的人意味着不同的事情吗?

评论

根据Wikipedia:光谱平坦度ak表示bin数k的大小。

@endolith,您好,您是否愿意接受满意的答复?

@jojek还没有,

@endolith,我相信Peter只是打在了头上;)

@jojek我试图在木板上钉钉子。 br

#1 楼

我能提供的最权威的参考资料来自Jayant&Noll,《波形的数字编码》,(c)贝尔电话实验室公司(Bell Telephone Laboratories,Incorporated 1984),由Prentice-Hall,Inc.出版。

在第57页,他们定义了光谱平坦度:



,并且在先前的第55页上,他们定义了$ S_ {xx} $:



因此FFT平方版本是您想要的版本。

它看起来像Makhoul&Wolf,线性预测以及语音,Bolt,Beranek和Newman,Inc的频谱分析

其定义也相同:





#2 楼

如果平坦度的定义指示您使用了功率谱,则可以,您应该按照SciPy文档中的参考值对幅度进行平方。在您所引用的等式中没有看到平方的地方,我认为您不能从中学到很多东西。它说

$$
S_ {flatness} = \ frac {\ exp \ left(\ frac {1} {N} \ sum_k \ log(a_k)\ right)} {\ frac {1} {N} \ sum_k a_k}
$$

,但是我在任何地方都看不到$ a_k $的定义。如果要使频谱与每个仓中的功率成比例,则需要平方。

评论


$ \ begingroup $
我想这是一个关于定义实际上是什么的问题,然后
$ \ endgroup $
– Endolith
2012年4月13日在20:19

$ \ begingroup $
根据分段频谱平坦度测量用于谐波-打击乐辨别$ a_k $表示区间数k的振幅谱。
$ \ endgroup $
–哈米德·格拉米(Hamed Gholami)
18年8月6日在12:50



$ \ begingroup $
@HamedGholami请不要再输入您的评论作为答案。您的评论未提供问题的答案,但希望在此处提供帮助。
$ \ endgroup $
– Peter K.♦
18年8月8日在16:29

$ \ begingroup $
@PeterK。我认为新用户不能发表评论,但可以发表答案。
$ \ endgroup $
– Endolith
18年8月9日在13:46

$ \ begingroup $
@endolith理解了。但是,即使在乔耶克(Jojek)将他的第一个答案移至对该问题发表评论后,哈默德(Hamed)也重新张贴了同样的评论作为答案。那就是我要劝阻的行为:在他们的“答案”被移动之后再次重新发布。
$ \ endgroup $
– Peter K.♦
18年8月9日在13:52



#3 楼

定义各不相同,不是吗?首先要解决的是我们是否同意功率谱密度等于功率谱,或者定义两者的含义。 Proakis和Salehi是它们的同义词。继续讲,我认为差异是由于功率谱之一的信号定义不同而引起的。通常的定义是傅立叶变换数据的幅度平方。 Wiener-Khinchin定理通过自相关的傅立叶变换为WSS信号的功率谱提供了另一条路径。根据是否用平方定义功率谱,可以得到频谱平坦度的平方。

其他人使用傅立叶变换的幅度。有人将其称为“功率谱”,并为“功率谱”的导数保留名称“功率谱密度”,而其他人则将术语“功率谱”保留为自相关傅里叶变换的积分(其他人称之为功率谱)。如您所见,定义比比皆是;随意发明:)还是遵循Wiener-Khinchin标准。

相关问题:功率谱密度,频谱功率和功率比之间的区别?

评论


$ \ begingroup $
也说“功率谱”。
$ \ endgroup $
– Endolith
2012年4月13日在21:24

$ \ begingroup $
ಠ_ಠಠಠ
$ \ endgroup $
– Endolith
2012年5月16日16:17

#4 楼

这是一个很好的问题,我也想知道自己。频谱平坦度(也称为Weiner熵)仅是向量“峰度”的量度。

此消息似乎表明,所考虑的矢量是功率谱密度,在这种情况下,必须平方。如果对幅度谱求平方,那么在您未明显求平方的情况下,您将加重峰值,我认为这也更直观。