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

标题:idwt变换后的图像x轴为什么缩短

2012年07月20日 星期五 21:55

signal x

db3 = pywt.Wavelet('db3')

 

cA2,cD2,cD1 = pywt.wavedec(x,db3,'cpd',2)

x2 = pywt.idwt(cA2,cD2,'db3','sym') 

pl.plot(x,label=u'x')

pl.plot(x2,label=u'x2')

 

pl.legend()

pl.show()

得到的变换之后,x2的则变成的缩小版,横向缩短,图我贴不上来,我想实现的是对信号小波处理,并画出不同阶层分解和重构系数图像。问什么系数图像与x相比,总体轮廓没变,但是x轴压缩了呢

 

 

2012年07月20日 星期五 22:00

2012年07月21日 星期六 20:16

小波变换每次都要降低取样频率,因此小波变换之后,你只用一部分数据还原的话,数据的长度应该是变化的吧。

2012年07月22日 星期日 09:41

那要画出原始大小的图形,如果用多阶重构,图形没有达到滤波效果,而是与原图完全重合的,纯粹的恢复数据,在上面程序中,添加:

List = pywt.wavedec(x,db3,'cpd',7)

x7 = pywt.waverec(List,db3)

pl.plot(x7,label=u'x7')

并对于不同阶层的分解,重构,达到降噪的效果看不出来,反而其幅值增大了,像是被压缩了。重建函数与matlaB中wrcoef()小波重构函数输出的数据不同。是不是哪里概念理解错了呢?

2012年07月23日 星期一 16:54

http://www.pybytes.com/pywavelets/ref/idwt-inverse-discrete-wavelet-transform.html

upcoef应该可以吧

import numpy as np
import pywt
import matplotlib.pyplot as plt

s =sign

dec_data = pywt.wavedec(s,'db3',level=4)
n = len(s)
for i in range(4):
    plt.subplot(512+i)
    plt.plot(pywt.upcoef('d', dec_data[4-i], 'db3', level=i+1))
    plt.ylabel(i+1)

plt.subplot(511)
plt.plot(s)
plt.ylabel("sign")

plt.show()


 

2012年07月27日 星期五 15:32


为什么楼上用的是 plt.plot(pywt.upcoef('d', dec_data[4-i], 'db3', level=i+1))
而不是 用 dec_data[i] 显示 'd' ?

我尝试直接重构信号 结果好像都是噪声
new_signal = pywt.upcoef('d', dec_data[4-i], W_name, level=i+1, take = n) + pywt.upcoef('a', dec_data[4-i], W_name, level=i+1, take = n)

 

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

    你的回复:

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

    Zeuux © 2024

    京ICP备05028076号