首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >python小波变换 wavedec2函数 各个返回值详解「建议收藏」

python小波变换 wavedec2函数 各个返回值详解「建议收藏」

作者头像
全栈程序员站长
发布2022-09-06 15:46:31
发布2022-09-06 15:46:31
2.3K0
举报

大家好,又见面了,我是你们的朋友全栈君。

网上找了好多文章都没有提到这个东西,没有说明 wavedec2 函数各个返回值究竟是什么意思

我们先看看 wavedec2 函数的大概形式,

代码语言:javascript
复制
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层的小波变换,并要提取变换后的低频分量的系数和高频分量的系数

实例

代码语言:javascript
复制
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

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/155036.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实例
  • 数据集链接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档