gpt4 book ai didi

python - 计算 Python 中感兴趣的频率 F 周围每个频带的能量

转载 作者:太空狗 更新时间:2023-10-29 21:56:50 24 4
gpt4 key购买 nike

我是信号处理的新手,在这个问题中,我想问一下如何获取感兴趣频率F附近每个频带的能量。我找到了一个公式,但我不知道如何在Python中实现它。这是公式和我的傅里叶变换图: enter image description here

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.

enter image description here

最佳答案

你快到了 Mike指出但这是一种更容易理解的不同方法。您可以设置一个变量来保存过滤后的信号并返回 Af 的一维数组,然后应用上面非常简单的公式(这些幅度的平方和)

像这样过滤掉信号

from scipy.signal import butter, lfilter
def butter_bandpass(lowcut, highcut, fs, order=5):
nyq = 0.5 * fs
low = lowcut / nyq
high = highcut / nyq
b, a = butter(order, [low, high], btype='band')
return b, a
def butter_bandpass_filter(data, lowcut, highcut, fs, order=5):
b, a = butter_bandpass(lowcut, highcut, fs, order=order)
y = lfilter(b, a, data)
return y

现在假设 y 是您的原始信号,您需要信号中 5Hz 分量的能量,

 #let fs = 250
#let order = 5
oneD_array_of_amps_of_fiveHz_component = butter_bandpass_filter(y, 4, 6, 250, 5)
#calculate energy like this
energy_of_fiveHz_comp = sum([x*2 for x in oneD_array_of_amps_of_fiveHz_component])

关于python - 计算 Python 中感兴趣的频率 F 周围每个频带的能量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30659579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com