如何将x轴加速器信号转换为python中的频谱图?

时间:2017-12-05 20:49:21

标签: python python-3.x matplotlib signal-processing spectrogram

我的数据集(患者编号,时间/毫秒,x,y,z,标签)

1,15,70,39,-970,0
1,31,70,39,-970,0
1,46,60,49,-960,0
1,62,60,49,-960,0
1,78,50,39,-960,0
1,93,50,39,-960,0
.
.
.

我正在尝试在预处理阶段使用spectrogam用于x轴信号,然后将其用作机器学习模型的输入数据,而不是使用原始的原始x轴数据

这是我试图做的事情

import matplotlib.pyplot as plt
import numpy as np

dt = 0.0005
t = np.arange(0.0, 20.0, dt)

data = np.loadtxt("trainingdataset.txt", delimiter=",")
x = data[:]

NFFT = 1024       # the length of the windowing segments
Fs = int(1.0/dt)  # the sampling frequency

ax1 = plt.subplot(211)
plt.plot(x)
plt.subplot(212, sharex=ax1)
Pxx, freqs, bins, im = plt.specgram(x, NFFT=NFFT, Fs=Fs, noverlap=900)
plt.show()

它让我得到以下错误

Warning (from warnings module):
  File "C:\Users\hadeer.elziaat\AppData\Local\Programs\Python\Python36\lib\site-packages\matplotlib\axes\_axes.py", line 7221
    Z = 10. * np.log10(spec)
RuntimeWarning: divide by zero encountered in log10

1 个答案:

答案 0 :(得分:0)

如果x是您的信号,并且您可以假设您的采样率是time/millisecond的平均值,则可能您可以使用librosa库来使用{计算梅尔频谱图{3}},还有其他工具来计算信号相关的功能。