python小波變換 wavedec2函數 各個返回值詳解


        網上找了好多文章都沒有提到這個東西,沒有說明 wavedec2 函數各個返回值究竟是什么意思

        我們先看看 wavedec2 函數的大概形式,

pywt.wavedec2(data, wavelet, mode=’symmetric’, level=None, axes=(-2, -1))
    data:    輸入的數據
    wavelet: 小波基
    level:   尺度(要變換多少層)
    return: 返回的值要注意,每一層的高頻都是包含在一個tuple中,例如三層的話返回為 [cl, (cH3, cV3, cD3), (cH2, cV2, cD2), (cH1, cV1, cD1)]

        單單這么看可能不太好懂,所以來個實例,我的目的是把11.xlsx 里面的灰度圖像進行3層的小波變換,並要提取變換后的低頻分量的系數和高頻分量的系數

實例

import pywt
import xlrd
import numpy as np

def excel2matrix(path):    # 把xlsx文件的數據變成np.array數組
    data = xlrd.open_workbook(path)
    table = data.sheets()[0]
    nrows = table.nrows  # 行數
    ncols = table.ncols  # 列數
    datamatrix = np.zeros((nrows, ncols))
    for i in range(nrows):
        rows = table.row_values(i)
        datamatrix[i,:] = rows
    return datamatrix

pathX = '11.xlsx'  # 數據路徑
x = excel2matrix(pathX)     # 我的灰度圖數據

w = 'sym4'  # 小波基類型
l = 3       # 小波變換層次
coeffs = pywt.wavedec2(x,w,l)
[cl, (cH3, cV3, cD3), (cH2, cV2, cD2), (cH1, cV1, cD1)] = coeffs

       

        說一下這個 coeffs 返回值究竟是個啥,它是個列表,里面主要有兩個東西:1)低頻系數,以數組形式存放。2)高頻系數,每一層的(水平、垂直、對角線)高頻系數構成一個 3 維元組,所以有幾層小波分解就有幾個元組

在這里插入圖片描述

       有的同學可能不知道怎么設置看到代碼運行后各變量的值 ,可以參考我這篇文章 pycharm 設置在控制台運行,顯示代碼涉及到的變量值(類似matlab的工作空間)

        使用 wavedec2 函數時注意輸入參數的匹配,盡量用名稱指定,不要用參數位置匹配,如果用參數位置匹配,一定要檢查是否每個參數都匹配正確。不然可能會出現我這篇文章里面的錯誤 ValueError: too many values to unpack (expected 4)錯誤,小波變換函數 wavedec2 使用時提示的

       

數據集鏈接

鏈接:https://pan.baidu.com/s/1kqIBkgNecK2sJl5cnwc-cg
提取碼:m600


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM