简体   繁体   中英

how to convert the x-axis accelerator signal into spectrogram in python?

my dataset (patient No., time/millisecond, x, y, z, label)

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
.
.
.

i am trying to to use the spectrogam for x-axis signal in preprocessing stage to use it then as the input data for a machine learning model instead of using the original raw x-axis data

here is what i tried to do

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()

it gets me the following error

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

如果x是你的信号,你可以假设你的采样率的平均time/millisecond ,那么很可能你可以使用librosa库使用来计算梅尔频谱librosa.feature.melspectrogram ,也有其他utils的计算信号相关特征。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM