如何使用 python 将样本的 x 轴转换为时间 (s) 和频率 (Hz)?
How to convert x-axis from samples into time (s) and frequency (Hz) with python?
这里我用 fft()
在时域和频域中绘制了心电图信号:
time-domain
frequency-domain
但如您所见,两张图片的 x 轴仍在样本中。
我已经搜索了一些如何将样本转换为时间(s)和频率(Hz)的参考资料,但它失败了,不仅 x 轴发生了变化,而且绘图形状也发生了变化。
你能帮我解决这个问题吗?谢谢。
代码可以如下所示:
signal, sample_rate = librosa.load(blues_1)
max_time = signal.size/sample_rate
time_steps = np.linspace(0, max_time, signal.size)
plt.figure()
plt.plot(time_steps, signal)
plt.xlabel("Time [s]")
plt.ylabel("Amplitude")
f = np.abs(np.fft.fft(signal))
freq_steps = np.fft.fftfreq(signal.size, d=1/sample_rate)
plt.figure()
plt.plot(freq_steps, f)
plt.xlabel("Frequency [Hz]")
plt.ylabel("Amplitude")
可以理解,您也可以在频域中仅绘制一半的值。
这里我用 fft()
在时域和频域中绘制了心电图信号:
time-domain
frequency-domain
但如您所见,两张图片的 x 轴仍在样本中。
我已经搜索了一些如何将样本转换为时间(s)和频率(Hz)的参考资料,但它失败了,不仅 x 轴发生了变化,而且绘图形状也发生了变化。
你能帮我解决这个问题吗?谢谢。
代码可以如下所示:
signal, sample_rate = librosa.load(blues_1)
max_time = signal.size/sample_rate
time_steps = np.linspace(0, max_time, signal.size)
plt.figure()
plt.plot(time_steps, signal)
plt.xlabel("Time [s]")
plt.ylabel("Amplitude")
f = np.abs(np.fft.fft(signal))
freq_steps = np.fft.fftfreq(signal.size, d=1/sample_rate)
plt.figure()
plt.plot(freq_steps, f)
plt.xlabel("Frequency [Hz]")
plt.ylabel("Amplitude")
可以理解,您也可以在频域中仅绘制一半的值。