ValueError_ too many values to unpack (expected 4)錯誤,小波變換函數 wavedec2 使用時提示的


        錯誤信息還算簡單,解包成太多的值,意思就是說你要賦值的變量多了,你的 values 少了

結論

        你要賦值的變量多了,你的 values 少了,這是根本原因,就比如 a, b, c, d = 20, 5, 5 就會報錯

我的出錯代碼

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)  
a = np.mean(x)
print(a)

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

        這個代碼報錯

ValueError: too many values to unpack (expected 4)

       

原因

        調用 pywt.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)]

        為什么會錯呢,因為我直接使用了參數位置匹配,但是中間有一個 mode=’symmetric’ 我沒有指定,自然錯了所以換成 coeffs = pywt.wavedec2(data=x, wavelet=w, level=l) 按名稱綁定參數,就沒錯了


免責聲明!

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



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