如何使用python中的平均频率提取心电图特征?

How to do features extraction of ECG using mean frequency in python?

你能帮我更正下面这段代码吗?

这里我尝试通过计算平均频率来提取心电图的特征

首先,我用这段代码阅读了音频:

Fs, data = read('ecg_file.wav')

数据输出: enter image description here

然后,对数据进行 FFT

Y = np.abs(rfft(data))

fft 的输出: enter image description here

现在,我想应用这个公式,它是平均频率的公式。 enter image description here

从我看过的参考资料来看,M是频率仓的长度。要查找 P,我使用此代码:

power_spectrum = Y**2

而且我仍然对计算 fj 的值感到困惑。 你们能帮忙改一下上面的代码吗?

Numpy 有一个很好的操作,可以从称为 fftfreqrfftfreq 的傅立叶变换中获取频率值,例如您的示例。

import numpy as np
# First get the frequency vector
freq = np.fft.rfftfreq(len(data), Fs)
# Then calculate (weighted) mean

mean_f = np.sum(freq * power_spectrum / np.sum(power_spectrum)) # This should equal to the formula in your image.

您不需要对 numpy 数组进行逐元素乘法。