繁体   English   中英

SciPy:将特征转换为频域

[英]SciPy: convert feature to frequency domain

问题陈述

给定 :由时间/幅度值组成的时间序列

所需输出 :将给定信号转换为由时间/频率值组成的频域

更多信息

我希望输入中的时间戳与输出中的频率水平具有相同的映射。

为此,我使用了SciPysignal.spectrogram函数。 显然,输入和输出之间存在对应关系。

问题 :将输出转换为时间/频率值的首选方法是什么? 取最大值是一种好习惯吗?

fs = 1.0
f, t, Sxx = signal.spectrogram(x, fs)
plt.pcolormesh(t, f, Sxx)
plt.ylabel('Frequency [Hz]')
plt.xlabel('Time [sec]')
plt.axis([t.min(), t.max(), f.min(), .02])
plt.show()

输入 谱图

问题:将输出转换为时间/频率值的首选方法是什么? 取最大值是一种好习惯吗?

通常,如果您计算频谱图,则希望在每个时间点周围的窗口中查看组成信号的频率是多少。 这就是为什么您得到显示的热图的原因。 现在,这已经是信号在频域中随时间变化的表示。 如果仅取最大值,则将剪切相关信息,并且所获得的将是不同信号的表示。 这不是您想要的,因为从信号处理的角度来看这没有意义。 您将仅基于每个时间窗口中最强的频率来表示伪像信号。

如果频谱图未显示您要查找的信息,您可能想探索将频率特征表示为时间函数的其他方式。 例如,尝试探索Wavelet变换,(请参见此处应用到时间序列的连续Wavelet变换(cwt)的示例),您可以使用PyWavelets包轻松获得它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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