【发布时间】:2013-05-28 09:09:55
【问题描述】:
我是 Python 新手。 我打算对一组离散点(时间、加速度)进行傅里叶变换,并将结果绘制出来。
我复制并粘贴示例 FFT 代码,并进行相应修改。
请看代码:
import numpy as np
import matplotlib.pyplot as plt
# Load the .txt file in
myData = np.loadtxt('twenty_z_up.txt')
# Extract the time and acceleration columns
time = copy(myData[:,0])
# Extract the acceleration columns
zAcc = copy(myData[:,3])
t = np.arange(10080)
sp = np.fft.fft(zAcc)
freq = np.fft.fftfreq(t.shape[-1])
plt.plot(freq, sp.real)
myData 是一个 10080 行 10 列的矩形矩阵。
因此,zAcc 是从矩阵中提取的第 3 行。
在 Spyder 绘制的图中,大部分谐波集中在 0 附近。 它们都非常小。
但我的数据实际上是步行者携带手机的加速度(包括重力)。所以我预计最重要的谐波发生在 2Hz 附近。
为什么图表是无意义的?
提前致谢!
==============更新:我的图表======================
第一次域一:
x 轴以毫秒为单位。
y 轴以 m/s^2 为单位,由于地球重力,它的 DC 偏移量约为 10。
【问题讨论】:
-
np.arange(256)创建一个整数数组(例如,从 0 到 255)。当您调用t.shape[-1]时,您将获得数组t的长度(即256)。np.fft是 python 快速傅立叶变换模块。np.fft.fft()是模块中的快速傅立叶变换函数。您需要在数据上调用该函数。 -
@nicholaschris 太棒了!谢谢!然后我将 256 修改为 10080 以适应我的情况。可以在更改后绘制该图。但是图表没有意义..你能帮我再检查一下吗?
-
0 附近的谐波是什么意思?如果您的意思是在 0Hz 处有能量,即 DC,这表示时域数据中存在 DC 偏移。上传图片会很有用(我不确定需要多少分才能将图片添加到问题中,如果您没有足够的链接,请留下指向 Imgur 或类似内容的链接,有人会为您编辑它)。
-
您并没有真正提供足够的信息来获得适当的帮助。毫无疑问,有人可以猜到这个问题,但这并不是微不足道的。时域是什么样的?如果您认为数据有明显的 2Hz 振荡,那在该图上应该很明显。
-
大部分谐波集中在 0 附近。它们都非常小。 - 你的轴刻度是多少?
2Hz可以接近0Hz,尤其是在对数尺度上。
标签: python numpy python-3.x matplotlib