1

我想在时间序列上运行 Haar 小波变换:

k<-c(4,6,10,12,8,6,5,5)

我用这段代码完成这项工作(我正在使用Wavethresh包)

ywd<-wd(k,filter.number=2,family="DaubExPhase")
c<-accessC(ywd,level=2)
c

输出是:

7.639474 15.884519 9.356473 6.717514

我没有理由期待趋势或平均值部分

我所期望的是

在此处输入图像描述

我的代码有什么问题,如何在 R 中进行 Haar 小波变换

4

2 回答 2

5

在包wavelets中,您可以使用函数dwt(离散波变换)和filter设置为的参数进行 Haar 小波变换"haar"

library(wavelets)
k <- c(4,6,10,12,8,6,5,5)
w <- dwt(k, filter="haar")

dwt对象是相当复杂的 S4 对象,所以我无法解释它的每个部分的含义(我自己对小波一无所知),我建议您阅读?dwt,但您要查找的内容似乎包含在 slot V

w@V[[1]]
          [,1]
[1,]  7.071068
[2,] 15.556349
[3,]  9.899495
[4,]  7.071068

以下是对象包含的所有信息,以供参考:

An object of class "dwt"
Slot "W":
$W1
          [,1]
[1,]  1.414214
[2,]  1.414214
[3,] -1.414214
[4,]  0.000000

$W2
     [,1]
[1,]    6
[2,]   -2

$W3
          [,1]
[1,] -2.828427


Slot "V":
$V1
          [,1]
[1,]  7.071068
[2,] 15.556349
[3,]  9.899495
[4,]  7.071068

$V2
     [,1]
[1,]   16
[2,]   12

$V3
         [,1]
[1,] 19.79899


Slot "filter":
Filter Class: Daubechies
Name: HAAR
Length: 2
Level: 1
Wavelet Coefficients: 7.0711e-01 -7.0711e-01
Scaling Coefficients: 7.0711e-01 7.0711e-01


Slot "level":
[1] 3

Slot "n.boundary":
[1] 0 0 0

Slot "boundary":
[1] "periodic"

Slot "series":
     [,1]
[1,]    4
[2,]    6
[3,]   10
[4,]   12
[5,]    8
[6,]    6
[7,]    5
[8,]    5

Slot "class.X":
[1] "numeric"

Slot "attr.X":
list()

Slot "aligned":
[1] FALSE

Slot "coe":
[1] FALSE
于 2013-10-30T09:04:04.867 回答