簡體   English   中英

如何從 FFT 中找到主頻率?

[英]How to find dominant frequency from FFT?

峰值建議,在評論中,沒有找到最常出現的峰值。 我需要找到最常出現的頻率。

我需要在我的提升系數數據中找到主導頻率。 我使用以下代碼獲得的頻率非常大,而不是主要頻率。 我知道是因為二維分析很容易用圖表分析。 它是正弦的。 主頻是指重復次數最多的信號頻率。

#1/usr/bin/env python

import sys
import numpy
from numpy import sin
from math import pi

print("Hello World!")

data = numpy.loadtxt('CoefficientLiftData.dat', usecols= (0,3)) 
n = data.size
timestep = 0.000005
The peak data suggestion, in the comments, does not provide a count method to find how often a frequency occurs. 

print(data)
fourier = numpy.fft.fft(data)
frequencies = numpy.fft.fftfreq(n, d=timestep) 
positive_frequencies = frequencies[numpy.where(frequencies >= 0)] 
magnitudes = abs(fourier[numpy.where(frequencies >= 0)])

peak_frequency = numpy.argmax(magnitudes)
print(peak_frequency)

以下是如何從例如 OpenFOAM 的提升系數數據中提取主導頻率。

#1/usr/bin/env python

import sys
import numpy as np
import scipy.fftpack as fftpack
from numpy import sin
from math import pi
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], 2500) 
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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM