如何选择正确的邻域采样数据以获得正确的主频结果

2024-09-30 18:17:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我找到了一段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)

Tags: 代码importdataasnplength频率print
1条回答
网友
1楼 · 发布于 2024-09-30 18:17:04

关于如何选择正确的频率标度,你看过this answer吗?此外,如果信号在间隔边界处不相等,您应该查看窗口函数,如Tukey window,以获得信号的正确频率

编辑:您还可以看看this answer,它详细解释了如何获得FFT分析的正确结果

相关问题 更多 >