當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python SciPy signal.cwt用法及代碼示例

本文簡要介紹 python 語言中 scipy.signal.cwt 的用法。

用法:

scipy.signal.cwt(data, wavelet, widths, dtype=None, **kwargs)#

連續小波變換。

使用小波函數對數據執行連續小波變換。 CWT 使用小波函數對數據進行卷積,其特征在於寬度參數和長度參數。小波函數可以是複數。

參數

data (N,) 數組

執行轉換的數據。

wavelet 函數

小波函數,它應該有 2 個參數。第一個參數是返回向量將具有的點數 (len(wavelet(length,width)) == length)。第二個是寬度參數,定義小波的大小(例如高斯的標準偏差)。請參閱滿足這些要求的 ricker

widths (M,) 序列

用於變換的寬度。

dtype 數據類型,可選

所需的輸出數據類型。默認為float64如果輸出小波是真實的並且complex128如果它很複雜。

kwargs

傳遞給小波函數的關鍵字參數。

返回

cwt:(M,N)ndarray

將具有 (len(widths), len(data)) 的形狀。

注意

對於非對稱complex-valued小波,輸入信號與小波數據的time-reversedcomplex-conjugate進行卷積[1]。

length = min(10 * width[ii], len(data))
cwt[ii,:] = signal.convolve(data, np.conj(wavelet(length, width[ii],
                                **kwargs))[::-1], mode='same')

參考

[1]

S. Mallat,“信號處理小波導覽(第 3 版)”,學術出版社,2009 年。

例子

>>> import numpy as np
>>> from scipy import signal
>>> import matplotlib.pyplot as plt
>>> t = np.linspace(-1, 1, 200, endpoint=False)
>>> sig  = np.cos(2 * np.pi * 7 * t) + signal.gausspulse(t - 0.4, fc=2)
>>> widths = np.arange(1, 31)
>>> cwtmatr = signal.cwt(sig, signal.ricker, widths)

注意

對於 cwt 矩陣繪圖,建議翻轉 y 軸

>>> cwtmatr_yflip = np.flipud(cwtmatr)
>>> plt.imshow(cwtmatr_yflip, extent=[-1, 1, 1, 31], cmap='PRGn', aspect='auto',
...            vmax=abs(cwtmatr).max(), vmin=-abs(cwtmatr).max())
>>> plt.show()
scipy-signal-cwt-1.png

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.signal.cwt。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。