スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

R でウェーブレット解析7

連投ですね。考えているうちに出てきたアイデアを保存する意味でもこのブログを活用しているわけです。

コンピュータ上で扱えるのは当然ながら離散量だけです。連続量を扱うことはできません。これは、コンピュータが二進数を使って作業し、電圧を変化させることで機械を作動させているからです。

さて、私が望んでいるのは連続ウェーブレット変換を計算することです。「できないといっておきながら、実際に画像をアップロードして計算結果を見せてるじゃないか」と思うかもしれませんね。

そもそもコンピュータ上での連続ウェーブレット変換とは、離散ウェーブレット変換の隙間を埋めただけのものです。⇒連続ウェーブレット変換の説明

↑のリンクでは、「オクターブ間を埋める」と表現していますが、私がこれまでに読んだ本にはオクターブという表現がほとんど現れていません。

ネット上で調べてみると、結局オクターブとは、離散ウェーブレット変換におけるレベル j のことらしいです。

Rwave の cwt 関数に用意されている引数で特徴的なものはつぎの2つです。これの意味がわかれば計算ができるはずなのですが。

  • noctave:最高レベル J
  • nvoice:レベル j とレベル j+1 の間の分割数

以前見せた仕様書は、読んでも「何いってんだろう?」と思った人が多いのではないでしょうか。(この解釈が合っていれば)「そうだったのか」と思ってもらえると期待しています。


さて、肝心のスクリプトの方針ですが、一応具体的な形が見えてきました。⇒参考:公立はこだて未来大学のレポート(PDF)

次のような機能を組み込みたいとおもいます。GUI から全部つくるわけではないので大げさかもしれませんが……

  1. 解像度を noctave, nvoice で任意に設定できる
  2. 使えるマザーウェーブレットの種類を任意に選択できる
  3. モルレーとガボールに対して細かい設定がしやすい
  4. スケーログラムの二次元プロットと三次元プロットを選択できるようにする

こんなところですね。あとは時間軸の設定とかです。テクニックとしては

  • ウェーブレット展開係数を格納する配列を用意する
  • 縦軸を周波数表現とする配列を用意する

で大丈夫です。周波数表現には例の擬似周波数を使います(実はスケールの逆数でも大丈夫)。これをひとつの R スクリプトファイルにまとめれば、Rwave パッケージの性能をフルに発揮することができると思っています。

以前テキトウに作成した freqwave関数 をちょっと勉強して、scalogram 関数という名前に変更して、いろいろコメントを入れてみました。また、ユーザが設定できるパラメータを目立たせました。拡張子は .R に変更してください。⇒scalogram 関数


コメント

LetsWave

http://www.md.ucl.ac.be/nefy/facecatlab/mouraux/letswave/letswave_main.htm
これは具体的にソフトウェアの目標になっています。

Fussyのホームページ

http://www2.starcat.ne.jp/~fussy/index.htm
連続ウェーブレット変換のアルゴリズムとCのソースファイルがあります。

scalogram 関数

周波数が256Hzまでしかグラフに表示されないのですが、もっと大きな周波数まで解析させたい場合はどうすればいいんでしょうか?

コメントの投稿















管理者にだけ表示を許可

トラックバック

この記事のトラックバックURI
http://wavelet.blog58.fc2.com/tb.php/20-4f4c2e34

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。