最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python小波變換去噪的原理解析

 更新時間:2021年12月31日 16:37:05   作者:sgggr  
這篇文章主要介紹了Python小波變換去噪,對于去噪效果好壞的評價,常用信號的信噪比(SNR)與估計(jì)信號同原始信號的均方根誤差(RMSE)來判斷,需要的朋友可以參考下

一.小波去噪的原理

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

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

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

二,在python中使用小波分析進(jìn)行閾值去噪聲,使用pywt.threshold函數(shù)

#coding=gbk
#使用小波分析進(jìn)行閾值去噪聲,使用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是替換值可以點(diǎn)進(jìn)函數(shù)里看,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 的值設(shè)置為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 的值設(shè)置為12, 其余的值不變
 
data_greater = pywt.threshold(data, 6, 'greater', 12)
print(data_greater)
# [12. 12. 12. 12. 12.  6.  7.  8.  9. 10.] 將小于6 的值設(shè)置為12,大于等于閾值的值不變化
 
data_less = pywt.threshold(data, 6, 'less', 12)
print(data_less)
# [ 1.  2.  3.  4.  5.  6. 12. 12. 12. 12.] 將大于6 的值設(shè)置為12, 小于等于閾值的值不變

三,在python中使用ecg心電信號進(jìn)行小波去噪實(shí)驗(yàn)

#-*-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) #將信號進(jìn)行小波分解

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

datarec=pywt.waverec(coffs,'db8')#將信號進(jìn)行小波重構(gòu)

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()

到此這篇關(guān)于Python小波變換去噪的文章就介紹到這了,更多相關(guān)Python小波去噪內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Selenium+BeautifulSoup+json獲取Script標(biāo)簽內(nèi)的json數(shù)據(jù)

    Selenium+BeautifulSoup+json獲取Script標(biāo)簽內(nèi)的json數(shù)據(jù)

    這篇文章主要介紹了Selenium+BeautifulSoup+json獲取Script標(biāo)簽內(nèi)的json數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python實(shí)現(xiàn)排序方法常見的四種

    Python實(shí)現(xiàn)排序方法常見的四種

    本文給大家分享python四種常見排序方法,每種方法通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-07-07
  • 利用Python編寫一個鬧鐘,治好你的拖延癥

    利用Python編寫一個鬧鐘,治好你的拖延癥

    起床真是令人困擾的事情,有的人根本不用定鬧鐘,但有的人提前半個小時鬧鐘都叫不醒。本文將分享利用Python編寫的鬧鐘腳本,希望能治好你的拖延癥
    2022-02-02
  • Python單元測試及unittest框架用法實(shí)例解析

    Python單元測試及unittest框架用法實(shí)例解析

    這篇文章主要介紹了Python單元測試及unittest框架用法實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • Python編程入門的一些基本知識

    Python編程入門的一些基本知識

    這篇文章主要介紹了Python編程入門的一些基本知識,包括注釋需和Shell命令使用等基本內(nèi)容,要的朋友可以參考下
    2015-05-05
  • Python內(nèi)置方法實(shí)現(xiàn)字符串的秘鑰加解密(推薦)

    Python內(nèi)置方法實(shí)現(xiàn)字符串的秘鑰加解密(推薦)

    在Python中實(shí)現(xiàn)AES算法需要借助的第三方庫Crypto,其在各個操作系統(tǒng)上的安裝方法有些許復(fù)雜,所以對于簡單的使用有點(diǎn)殺雞用牛刀的意思。這篇文章主要介紹了利用Python內(nèi)置方法實(shí)現(xiàn)字符串的秘鑰加解密,需要的朋友可以參考下
    2019-12-12
  • 基于Python檢測動態(tài)物體顏色過程解析

    基于Python檢測動態(tài)物體顏色過程解析

    這篇文章主要介紹了基于Python檢測動態(tài)物體顏色過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • 簡單的Python調(diào)度器Schedule詳解

    簡單的Python調(diào)度器Schedule詳解

    這篇文章主要介紹了簡單的Python調(diào)度器Schedule詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • 提升Python編碼能力的3個重要概念

    提升Python編碼能力的3個重要概念

    這篇文章主要給大家分享的是提升Python編碼能力的3個重要概念,圍繞提升Python編碼的相關(guān)自資料上下文管理器、類型提示、淺拷貝和深拷貝等內(nèi)容展開文章,需要的小伙伴可以參考一下
    2022-02-02
  • Pytorch:torch.diag()創(chuàng)建對角線張量方式

    Pytorch:torch.diag()創(chuàng)建對角線張量方式

    這篇文章主要介紹了Pytorch:torch.diag()創(chuàng)建對角線張量方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06

最新評論

东阳市| 岑溪市| 甘德县| 思南县| 西贡区| 信阳市| 昌乐县| 广州市| 清河县| 夏津县| 山丹县| 嵊泗县| 湖口县| 仙游县| 工布江达县| 城步| 海林市| 西青区| 西乌珠穆沁旗| 株洲县| 石景山区| 融水| 军事| 广元市| 宁阳县| 兴安盟| 抚宁县| 湟中县| 荣昌县| 青神县| 卢湾区| 陆丰市| 乐至县| 云霄县| 清水县| 阳原县| 溧水县| 宾阳县| 从江县| 元朗区| 台南市|