0

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

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

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

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

数据输出: 在此处输入图像描述

然后,对数据进行 FFT

Y = np.abs(rfft(data))

fft 的输出: 在此处输入图像描述

现在,我想应用这个公式,它是平均频率的公式。 在此处输入图像描述

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

power_spectrum = Y**2

我仍然对计算f j 的值感到困惑。你们能帮忙纠正上面的代码吗?

4

1 回答 1

0

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 数组进行元素乘法。

于 2021-08-06T23:57:26.330 回答