Python和科学计算认证群组  - 讨论区

标题:自定义小波函数问题(请版主帮忙看看)

2012年02月01日 星期三 17:36

import pywt, math

 

c = math.sqrt(2)/2

dec_lo, dec_hi, rec_lo, rec_hi = [c, c], [-c, c], [c, c], [c, -c]

filter_bank = [dec_lo, dec_hi, rec_lo, rec_hi]

myWavelet = pywt.Wavelet(name="myHaarWavelet", filter_bank=filter_bank)

class HaarFilterBank(object):

#        @property

        def filter_bank(self):

           c = math.sqrt(2)/2

           dec_lo, dec_hi, rec_lo, rec_hi = [c, c], [-c, c], [c, c], [c, -c]

           return [dec_lo, dec_hi, rec_lo, rec_hi]        

        filter_bank = HaarFilterBank()

        myOtherWavelet = pywt.Wavelet(name="myHaarWavelet",       filter_bank=filter_bank)

以上实例引自: http://www.pybytes.com/pywavelets/ref/wavelets.html
想学习下自己定义个小波函数,运行出错 NameError: name 'HaarFilterBank' is not defined。
请帮助看看,谢谢, 祝春节愉快!

 

2012年02月02日 星期四 12:34

似乎是indent出错了

2012年02月02日 星期四 17:08

你指的是 myOtherWavelet = pywt.Wavelet(name="myHaarWavelet",  filter_bank=filter_bank)吗?应该没问题,只不过在发在此处的宽度不够,自动换行了。

 

 

2012年02月03日 星期五 01:35

我指的是:

filter_bank = HaarFilterBank()

可能是语法问题

2012年02月03日 星期五 20:36

还是不懂,请版主帮忙看看!

2012年02月04日 星期六 08:13

你仔细比较你的程序和那个网页中的例子:

filter_bank = HaarFilterBank()

这一行应该在HaarFilterBank类定义的外面。

2012年02月06日 星期一 16:54

import pywt, math

from numpy import sin, pi

import numpy as np

import pylab as plt

c = math.sqrt(2)/2

dec_lo, dec_hi, rec_lo, rec_hi = [c, c], [-c, c], [c, c], [c, -c]

filter_bank = [dec_lo, dec_hi, rec_lo, rec_hi]

myWavelet = pywt.Wavelet(name="myHaarWavelet", filter_bank=filter_bank)

class HaarFilterBank(object):

        @property

        def filter_bank(self):

           c = math.sqrt(2)/2

           dec_lo, dec_hi, rec_lo, rec_hi = [c, c], [-c, c], [c, c], [c, -c]

           return [dec_lo, dec_hi, rec_lo, rec_hi]            

filter_bank = HaarFilterBank()

myOtherWavelet = pywt.Wavelet(name="myHaarWavelet", filter_bank=filter_bank)

# define noised signal and use my wavelet filter

t = np.arange(-1,1,0.05)

noise = 0.05*np.random.randn(len(t))

data = sin(2*pi*t)+noise

MyHaar = .... # 请问此处如何调用自定义的小波来去除噪声

plt.figure(1).clf()

plt.plot(data,'k-.')

plt.plot(MyHaar ,'-')

此外,我发现找不到自定义的小波,不知道为什么?

ValueError: Unknown wavelet name 'myhaarwavelet', check wavelist() for the list of available builtin wavelets.

 

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号