从小波变换中获取小波基

Pop*_*Pop 2 r wavelet

我一直在使用 R 包wavethresh来获得小波变换和分组小波变换。我可以很容易地在小波基础上得到小波变换的系数。但是,我无法获得小波基础。

我目前正在使用标准小波滤波器:Daubechies Least Asymmetric。

这是我的小波变换代码示例:

data <- cos(1:512/(10*pi))
wave <- wd(data)
Run Code Online (Sandbox Code Playgroud)

和小波包变换:

wave <- wp(Temperature[,1])
coeffs <- MaNoVe(wave.th)
l <- print(coeffs)
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一些小波包变换的东西:

basis <- matrix(NA,length(l$level),512)
for (i in 1:length(l$level))
    basis[i,] <- drawwp.default(l$level[i],l$pkt[i],resolution=512)
Run Code Online (Sandbox Code Playgroud)

但我只得到几个函数而不是整个基础。此外,我不确定这些功能是我想要的。

这是包文档的链接:wavethresh.pdf。但是,如果您在其他 R 包中解决了我的问题,那也太完美了;)

非常感谢你的帮助 !

小智 5

只是为了记录:我是 wavethresh 的主要作者,我也认为 wmtsa 是一个很好的包。

您最初为 wavethresh 编写的代码应该可以工作。我只是在长度为 512 的任意数据集上进行了尝试(因为我无法访问您的数据!),它似乎工作正常,并且包含 215 个元素的“基础”数组。函数 plot(coeffs) 还生成了一个时频图,因此人们可以看到时频平面的特定平铺。

参考你的两个帖子。函数`drawwp.default' 实际上正是你在第二篇文章中提到的。为了获得特定小波包的图片(或值向量),将包含全零和一的序列反转。这是一个众所周知的技巧,自 1993 年以来一直在 wavethresh 中用于小波(在函数 draw() 中)。

draw 和 drawwp.default 不会做的是正确翻译。它会尝试选择一个不错的翻译值,以便您获得漂亮的图片。这就是为什么 drawwp.default 的参数包含比例级别、“振荡次数参数”而不是平移值的原因。但是,将小波沿轴向上或向下平移很简单,并且如何执行取决于您假设的边界条件。

您的原始帖子中确实出现了(至少对我而言)一个错字。第wave' in line 3 becomes4 行中的对象wave.th'。但是,我忽略了这一点并将它们视为同一个对象。我猜你可能已经做了一些与本次讨论无关的阈值处理:)

一切顺利,盖伊·内森