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


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


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

用法:

scipy.signal.find_peaks_cwt(vector, widths, wavelet=None, max_distances=None, gap_thresh=None, min_length=None, min_snr=1, noise_perc=10, window_size=None)#

使用小波變換查找一維數組中的峰值。

一般的方法是通過將每個寬度的寬度與小波(寬度)卷積來平滑向量。出現在足夠長的尺度上並且具有足夠高的 SNR 的相對最大值是可以接受的。

參數

vector ndarray

用於查找峰值的一維數組。

widths 浮點數或序列

用於計算 CWT 矩陣的單寬度或類似一維數組的寬度。一般來說,該範圍應涵蓋感興趣峰的預期寬度。

wavelet 可調用的,可選的

應該采用兩個參數並返回一個一維數組以與向量進行卷積。第一個參數確定返回的小波數組的點數,第二個參數是小波的尺度(寬度)。應該是標準化和對稱的。默認為 ricker 小波。

max_distances ndarray,可選

在每一行,隻有當 row[n] 處的相對最大值與 row[n+1] 處的相對最大值在 max_distances[n] 範圍內時,才連接脊線。默認值為 widths/4

gap_thresh 浮點數,可選

如果在max_distances 中沒有找到相對最大值,則會出現間隙。如果有超過 gap_thresh 個點且未連接新的相對最大值,則脊線將被中斷。默認是寬度數組的第一個值,即寬度 [0]。

min_length 整數,可選

脊線的最小長度需要是可接受的。默認值為 cwt.shape[0] / 4 ,即寬度數的 1/4。

min_snr 浮點數,可選

最小信噪比。默認 1。信號是最大脊線上的最大 CWT 係數。噪聲是同一山脊線內包含的數據點的 noise_perc 百分位數。

noise_perc 浮點數,可選

計算本底噪聲時,檢查的數據點的百分位數低於該百分位數以考慮噪聲。使用 stats.scoreatpercentile 計算。默認值為 10。

window_size 整數,可選

用於計算本底噪聲的窗口大小。默認為 cwt.shape[1] / 20

返回

peaks_indices ndarray

向量中找到峰值的位置的索引。列表已排序。

注意

這種方法是為在噪聲數據中尋找尖峰而設計的,但是通過適當的參數選擇,它應該適用於不同的峰形。

算法如下:

  1. 執行連續小波變換向量,對於提供的寬度。這是一個卷積向量小波(寬度)對於每個寬度寬度.看scipy.signal.cwt.

  2. 在 cwt 矩陣中識別 “ridge lines”。這些是每行的相對最大值,跨相鄰行連接。見identify_ridge_lines

  3. 使用 filter_ridge_lines 過濾 ridge_lines。

參考

[1]

生物信息學(2006)22(17):2059-2065。 DOI:10.1093/bioinformatics/btl355

例子

>>> import numpy as np
>>> from scipy import signal
>>> xs = np.arange(0, np.pi, 0.05)
>>> data = np.sin(xs)
>>> peakind = signal.find_peaks_cwt(data, np.arange(1,10))
>>> peakind, xs[peakind], data[peakind]
([32], array([ 1.6]), array([ 0.9995736]))

相關用法


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