我找到了一段Python代码片段。我用它来创建有用的Python代码来提取主要频率。我知道该代码是有效的,因为我在一些运行中使用了默认的N和Nev值,并收到了与正弦方法相同的Strouhal数(St)
我在计算涡街的频率,所以我没有直流频率,但我得到“0.0”。当代码运行时,我测试了N和Nev的值。我注意到支配频率的最终结果非常依赖于N
我已经看过了推荐的帖子,但没有达到要求。这是代码。当提升数据增加时,如何调整linspace的采样
#1/usr/bin/env python
import sys
import numpy as np
import scipy.fftpack as fftpack
import matplotlib.pyplot as plt
print("Hello World!")
N = 2500
Nev = 1000
data = np.loadtxt('CoefficientLiftData.dat', usecols= (0,3))
times = data[:,0]
length = int(len(times)/2)
forcez= data[:,1]
t = np.linspace(times[length], times[-1], N)
forcezint = np.interp(t, times, forcez)
fourier = fftpack.fft(forcezint[Nev-1:N-1])
frequencies = fftpack.fftfreq(forcezint[Nev-1:N-1].size, d=t[1]-t[0])
#print(frequencies)
freq = frequencies[np.argmax(np.abs(fourier))]
print(freq)
关于如何选择正确的频率标度,你看过this answer吗?此外,如果信号在间隔边界处不相等,您应该查看窗口函数,如Tukey window,以获得信号的正确频率
编辑:您还可以看看this answer,它详细解释了如何获得FFT分析的正确结果
相关问题 更多 >
编程相关推荐