小波变换+python
生活随笔
收集整理的這篇文章主要介紹了
小波变换+python
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
小波變換
傅里葉變換—>短時傅里葉變換—>小波變換
傅里葉變換可以分析信號的頻譜,但對于非平穩過程具有局限性(頻率隨時間變化的非平穩信號)。
短時傅里葉變換把整個時域過程分解成無數個等長的小過程,每個小過程近似平穩,再傅里葉變換,就知道在哪個時間點上出現了什么頻率。但是STFT的窗太長太短都有問題,窗太窄,窗內的信號太短,會導致頻率分析不夠準確,頻率分辨率差;窗太寬,時域不夠精細,時間分辨率低。無法滿足非平穩信號變化的頻率需求
小波變換直接把傅里葉變換的無限長的三角函數基換成了有限長的會衰減的小波基,這樣不僅能夠獲取頻率還可以定位時間。
1. 連續小波變換
import matplotlib.pyplot as plt import librosa.display import numpy as np import pywtpath = 'E:\AudioClassification-Pytorch-master\mel/audio/1_001-200.wav' y, sr = librosa.load(path, sr=16000) wavename = 'morl' totalscal = 4 # totalscal是對信號進行小波變換時所用尺度序列的長度(通常需要預先設定好) fc = pywt.central_frequency(wavename) # 計算小波函數的中心頻率 cparam = 2 * fc * totalscal # 常數c scales = cparam / np.arange(totalscal, 1, -1) # 為使轉換后的頻率序列是一等差序列,尺度序列必須取為這一形式(也即小波尺度) [cwtmatr, frequencies] = pywt.cwt(y, scales, wavename, 1.0 / sr) t = np.arange(0, y.shape[0]/sr, 1.0/sr) plt.contourf(t, frequencies, abs(cwtmatr)) plt.ylabel(u"freq(Hz)") plt.xlabel(u"time(s)") plt.subplots_adjust(hspace=0.4) # 調整邊距和子圖的間距 hspace為子圖之間的空間保留的高度,平均軸高度的一部分 plt.title = ("小波時頻圖") plt.show()totalscal=4時的小波時頻圖
totalscal=256時的時頻圖
可以看出小波變換尺度的大小對于時頻圖的影響還是比較大的
如果是將連續小波變換提取的特征加入到神經網絡進行訓練的話可以用
2.離散小波變換
總結
以上是生活随笔為你收集整理的小波变换+python的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中职的电子计算机应用,中职计算机的应用论
- 下一篇: python批量检索文献_Python+