2

wavethreshウェーブレット変換とパケット ウェーブレット変換を取得するためにR パッケージを使用しています。ウェーブレットベースでウェーブレット変換の係数を簡単に取得できます。ただし、ウェーブレット基底を取得することはできません。

現時点では、標準のウェーブレット フィルターを使用しています。Daubechies Least Asymmetric です。

ウェーブレット変換のコードのサンプルを次に示します。

data <- cos(1:512/(10*pi))
wave <- wd(data)

およびウェーブレット パケットの変換の場合:

wave <- wp(Temperature[,1])
coeffs <- MaNoVe(wave.th)
l <- print(coeffs)

私はウェーブレットパケット変換のためにいくつかのことを試しました:

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)

しかし、基礎全体ではなく、いくつかの関数しか得られません。さらに、これらの機能が必要な機能かどうかもわかりません。

パッケージ ドキュメントへのリンクは次のとおりです: wavethresh.pdf。しかし、他のRパッケージで私の問題に対する解決策があれば、それも完璧です;)

助けてくれてありがとう!

4

2 に答える 2

5

記録のために: 私は wavethresh の主な作成者であり、wmtsa も優れたパッケージだと思います。

最初に wavethresh 用に作成したコードが機能するはずです。長さ 512 の任意のデータセットで試してみたところ (あなたのデータにアクセスできないためです!)、問題なく動作するようで、215 要素を含む「basis」配列でした。関数 plot(coeffs) も時間-周波数プロットを生成したため、時間-周波数平面の特定のタイリングを確認できます。

あなたの2つの投稿を参照してください。関数 `drawwp.default' は、実際に 2 番目の投稿で述べたことを正確に実行します。特定のウェーブレット パケットの画像 (または値のベクトル) を取得するには、すべてゼロと 1 つの 1 を含むシーケンスを反転します。これは一般的によく知られたトリックであり、1993 年から Wavelet (関数 draw()) で wavethresh に含まれています。

draw と drawwp.default がしないことは、翻訳を正しく行うことです。素敵な画像が得られるように、変換の適切な値を選択しようとします。そのため、 drawwp.default の引数にはスケール レベル、「振動パラメータの数」が含まれていますが、変換値は含まれていません。ただし、ウェーブレットを軸の上または下に変換するのは簡単で、その方法は想定している境界条件によって異なります。

(少なくとも私には) 元の投稿に 1 つのタイプミスがあるように見えました。4 行目のオブジェクトwave' in line 3 becomeswave.th' ですが、これを無視して同じオブジェクトと見なしました。この議論には関係のないしきい値処理を行っていた可能性があると思います:)

ごきげんよう、ガイ・ネイソン

于 2013-06-18T14:31:08.787 に答える
1

私の問題は解決しました!wmtsaの代わりにパッケージを使用しましたwavethresh

reconstruct基底を構築するには、どちらの場合も (ウェーブレット変換とパケット ウェーブレット変換)、特定のウェーブレットに対してメソッドを使用できますw0これには、 に設定されているものを除いて、すべての係数が に設定されてい1ます。

basis <- matrix(NA,2^lvl,2^lvl)
compt <- 1
w$data$s9 <- 0
for (i in 1:lvl)
    w$data[[i]]<-rep(0,2^(lvl-i))
for (i in 1:lvl){
    for (j in 1:2^(lvl-i)){
            w$data[[i]][j] <- 1
        basis[,compt] <- reconstruct(b)
        w$data[[i]][j] <- 0
        compt <- compt + 1
    }
}

lvlウェーブレットの解像度レベルです。

ウェーブレット パケットの変換についても同じことができます。

于 2013-02-27T11:38:39.070 に答える