Python是一種高級編程語言,被廣泛用于數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)、圖像處理等領(lǐng)域。在多種應(yīng)用場景下,我們需要對時頻信息進(jìn)行變換,來方便對信號進(jìn)行處理和分析。Python提供了一些庫和工具,可以便捷地實(shí)現(xiàn)時頻變換,如快速傅里葉變換、小波變換等。
#快速傅里葉變換 import numpy as np import matplotlib.pyplot as plt time = np.linspace(0, 2*np.pi, 1000) signal = np.sin(5*time) + np.sin(10*time) plt.plot(time, signal) plt.title('Original Signal') plt.show() fft_signal = np.fft.fft(signal) freq = np.fft.fftfreq(signal.size, d = time[1]-time[0]) plt.plot(freq, abs(fft_signal)) plt.title('FFT of Signal') plt.show() #小波變換 import pywt wavelet = 'db4' coeffs = pywt.wavedec(signal, wavelet, level=4) plt.plot(time, signal) plt.title('Original Signal') plt.show() plt.plot(pywt.upcoef('a', coeffs[0], wavelet, level=4), 'r') plt.title('Approximation Coefficient') plt.show() for i in range(4): plt.plot(pywt.upcoef('d', coeffs[i+1], wavelet, level=4), 'r') plt.title('Detail Coefficient level %d' %(i+1)) plt.show()
通過快速傅里葉變換,可以將時域信號轉(zhuǎn)換為頻域的頻譜圖,便于觀察信號中的頻率成分。小波變換則可將信號分解成多個頻帶,各個頻帶的細(xì)節(jié)信息可以方便地進(jìn)行分析和處理。Python提供的庫和工具使得時頻變換變得快捷方便,為各種領(lǐng)域的信號處理提供了有力的支持。