【问题标题】:how to convert the x-axis accelerator signal into spectrogram in python?如何在python中将x轴加速器信号转换为频谱图?
【发布时间】:2017-12-05 20:49:20
【问题描述】:

我的数据集(患者编号、时间/毫秒、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
.
.
.

我试图在预处理阶段使用谱图作为 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

【问题讨论】:

  • 您的代码有效吗?如果是这样,这不是你所期望的吗?你期望什么
  • 不,我的代码不起作用
  • 如果它工作我希望得到每个向量(行)的频谱图列

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


【解决方案1】:

如果x 是您的信号并且您可以假设您的采样率是time/millisecond 的平均值,那么您可能可以使用librosa 库来计算使用librosa.feature.melspectrogram 的梅尔谱图,还有其他用于计算信号相关特征的实用程序。

【讨论】:

  • 它不是音频信号,它是加速度计传感器信号
  • 没关系。如果加速度计数据是均匀采样的(或合理采样的),那么您可以使用 librosa 对其进行计算。
猜你喜欢
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
  • 2021-11-28
  • 1970-01-01
  • 1970-01-01
  • 2022-08-16
  • 2017-11-30
  • 1970-01-01
相关资源
最近更新 更多