1. 程式人生 > >Python小波分析庫Pywavelets的一點使用心得

Python小波分析庫Pywavelets的一點使用心得

# -*- coding: utf-8 -*-  
import numpy as np
import math
import matplotlib.pyplot as plt
import pandas as pd
import datetime 
from scipy import interpolate
from pandas import DataFrame,Series

import numpy as np  
import pywt  

data = np.linspace(1, 4, 7)  

# pywt.threshold方法講解:  
#               pywt.threshold(data,value,mode ='soft',substitute = 0 )  
# data:資料集,value:閾值,mode:比較模式預設soft,substitute:替代值,預設0,float型別 #data: [ 1. 1.5 2. 2.5 3. 3.5 4. ] #output:[ 6. 6. 0. 0.5 1. 1.5 2. ] #soft 因為data中1小於2,所以使用6替換,因為data中第二個1.5小於2也被替換,2不小於2所以使用當前值減去2,,2.5大於2,所以2.5-2=0.5..... print(pywt.threshold(data, 2, 'soft',6
)) #data: [ 1. 1.5 2. 2.5 3. 3.5 4. ] #hard data中絕對值小於閾值2的替換為6,大於2的不替換 print (pywt.threshold(data, 2, 'hard',6)) #data: [ 1. 1.5 2. 2.5 3. 3.5 4. ] #data中數值小於閾值的替換為6,大於等於的不替換 print (pywt.threshold(data, 2, 'greater',6) ) print (data ) #data: [ 1. 1.5 2. 2.5 3. 3.5 4. ]
#data中數值大於閾值的,替換為6 print (pywt.threshold(data, 2, 'less',6) )
[6.  6.  0.  0.5 1.  1.5 2. ]
[6.  6.  2.  2.5 3.  3.5 4. ]
[6.  6.  2.  2.5 3.  3.5 4. ]
[1.  1.5 2.  2.5 3.  3.5 4. ]
[1.  1.5 2.  6.  6.  6.  6. ]
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import numpy as np
import matplotlib.pyplot as plt

import pywt
import pywt.data


ecg = pywt.data.ecg()

data1 = np.concatenate((np.arange(1, 400),
                        np.arange(398, 600),
                        np.arange(601, 1024)))
x = np.linspace(0.082, 2.128, num=1024)[::-1]
data2 = np.sin(40 * np.log(x)) * np.sign((np.log(x)))

mode = pywt.Modes.smooth


def plot_signal_decomp(data, w, title):
    """Decompose and plot a signal S.
    S = An + Dn + Dn-1 + ... + D1
    """
    w = pywt.Wavelet(w)#選取小波函式
    a = data
    ca = []#近似分量
    cd = []#細節分量
    for i in range(5):
        (a, d) = pywt.dwt(a, w, mode)#進行5階離散小波變換
        ca.append(a)
        cd.append(d)

    rec_a = []
    rec_d = []

    for i, coeff in enumerate(ca):
        coeff_list = [coeff, None] + [None] * i
        rec_a.append(pywt.waverec(coeff_list, w))#重構

    for i, coeff in enumerate(cd):
        coeff_list = [None, coeff] + [None] * i
        if i ==3:
            print(len(coeff))
            print(len(coeff_list))
        rec_d.append(pywt.waverec(coeff_list, w))

    fig = plt.figure()
    ax_main = fig.add_subplot(len(rec_a) + 1, 1, 1)
    ax_main.set_title(title)
    ax_main.plot(data)
    ax_main.set_xlim(0, len(data) - 1)

    for i, y in enumerate(rec_a):
        ax = fig.add_subplot(len(rec_a) + 1, 2, 3 + i * 2)
        ax.plot(y, 'r')
        ax.set_xlim(0, len(y) - 1)
        ax.set_ylabel("A%d" % (i + 1))

    for i, y in enumerate(rec_d):
        ax = fig.add_subplot(len(rec_d) + 1, 2, 4 + i * 2)
        ax.plot(y, 'g')
        ax.set_xlim(0, len(y) - 1)
        ax.set_ylabel("D%d" % (i + 1))


#plot_signal_decomp(data1, 'coif5', "DWT: Signal irregularity")
#plot_signal_decomp(data2, 'sym5',
#                   "DWT: Frequency and phase change - Symmlets5")
plot_signal_decomp(ecg, 'sym5', "DWT: Ecg sample - Symmlets5")


plt.show()
72
5

png這裡寫圖片描述

將資料序列進行小波分解,每一層分解的結果是上次分解得到的低頻訊號再分解成低頻和高頻兩個部分。如此進過N層分解後源訊號X被分解為:X = D1 + D2 + … + DN + AN 其中D1,D2,…,DN分別為第一層、第二層到等N層分解得到的高頻訊號,AN為第N層分解得到的低頻訊號。

相關推薦

Python分析Pywavelets一點使用心得

# -*- coding: utf-8 -*- import numpy as np import math import matplotlib.pyplot as plt import pandas as pd import datetime from

[Python ]變化——Pywalvets 學習筆記

相關資料 PyWavelets 官網: https://pywavelets.readthedocs.io/en/latest/ref/index.html PyWavelets 用例:https://pywavelets.readthedocs.io/en/latest/

python利用分析進行特徵提取

#利用小波分析進行特徵分析 #引數初始化 inputfile= 'C:/Users/Administrator/Desktop/demo/data/leleccum.mat' #提取自Matlab的訊號檔案 from scipy.io import loadmat #ma

Python中用分析影象的雜湊值

本文為數盟原創譯文,轉載請註明出處為數盟社群。 作者:DMITRY PETROV 過去的幾個週末,Kaggle的這個專案讓我玩得樂此不疲Avito Duplicate Ads Detection problem。這個機器學習的問題,除了結構化的資料集之外,還包括超過1

分析筆記一:產生的背景和歷史

小波分析最近在看哈工大教授冉啟文的小波分析的視頻,講的非常好,推薦給大家。這裏是第一講筆記。第一講:小波產生的背景和歷史一、“點”的概念(重要) 1、以前我們認為在一維空間,點就是一個數;在二維空間,點就是兩個數(x,y),N維空間的點 (x0,x1...xn)以此類推。 2、線性代數

分析和多尺度幾何分析

從傅立葉變換到小波變換,並不是一個完全抽象的東西,可以講得很形象。小波變換有著明確的物理意義,如果我們從它的提出時所面對的問題看起,可以整理出非常清晰的思路。 下面我就按照傅立葉-->短時傅立葉變換-->小波變換的順序,講一下為什麼會出現小波這個東西、小波究竟是怎樣的思路。 一、傅立葉變換

推薦一本適合自學的分析教材

我大約在2年前就想自學小波分析,期間也看過幾本小波分析方面的書。不過都是看到了某一章節就看不懂了。沒辦法,誰讓我水平太低呢。簡單的回憶了一下,我至少讀過這幾本小波分析方面的書: 崔錦泰 《小波分析導論》   這本書很有名,許多人都推薦。我讀到了第三章,學會了積分小波變換,

降維演算法(LASSO、PCA、聚類分析分析、線性判別分析、拉普拉斯特徵對映、區域性線性嵌入)

1、LASSO LASSO全稱least absolute shrinkage and selection operator,本身是一種迴歸方法。與常規迴歸方法不同的是,LASSO可以對通過引數縮減對引數進行選擇,從而達到降維的目的。說到LASSO,就不得不說

分析:三、二維離散變換

四、二維離散小波變換 宣告: 該文為本人對小波的理解,不保證正確性與嚴謹性。 參考: 《數字影象處理》 Gonzalez P317 1. 概述 在給定尺度函式和小波函式下,可以組合出一個二維尺度函式和三個二維小波函式: f(x, y)離散函式可

傅立葉變換和分析

無論是傅立葉變換還是小波變換,其實質都是一樣的,既:將訊號在時間域和頻率域之間相互轉換,從看似複雜的資料中找出一些直觀的資訊,再對它進行分析。由於訊號往往在頻域有比在時域更加簡單和直觀的特性,所以,大部分訊號分析的工作是在頻域中進行的。音樂——其實就是時/頻分析的一個極好

python 數據分析介紹

python 速度 變換 space 升級版本 行數 otl 子集 功能 1 引言 高效處理數據的python工具: 與外界進行交互:   讀寫各種文件格式和數據庫 準備:   對數據進行清理、修整、整合、規範化、重塑、切片切換、變形等處理以便進行分析 轉換

python 變換

pip install PyWavelets# -*- coding: utf-8 -*- import numpy as np import pywt import matplotlib.pyplot

分析:三、一維離散變換

三、一維離散小波變換 宣告: 該文為本人對小波的理解,不保證正確性與嚴謹性。 參考: 《數字影象處理》 Gonzalez P306 1.概述 在給定尺度函式和小波函式,f(n)可以展開成不同

Ubuntu16.04安裝Python的資料分析numpy,pandas,scipy,matplotlib

1. 安裝依賴庫 sudo apt-get install python-dev 2. 使用pip方式安裝 sudo pip install numpy sudo pip install scipy sudo pip install pandas sudo pi

Python數據分析之pandas,你該這麽學!No.1

可能 char 程序 官方文檔 其他 熊貓 sta true say 寫這個系列背後的故事 咦,面試系列的把基礎部分都寫完啦,哈哈答,接下來要弄啥嘞~ pandas吧 外國人開發的 翻譯成漢語叫 熊貓 厲害厲害,很接地氣 一個基於numpy的庫 幹啥的? 做數據分析用的

象學院Python入門基礎課程-五、案例2 分形樹繪製 案例分析 #怎麼用Python繪製圖形#turtle

分形樹繪製 1.0–五角星的繪製 • 案例描述 • 案例分析 • 上機實驗 • turtle庫 注意:呼叫turtle.exitonclick圖形窗口才會停在那裡!!! 向右轉60度是直走方向的右手邊右轉60度! 關於五角星的角度 則應該右拐180-36=

Python代碼_11_生成小於 n 的裴那契數列

spa nbsp body color 代碼 pre end gpo col def fib(n): a, b = 1, 1 while a < n: print(a, end=‘ ‘) a, b = b, a + b

高端實戰 Python數據分析與機器學習實戰 Numpy/Pandas/Matplotlib等常用

反向傳播 數據讀取 初識 微信 試圖 ada 安裝python 改進 貝葉斯 課程簡介:? ? 課程風格通俗易懂,真實案例實戰。精心挑選真實的數據集為案例,通過Python數據科學庫numpy,pandas,matplot結合機器學習庫scikit-learn完成一些列的

9大Python最常用的數據分析,在2018都做了哪些更新?

包括 有用 樣式 代數 scrip 小部件 很快 scipy 圖庫 1. NumPy 一般我們會將科學領域的庫作為清單打頭,NumPy是該領域的主要軟件庫之一。它旨在處理大型的多維數組和矩陣,並提供了很多高級的數學函數和方法,因此可以用它來執行各種操作。 在

python數據分析實用

src bubuko nbsp inf bsp com python 9.png .com j加vx;tanzhouyiwan或qq群813622576免費領取學習資料 加vx:tanzhouyiwan或qq群813622576免費領取學習資料python數據分析實用小