【发布时间】:2021-03-09 11:42:03
【问题描述】:
我正在尝试使用 scipy FFT 计算信号频率。通过“手动”计算频率,它显然在 2.5 Hz 左右。
这是我的输入信号: Signal Amplitude over Time
这是我正在使用的代码:
import matplotlib.pyplot as plt
import numpy as np
from scipy import fft
##---Get Data
AccZ = np.loadtxt('...', delimiter=';', usecols=(0,3))
Time = np.array(AccZ[:,0])
AccZ = np.array(AccZ[:,1])
Time_Step = Time[1]-Time[0]
##---FFT
AccZ_fft = fft.fft(AccZ)
Amp = np.abs(AccZ_fft)
Sample_Freq = fft.fftfreq(AccZ.size, d=Time_Step)
Amp_Freq = np.array([Amp, Sample_Freq])
Amp_Pos = Amp_Freq[0,:].argmax()
Peak_Freq = Amp_Freq[1, Amp_Pos]
这是我从 FFT 得到的: Amplitude over Frequency
不幸的是,我的最高值始终位于数组位置 [0],这意味着我的 Sample_Freq 数组中的峰值频率始终为 0。
我在这里做错了什么?会感谢任何帮助。
【问题讨论】:
-
能否添加一些示例数据,以便重新创建错误?