首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何改变pywt中的膨胀和平移系数

如何改变pywt中的膨胀和平移系数
EN

Stack Overflow用户
提问于 2022-03-07 07:08:28
回答 1查看 156关注 0票数 0

我对pywt和小波分析很陌生。我现在面临着几个问题,我希望有人能帮助我。

首先,我想更改my_wavelet中的展开(D)和平移(x),但我不知道如何准确地完成它。如果有人举个例子,我将非常感激。

第二,我可以在数组s的边缘添加零吗?由于值的输出cA和cD为7,而输入s为13,或者有什么方法可以避免缩小大小?

第三,上面公式中的C_P,D是否与pywt.dwt函数的cA输出相同?我仍然不明白为什么公式中只有一个输出,但是pywt.dwt给了两个输出?

代码语言:javascript
复制
s = [1,2,3,7,8,9,5,1,1,0,1]
my_filter_bank = ( [1,1], [-1,1], [1,1], [-1,1] )
my_wavelet = pywt.Wavelet('haar', filter_bank = my_filter_bank)
cA, cD = pywt.dwt(s, my_wavelet)

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-10 03:26:03

我想你把连续小波变换和离散小波变换混为一谈。您提供的公式是CWT的公式,但是在Python中尝试计算的是DWT。

First,我想更改my_wavelet中的展开(D)和平移(x),但我不知道如何准确地完成它。如果有人举个例子,我将非常感激。

您不必这样做,至少如果您计划对信号应用DWT,那么DWT将使用单个级别(使用dwt)或多个级别(使用wavedec)来分解信号。把每个层次看作是与小波的尺度相关的,也就是它有多大。因此,你的小波的膨胀和转换已经被“照顾”了。

第二个,我可以在数组的边缘添加零吗?由于值的输出cA和cD为7,而输入s为13,或者有什么方法可以避免缩小大小?

cA和cD的大小被定义为这里

系数数组的长度取决于所选模式。对于除分期以外的所有模式: len(cA) == len(cD) ==地板(len(Data)+ wavelet.dec_len - 1) /2 对于分期模式(“per”): len(cA) == len(cD) == ceil(len(data) / 2)

事实上,cA和cD的大小与输入信号s不同,这一点不应该打扰您。当然,您可以在信号的边缘添加零点,但这只会导致从零填充信号中计算系数。

第三,C_P,D在公式上是否与cA输出的pywt.dwt函数相同?我仍然不明白为什么公式中只有一个输出,但是pywt.dwt给了两个输出?

不,他们不是一回事。C_P,D在您的公式中是一个给定尺度和位置的小波系数,而cA和cD则对应于详细的和近似的系数。

最后一点:我个人认为很难理解像你这样的小阵列的小波变换。我建议分析一些例子数据,例如,席比的心电图:

代码语言:javascript
复制
import pywt
import matplotlib.pyplot as plt
from scipy.misc import electrocardiogram

s = electrocardiogram()
plt.plot(s)
plt.title('INPUT SIGNAL')

代码语言:javascript
复制
my_wavelet = pywt.Wavelet('db2')
cA, cD = pywt.dwt(s, my_wavelet) 
plt.plot(cD)
plt.title('DETAILED COEFF.')

代码语言:javascript
复制
plt.plot(cA)
plt.title('APPROXIMATION COEFF.')

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71377507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档