簡體   English   中英

如何使用 python 將樣本中的 x 軸轉換為時間 (s) 和頻率 (Hz)?

[英]How to convert x-axis from samples into time (s) and frequency (Hz) with python?

在這里,我用fft()域和頻域中繪制了一個心電圖信號:

頻域

但如您所見,兩張圖片的 x 軸仍在樣本中。

我搜索了一些如何將樣本轉換為時間 (s) 和頻率 (Hz) 的參考資料,但它失敗了,不僅 x 軸發生了變化,而且 plot 形狀也發生了變化。

你能幫我解決這個問題嗎? 謝謝你。

代碼可能如下所示:

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

時域

頻域

可以理解,您也可以 plot 只有頻域值的一半。

Scipy 的變體

sample_rate, signal = scipy.io.wavfile.read( pathname1+file)
max_time = signal.size/sample_rate
time_steps = np.linspace(0, max_time, signal.size)
plt.plot(time_steps,signal)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM