真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python小波變換去噪

一,小波去噪原理:

站在用戶的角度思考問題,與客戶深入溝通,找到京口網(wǎng)站設(shè)計(jì)與京口網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站建設(shè)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋京口地區(qū)。

信號產(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是替換值

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)

import matplotlib.pyplot as plt

import pywt

# Get data:

ecg = pywt.data.ecg() # 生成心電信號

index = []

data = []

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.04 # Threshold for filtering

# Decompose into wavelet components, to the level selected:

coeffs = pywt.wavedec(data, 'db8', level=maxlev) # 將信號進(jìn)行小波分解

plt.figure()

for i in range(1, len(coeffs)):

coeffs[i] = pywt.threshold(coeffs[i], threshold*max(coeffs[i])) # 將噪聲濾波

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

mintime = 0無錫人流多少錢 http://www.bhnfkyy.com/

maxtime = mintime + len(data) + 1

plt.figure()

plt.subplot(2, 1, 1)

plt.plot(index[mintime:maxtime], data[mintime:maxtime])

plt.xlabel('time (s)')

plt.ylabel('microvolts (uV)')

plt.title("Raw signal")

plt.subplot(2, 1, 2)

plt.plot(index[mintime:maxtime], datarec[mintime:maxtime-1])

plt.xlabel('time (s)')

plt.ylabel('microvolts (uV)')

plt.title("De-noised signal using wavelet techniques")

plt.tight_layout()

plt.show()

運(yùn)行結(jié)果如下:

python小波變換去噪


新聞名稱:python小波變換去噪
本文網(wǎng)址:http://weahome.cn/article/goeooj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部