mar*_*ain 7 python physics signal-processing
我是信号处理的新手,在这个问题中,我想问一下如何为感兴趣的频率F周围的每个频段获取能量.我找到了一个公式,但我不知道如何在Python中实现它.这是公式和我的傅里叶变换图:

x = np.linspace(0,5,100)
y = np.sin(2*np.pi*x)
## fourier transform
f = np.fft.fft(y)
## sample frequencies
freq = np.fft.fftfreq(len(y), d=x[1]-x[0])
plt.plot(freq, abs(f)**2) ## will show a peak at a frequency of 1 as it should.
Run Code Online (Sandbox Code Playgroud)

使用Find local maxima/minima with Numpy in a 1D numpy array 中的信号处理模块,您将执行以下操作:
from scipy.signal import argrelextrema
import numpy as np
delta = 0.1
F = 1
X_delta = abs(freq - F) < delta
A_f_delta = abs(f[X_delta])**2
maximum_ix = argrelextrema(A_f, np.greater)
E_F_delta = np.sum(A_f[maximum_ix])/2
E_F_delta
2453.8235776144866
Run Code Online (Sandbox Code Playgroud)