首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python中的快速傅里叶图

Python中的快速傅里叶图
EN

Stack Overflow用户
提问于 2021-01-03 16:06:22
回答 2查看 801关注 0票数 2

我有一个时域振动数据,并希望将其转换为频域与fft。然而,FFT的图只显示了一个大的峰值在零,而没有其他。

这是我的振动数据:https://pastebin.com/7RK57kJW

我的代码:

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt

t = np.arange(3000)
a1_fft= np.fft.fft(a1, axis=0)
freq = np.fft.fftfreq(t.shape[-1])
plt.plot(freq, a1_fft)

我的FFT图:

我在这里做错什么了?我很确定我的数据是一致的,在其他情况下,fft也会引发类似的问题。

EN

Stack Overflow用户

发布于 2021-01-03 17:36:57

峰值在0是直流增益,这是非常高,因为你没有正常化你的数据。另外,傅里叶变换是一个复数,你应该分别画出绝对值和相位。在这段代码中,我只画出了正频率:

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt

#Import data
a1 = np.loadtxt('a1.txt')
plt.plot(a1)

#Normalize a1
a1 -= np.mean(a1)

#Your code
t = np.arange(3000)
a1_fft= np.fft.fft(a1, axis=0)
freq = np.fft.fftfreq(t.shape[-1])

#Only plot positive frequencies
plt.figure()
plt.plot(freq[freq>=0], np.abs(a1_fft)[freq>=0])
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65551946

复制
相关文章

相似问题

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