【问题标题】:Wavelet function: rewrite matlab wavelet code to R小波函数:将matlab小波代码重写为R
【发布时间】:2018-11-13 06:24:13
【问题描述】:

我有 matlab 代码:

wt = modwt(datavalue,'db1',7);

我想将此代码转换为 R,我已通过以下方式完成:

wt = modwt(datavalue,wf = 'db2',n.levels = 7)

但这一直给我错误

Error in modwt(datavalue, wf = "db2", n.levels = 7) : 
  unused argument (wf = "db2")

如果我这样写代码

wt = modwt(datavalue,'db2',7)

它给了我以下错误

Error in wt.filter(filter, modwt = TRUE) : Invalid filter name.

我正在使用小波函数,可能我无法理解 R 中的小波函数。 这是将代码转换为R的权利还是R中是否有任何其他包比小波包更好

【问题讨论】:

  • 能否提供一个示例数据集和您正在使用的包?
  • 数据值是一个 302537*1 的数据框,如下所示。 84.33630371 99.51580048 103.2020034 74.68540192 133.9490051 93.40519714 70.85410309
  • @DJV 我正在使用小波包
  • 如果可能,请使用 dput()

标签: r matlab wavelet


【解决方案1】:

我对 MATLAB 函数 modwt 并不十分熟悉。但是,您可以尝试 R 包waveslim 和函数modwt。 它看起来一样,请参阅documentation

require(waveslim)

data(ibm)     
ibm.returns <- diff(log(ibm))
ibmrWave <- modwt(ibm.returns, wf = "la8", n.levels = 4)

【讨论】:

  • 他们没有列出可以使用的小波滤波器。默认情况下,他们提到了 wf = "la8"。我希望使用 db1 或 db2 小波滤波器。但是当我放同样的东西时,它会出错。在 R 中是否有任何替代方法?
  • 在waveslim 和wavelets 两个包中,您只能使用wt.filter 过滤器。使用 ?wt.filters 获取完整列表(当前支持的字符串来自四类小波变换滤波器之一:Daubechies、Least Asymetric、Best Localized 和 Coiflet)。
猜你喜欢
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-28
相关资源
最近更新 更多