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) 按名称绑定参数,就没错了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中南自动化学院至渝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值