【发布时间】:2020-03-29 21:32:17
【问题描述】:
我正在尝试从电子读数中获取信号并将其分解为频谱图,但我不断收到一个奇怪的错误。代码如下:
f, t, Sxx = signal.spectrogram(i_data.values, 130)
plt.pcolormesh(t, f, Sxx)
plt.ylabel('Frequency [Hz]')
plt.xlabel('Time [sec]')
plt.show()
这是错误:
convert_to_spectrogram(i_data.iloc[1000,:10020].dropna().values)
Traceback (most recent call last):
File "<ipython-input-140-e5951b2d2d97>", line 1, in <module>
convert_to_spectrogram(i_data.iloc[1000,:10020].dropna().values)
File "<ipython-input-137-5d63a96c8889>", line 2, in convert_to_spectrogram
f, t, Sxx = signal.spectrogram(wf, 130)
File "//anaconda3/lib/python3.7/site-packages/scipy/signal/spectral.py", line 750, in spectrogram
mode='psd')
File "//anaconda3/lib/python3.7/site-packages/scipy/signal/spectral.py", line 1836, in _spectral_helper
result = _fft_helper(x, win, detrend_func, nperseg, noverlap, nfft, sides)
File "//anaconda3/lib/python3.7/site-packages/scipy/signal/spectral.py", line 1921, in _fft_helper
result = func(result, n=nfft)
File "//anaconda3/lib/python3.7/site-packages/mkl_fft/_numpy_fft.py", line 335, in rfft
output = mkl_fft.rfft_numpy(x, n=n, axis=axis)
File "mkl_fft/_pydfti.pyx", line 609, in mkl_fft._pydfti.rfft_numpy
File "mkl_fft/_pydfti.pyx", line 502, in mkl_fft._pydfti._rc_fft1d_impl
TypeError: 1st argument must be a real sequence 2
我的读数包含 130 个观察值的完整周期,并将其存储为 pandas df 的单个值。我特别使用的 wave 可以在 here 找到。有人知道这个错误是什么意思吗?
(小免责声明,本人对信号处理了解不多,如有幼稚问题请见谅)
【问题讨论】:
-
df中有多少列?什么dtype? -
你是如何获取 i_data 的?
-
i_data 只是电线的读数。这些列是双精度的时间序列序列。
-
那么,它是一个列表,数组,...?
-
对不起。它是我使用 .values 方法的熊猫数据框的一行,所以它将是一个 numpy.ndarray
标签: pandas numpy scipy signal-processing