日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

小波变换+python

發布時間:2024/3/26 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小波变换+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時的時頻圖

可以看出小波變換尺度的大小對于時頻圖的影響還是比較大的
如果是將連續小波變換提取的特征加入到神經網絡進行訓練的話可以用

wavename = 'morl' totalscal = 256 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) features = np.array(cwtmatr) mean = np.mean(features, 0, keepdims=True) std = np.std(features, 0, keepdims=True) features = (features - mean) / (std + 1e-5) features = features.astype('float32')

2.離散小波變換

總結

以上是生活随笔為你收集整理的小波变换+python的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。