【问题标题】:Multilevel Wavelet Decomposition not working多级小波分解不起作用
【发布时间】:2023-03-16 17:45:01
【问题描述】:

我正在尝试使用 db4 小波和 5 级分解来分解给定的波。这是相同的代码:

coeffs = pywt.wavedec(yourResultA,'db4',level = 5)

但是编辑器给了我以下错误:

Level value of 5 is too high.  Maximum allowed is 0.

我不理解此错误的含义,因为级别 0 没有任何意义。 我什至尝试使用以下代码找到 db4 小波的最大可能级别:

w = pywt.Wavelet('db4')
x = pywt.dwt_max_level(len(yourResultA), w)

这里x的值是15所以,我猜它可以计算15个级别。我的代码中到底发生了哪里的错误?

【问题讨论】:

    标签: python dwt pywavelets


    【解决方案1】:

    如果您阅读pywt.dwt_max_level() 上的文档,您会发现最大级别取决于数据的长度。会不会是这个问题?

    文档:https://pywavelets.readthedocs.io/en/0.2.2/ref/dwt-discrete-wavelet-transform.html#maximum-decomposition-level-dwt-max-level

    【讨论】:

      【解决方案2】:

      正在分解的波形文件是立体声格式,因此您要么转换为单声道格式,要么将轴设置为 0。

      你可以使用:

      rate, data = scipy.io.wavfile.read('wavfile.wav')
      data = data[:, 0]
      

      然后传递你的数据

      coeffs = pywt.wavedec(yourResultA,'db4',level = 5)
      

      或:

      将轴参数设置为0

      coeffs = pywt.wavedec(yourResultA,'db4',level = 5, axis = 0)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-24
        • 2014-06-03
        • 2018-09-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多