如何使用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 有一个很好的操作,可以从称为 fftfreq
或 rfftfreq
的傅立叶变换中获取频率值,例如您的示例。
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 数组进行逐元素乘法。
你能帮我更正下面这段代码吗?
这里我尝试通过计算平均频率来提取心电图的特征
首先,我用这段代码阅读了音频:
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 有一个很好的操作,可以从称为 fftfreq
或 rfftfreq
的傅立叶变换中获取频率值,例如您的示例。
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 数组进行逐元素乘法。