簡體   English   中英

選擇*最佳*帶寬進行小波變換

[英]Choose the *best* bandwidth for wavelet transformation

轉換一維連續信號數據,並生成給定帶寬/比例的一系列轉換。 現在如何自動選擇最佳帶寬或在給定范圍內進行縮放?

示例:在圖表中,深藍色線是原始的一維連續信號數據。 每隔一條曲線是針對一定帶寬范圍[10、20、30、40、50]的數據轉換。 對於此示例,如何自動選擇最能捕獲曲線變化的帶寬

注意:答案可以是Python特定的,也可以是關於如何計算“最佳”帶寬的通用方法。

import numpy 
import matplotlib.pyplot as plt
from scipy.signal import ricker, cwt

data         #numpy.ndarray
# data = ([11,  8,  8,  2,  2,  4,  4,  4,  4,  3,  3,  5,  5,  9, 12, 17, 19, 19, 20, 19, 19, 14, 12, 11,  9,  6,  4,  3,  3,  2,  2,  6,  9, 12, 16, 17, 19, 20, 20, 19, 17, 15, 13,  9,  7,  6,  5,  3,  2,  4], dtype=int64)
bandwidths = np.arange(10, 60, 10)
cwt_data = cwt(data, ricker, bandwidths)   #transforms the data
plt.plot(cwt_speed.T, label='Transformed data')
plt.plot(speed, label='original data', linewidth=2)
plt.legend()

在此處輸入圖片說明

對於此類問題,您可以使用Welch的scipy.signal.welch方法來確定給定頻率攜帶的電波的預期功率。

在此處輸入圖片說明

此方法的簡單解釋是,它在幾個時間段內使重疊的頻率范圍帶通,並通過連續平均確定每個頻率下表示的信噪比。

有兩種方法可以使用此分析選擇卷積帶通。

我建議您查看PSD,並在頻譜中找出功率偏離1 / f曲線的局部最大值。 較低的頻率范圍通常會更好地進行統計擬合(除非您的信號帶有顯式編碼的振盪信號),因此選擇整體最大值會受到該影響。

對於看起來像您正在使用的未編碼信號(神經數據,歷史趨勢,觀察到的數據等),我們通常更關注曲線上“凸點”的發生位置,因為這些信號指示振盪驅動器在哪個頻率上攜帶部分信號。 這樣,由於隨機性,我們可以表示重要信息,而不是最佳擬合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM