91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python小波變換去噪怎么使用

發布時間:2022-01-04 15:02:48 來源:億速云 閱讀:609 作者:iii 欄目:開發技術

本篇內容介紹了“Python小波變換去噪怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一.小波去噪的原理

信號產生的小波系數含有信號的重要信息,將信號經小波分解后小波系數較大,噪聲的小波系數較小,并且噪聲的小波系數要小于信號的小波系數,通過選取一個合適的閥值,大于閥值的小波系數被認為是有信號產生的,應予以保留,小于閥值的則認為是噪聲產生的,置為零從而達到去噪的目的。
小波閥值去噪的基本問題包括三個方面:小波基的選擇,閥值的選擇,閥值函數的選擇。

(1) 小波基的選擇:通常我們希望所選取的小波滿足以下條件:正交性、高消失矩、緊支性、對稱性或反對稱性。但事實上具有上述性質的小波是不可能存在的,因為小波是對稱或反對稱的只有Haar小波,并且高消失矩與緊支性是一對矛盾,所以在應用的時候一般選取具有緊支的小波以及根據信號的特征來選取較為合適的小波。
(2) 閥值的選擇:直接影響去噪效果的一個重要因素就是閥值的選取,不同的閥值選取將有不同的去噪效果。目前主要有通用閥值(VisuShrink)、SureShrink閥值、Minimax閥值、BayesShrink閥值等。
(3) 閥值函數的選擇:閥值函數是修正小波系數的規則,不同的反之函數體現了不同的處理小波系數的策略。最常用的閥值函數有兩種:一種是硬閥值函數,另一種是軟閥值函數。還有一種介于軟、硬閥值函數之間的Garrote函數。

另外,對于去噪效果好壞的評價,常用信號的信噪比(SNR)與估計信號同原始信號的均方根誤差(RMSE)來判斷。

二,在python中使用小波分析進行閾值去噪聲,使用pywt.threshold函數

#coding=gbk
#使用小波分析進行閾值去噪聲,使用pywt.threshold
 
import pywt
import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt 
import math 
 
data = np.linspace(1, 10, 10)
print(data)
# [ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]
# pywt.threshold(data, value, mode, substitute) mode 模式有4種,soft, hard, greater, less; substitute是替換值可以點進函數里看,data/np.abs(data) * np.maximum(np.abs(data) - value, 0)
 
data_soft = pywt.threshold(data=data, value=6, mode='soft', substitute=12)
print(data_soft)
# [12. 12. 12. 12. 12.  0.  1.  2.  3.  4.] 將小于6 的值設置為12, 大于等于6 的值全部減去6
 
data_hard = pywt.threshold(data=data, value=6, mode='hard', substitute=12)
print(data_hard)
# [12. 12. 12. 12. 12.  6.  7.  8.  9. 10.] 將小于6 的值設置為12, 其余的值不變
 
data_greater = pywt.threshold(data, 6, 'greater', 12)
print(data_greater)
# [12. 12. 12. 12. 12.  6.  7.  8.  9. 10.] 將小于6 的值設置為12,大于等于閾值的值不變化
 
data_less = pywt.threshold(data, 6, 'less', 12)
print(data_less)
# [ 1.  2.  3.  4.  5.  6. 12. 12. 12. 12.] 將大于6 的值設置為12, 小于等于閾值的值不變

Python小波變換去噪怎么使用

三,在python中使用ecg心電信號進行小波去噪實驗

#-*-coding:utf-8-*-

import matplotlib.pyplot as plt
import pywt
import math
import numpy as np

#get Data
ecg=pywt.data.ecg()  #生成心電信號
index=[]
data=[]
coffs=[]

for i in range(len(ecg)-1):
    X=float(i)
    Y=float(ecg[i])
    index.append(X)
    data.append(Y)
#create wavelet object and define parameters
w=pywt.Wavelet('db8')#選用Daubechies8小波
maxlev=pywt.dwt_max_level(len(data),w.dec_len)
print("maximum level is"+str(maxlev))
threshold=0  #Threshold for filtering

#Decompose into wavelet components,to the level selected:
coffs=pywt.wavedec(data,'db8',level=maxlev) #將信號進行小波分解

for i in range(1,len(coffs)):
    coffs[i]=pywt.threshold(coffs[i],threshold*max(coeffs[i]))

datarec=pywt.waverec(coffs,'db8')#將信號進行小波重構

mintime=0
maxtime=mintime+len(data) 
print(mintime,maxtime)

plt.figure()
plt.subplot(3,1,1)
plt.plot(index[mintime:maxtime], data[mintime:maxtime])
plt.xlabel('time (s)')
plt.ylabel('microvolts (uV)')
plt.title("Raw signal")
plt.subplot(3, 1, 2)
plt.plot(index[mintime:maxtime], datarec[mintime:maxtime])
plt.xlabel('time (s)')
plt.ylabel('microvolts (uV)')
plt.title("De-noised signal using wavelet techniques")
plt.subplot(3, 1, 3)
plt.plot(index[mintime:maxtime],data[mintime:maxtime]-datarec[mintime:maxtime])
plt.xlabel('time (s)')
plt.ylabel('error (uV)')
plt.tight_layout()
plt.show()

Python小波變換去噪怎么使用

“Python小波變換去噪怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德清县| 吴桥县| 桃源县| 中超| 禹城市| 白玉县| 建水县| 乃东县| 海原县| 贞丰县| 宁陵县| 新乡市| 鄂伦春自治旗| 昌图县| 达孜县| 昌乐县| 桂东县| 博湖县| 商水县| 石景山区| 台湾省| 聊城市| 开江县| 苏州市| 三台县| 涞源县| 桐城市| 百色市| 翁源县| 丹江口市| 灵山县| 自治县| 高雄市| 合水县| 庆阳市| 桃园市| 旺苍县| 苏州市| 兰坪| 济南市| 乌鲁木齐市|