首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解matplotlib magnitude_spectrum输出

理解matplotlib magnitude_spectrum输出
EN

Stack Overflow用户
提问于 2014-12-02 00:24:14
回答 1查看 2.1K关注 0票数 3

我在理解matplotlib的magnitude_spectrum函数调用生成的输出时遇到了问题。

我产生了一个频率为50千赫的正弦,

代码语言:javascript
复制
f_s = 488000.0 # Hz
t = np.arange(0.0, 1.0, 1/f_s)
s1 = 100*np.sin(2*np.pi*50000*t)

然后,在除以FFT回收箱的数目之后,绘制出所产生的震级谱。

代码语言:javascript
复制
s1_magspec = plt.magnitude_spectrum(s1,Fs=f_s)
plt.plot(s1_magspec[0]/len(s1_magspec[0]))

结果是一个50千赫的单一峰值,但震级为50,而不是预期的100。

有人能解释一下为什么吗?

下面是一个ipython笔记本的链接,描述了上面提到的代码和结果的情节:

http://nbviewer.ipython.org/gist/bkinman/22cc15d3ad3b9b2db09e

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-02 01:43:49

它看起来与所使用的FFT窗口的默认设置有关。文档显示,默认情况下是一个汉宁窗口。如果您使用的是箱式车窗,那么:

代码语言:javascript
复制
s1_magspec = plt.magnitude_spectrum(s1, Fs=f_s, window=np.ones(s1.shape))

你会得到你的峰值在100,就像一个直接的数字FFT。

顺便说一句,如果你把你的问题编辑成创建s1_magspec的代码,而不是依赖笔记本查看器,那就更好了,因为有一天,这个链接肯定会中断。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27239844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档