「夫を成功」へ導く妻の秘訣 座談会

CorC++用のウェーブレット変換を実装したライブラリを探しています。
日本語、英語については問いませんが、できればフリーのものがほしいと思っています。
自分でも探してみたのですが探し方が悪いのか見つけられませんでした。
お手数ですがよろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

日本語ですと,書籍「最新ウェーブレット実践講座 入門と応用」のサンプルプログラムが以下のサイトで配布されています.


http://www.cmagazine.jp/books/wavelet/index.html

大概の科学計算用ライブラリには名前にdwtが入った関数が用意されています.
例えば,GNU Scientific Library などは比較的有名でしょう.
http://www.gnu.org/software/gsl/manual/html_node …

Waveletのソフトウェアの有名なリンク集です.
http://www.amara.com/current/wavesoft.html

他の回答者が挙げられていた「blitzwave」は機能は少なそうですが,アルゴリズムが最新なので高速な処理が可能かと思います.

参考URL:http://www.amara.com/current/wavesoft.html
    • good
    • 0

Googleで"wavelet library"で検索するとトップに出てくる


http://blitzwave.sourceforge.net/
これは違うのでしょうか?

使ったことないですが
    • good
    • 0
この回答へのお礼

ありがとうございます。

同名のblitzと勘違いして読み飛ばしていました。
さっそく試してみます。

お礼日時:2007/01/16 09:38

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q画像を二次元フーリエ変換

c言語で画像を入力して2次元フーリエ変換を行い,逆変換をしたいのですが全然うまくいきません.

どなたか教えていただけませんか?

いろいろ調べたのですが,プログラム初心者なのでどう書いていけばいいのかわからず辛いです...

サンプルのコードも教えていただけると助かります.

画像サイズは256×256画素程度です.

Aベストアンサー

検索すればソースコードは見つかると思います。
例えば
http://hooktail.org/computer/index.php?2%BC%A1%B8%B5%A5%D5%A1%BC%A5%EA%A5%A8%CA%D1%B4%B9
とか

プログラムを作るのが目的ではなく、計算するだけならImageJで画像処理ができます。
http://rsbweb.nih.gov/ij/
メニューにFFTがありますのでそれを使ってみてください。数値での入出力もできます。
フーリエ変換の結果は普通は複素数になるのですが、このソフトは絶対値をとっているはずで、普通はこれで十分ななずです。

複素数の結果が欲しいのなら
http://www.r-project.org/
https://www.scilab.org/
http://www.gnu.org/software/octave/
などで計算できます。

画像から数値データへの変換は上記のImageJで可能です。

QMATLABによるWavelet解析について

卒業研究において、心拍情報をウェーブレット解析することを考えています。
それに伴い、文献・Web等でがんばってきましたが、数学の苦手な自分の頭では
やはりまかないきれませんでした…
具体的にどのようなウェーブレットの種類を利用し、どのようにそのデータを
観察・評価を行えば良いのか分かりません。

MATLAB7.0のWaveletToolboxを利用しています。
解析対象は一般的な心拍計から得た心拍情報(R-R間隔をmsで計測したもの)です。
目的としましては、その心拍情報を解析することで、
周波数ごとに解析することでわかるといわれている
被験者の意識状態(緊張状態か、リラックス状態かなど)を
時間情報と共にみたいと考えております。

何とか解析を試みようとオンラインヘルプとその例題を読みつつ
WaveletToolboxを触っています。使い方まではなんとか分かるようになったのです。
が、具体的な解析作業ということとなると、
どのようなウェーブレットの種類を選択し、最適なレベルはいくつなのか、
そしてなにより、解析結果として現れる図をどのように見ればよいか具体的に分かりません。

一次元離散ウェーブレット変換をしたときに
Approximationが低周波成分に対応し、Detailが高周波に対応しているということですので、
自分が見たいのはたとえば0.1Hz等ですのでApproximationを評価すれば良いと思っています。
そのような場合に特定の周波数がどの位置(時間)であらわれているかを観測するには
どうすればよいのでしょうか。

本来ならばおそらく、文献を読んで分かることなのかもしれませんが、
幾分頭が悪く、何とか自分でも分かる文献はないかともがきましたが
藁をもつかむ思いで質問させていただきました。
どなたか分かる方、MATLABというよりWavelet解析について分かる方もふくめ
どうぞよろしくお願いいたします。

卒業研究において、心拍情報をウェーブレット解析することを考えています。
それに伴い、文献・Web等でがんばってきましたが、数学の苦手な自分の頭では
やはりまかないきれませんでした…
具体的にどのようなウェーブレットの種類を利用し、どのようにそのデータを
観察・評価を行えば良いのか分かりません。

MATLAB7.0のWaveletToolboxを利用しています。
解析対象は一般的な心拍計から得た心拍情報(R-R間隔をmsで計測したもの)です。
目的としましては、その心拍情報を解析することで、
周波数ごと...続きを読む

Aベストアンサー

信号を計測した時間と山の数を数えれば周波数は出ます。
断面のピーク値の個数を調べて、山は数えられる、
計測時間は、サンプリングの時間間隔を考えればよい。

Qウェーブレット解析ツール!

ガボールの連続ウェーブレット変換を使用したいのですが、
オススメのソフトがありましたら教えてください。

MATLABのWavelet Toolboxは高くて購入できません。
5万円以下で購入できるソフトorフリーソフトは無いでしょうか!?
宜しくお願いします。

Aベストアンサー

>そこで、オススメされるソフトは10MHzの信号を解析信号として
>入力できるのでしょうか?
>また、CWTを用いて50Hzから1MHzまでの周波数帯域を解析したいの
>ですが可能でしょうか?

10MHzですか・・・。データの長さ次第ですが、相当容量が大きそうですね。

50Hzから1MHzまでの解析は、理論的にも現実的にも不可能ではありません。
が、実質、難しい場合が多いです。

特に、低周波の解析はCWTは時間がかかります。
Scilabのソフトはそこまで考えてつくられていないと思うので、苦労する事になりそうです。
もっとも、MATLABのWavelet Toolboxも、そこまで多くのデータは扱えませんが。

低周波部分はサンプリング周波数を落としてから、解析するのが現実的です。

QFFT・PSDの縦軸は何を意味するのでしょう?

加速度計測の結果について、PSD(パワースペクトラムデンシティ)をかけた場合、その縦軸の意味を教えてください。
また、FFTとPSDはどういう違いが有るのでしょうか?
これまでは、周波数の分布のみに着目していました。
どなたか、わかりやすく教えてください。
よろしくお願いします。

Aベストアンサー

一般に加速度センサー信号の出力は電圧です。

縦軸は係数をかけていない状態では#1さんがおっしゃるように計測した電圧の値を示しています。

よって、縦軸に物理的な意味を持たせるのには、電圧と加速度の間の換算係数をかけてやる必要があります。

フーリエ解析は時刻歴波形は正弦波の組み合わせで構成されるという仮定の下で計算を行っています。FFTの結果は横軸で示される周波数の正弦波の振幅を示しています。
電圧と加速度の換算係数をかけてやると、FFTの縦軸はその周波数成分を持つ加速度振幅を示しています。

ここで1つ問題があります。FFTはサンプリング周波数により分解能が変わります。FFTによる周波数分析は正確にいうと、離散値なので、ジャストの周波数のもをだけを表しているのではなく、ある範囲の周波数範囲にある成分を表しています。
このため分解能が変わると周波数範囲が変わり、同じ波形を分析しても振幅が変わります。
これでは分解能が異なるデータ同士は比較できないなどの問題が生じます。
そのため、周波数幅で振幅を基準化して、1Hzあたりの振幅としたものがPSDです。
PSDならサンプリング周波数が異なるデータ同士の比較ができます。

要はフーリエ振幅(FFT)はサンプリング周波数・分解能により変わる値であり、PSDはそのようなことのないように周波数幅で基準化した値という差があります。

なお、2乗表示したものをパワースペクトルと呼び、それを周波数で基準化したものをPSDと呼びますが、PSDは表示方法によって2乗した状態のあたいを表示(パワー表示)するときと、2乗した値の平方根を計算して表示することがありますので、使用する際には縦軸の表示方法については要注意です。

一般に加速度センサー信号の出力は電圧です。

縦軸は係数をかけていない状態では#1さんがおっしゃるように計測した電圧の値を示しています。

よって、縦軸に物理的な意味を持たせるのには、電圧と加速度の間の換算係数をかけてやる必要があります。

フーリエ解析は時刻歴波形は正弦波の組み合わせで構成されるという仮定の下で計算を行っています。FFTの結果は横軸で示される周波数の正弦波の振幅を示しています。
電圧と加速度の換算係数をかけてやると、FFTの縦軸はその周波数成分を持つ加速...続きを読む

Q原波形のノイズ除去方法(FFT、逆FFT)

始めに、僕は数値解析等にはかなりの未熟者です。
今、微量な電流を拾ってそれを200倍に増幅した原波形があるのですが、それには多くのノイズがはいってしまい見にくいんです。それでそのノイズを除去したいのです。
今考えているのはFFTをかけてでてきた周波数を逆FFTを行いノイズを除去しようと考えています。もし他に簡単にノイズを除去できる方法があれば教えていただきたいのですが。
今、自分のなりの考えで行うとしてもその処理の仕方がまったくわかりません。どのソフトを使うのが最適なのかがわかりません。こういう場合で使いやすいソフトってありますか?

わかりにくい説明ではありますが、分かる人がいましたらアドバイスください。

Aベストアンサー

No.2です。

画面全体がノイズだらけになるとしたらデータの処理だけで
ノイズを除去する事は難しいかもしれません。
データの再取得が可能であるならば再取得してください。
その際、あらかじめアナログ回路部分でノイズを除去しておいてデータを取得するようにしてください。
データのサンプリング時にエイリアシングが発生して信号にかぶさった場合には後処理でノイズを除去する事は不可能です。


フィルタについてはアナログ回路で実現するもの、AD変換後にデジタル回路で実現するもの、データ取得後にソフトウエアで行うものなどが有ります。

>多少信号のでている時間、大きさに誤差が出てきてしまう
とのことですが、フィルタを通した場合一般的には時間遅れが生じます。
どれだけ遅れるかはフィルタが決まれば決定されるのでその分補正すれば良いです。
大きさについては適切に設計されていれば大きくずれる事はありませんが
フィルタの種類によっては通過域でゲインが変化しないものと多少の変化があるものとが有るので用途によって使い分けします。

フィルタ処理の具体例を挙げます。
No.3さんの計算と同じものです。
/* FIRフィルタのサンプル */
#define DATA_SZ1000 /* データの個数 */
#define KN2
#define KEISU_SZ(2*KN+1) /* フィルタの係数の個数 */

float input[DATA_SZ]; /* 入力データ 適当な方法で初期化すること */
float output[DATA_SZ]; /* 出力データ */
float keisu[KEISU_SZ] = {1.0/KEISU_SZ} ; /* 移動平均フィルタの場合 */

void fir( float *in, float *out, float *ks ){
int i,j ;
float x;

  for( i=KN ; i<DATA_SZ-KN ; i++ )
    {
      x= 0 ;
      for( j=-KN : j<=KN ; j++ )
      {
         x += in[i+j] * ks[j+KN] ;
      }
      out[i] = x ;
   }
} /* インデントを付けるため全角スペースを使用しています */

もっと具体的には
入力データ d0,d1,d2,d3,d4,d5,d6,d7
係数データ k0,k1,k2,k3,k4
出力データ ______x2______  上下をそれぞれ掛け算したものの合計
x2 = ( d0*k0 + d1*k1 + d2*k2 + d3*k3 + d4*k4 )

出力のx3を求める場合は入力データを1個左にシフトします。
入力データ d1,d2,d3,d4,d5,d6,d7
係数データ k0,k1,k2,k3,k4
出力データ ______x3______ 
x3 = ( d1*k0 + d2*k1 + d3*k2 + d4*k3 + d5*k4 )

これから分かるように x0,x1 を求めるにはデータが足りません。
どこかから(例えばd0で置き換える)データを持ってくるか、無いものとするしかありません。

係数の数を増やせばより高性能なフィルタとすることが出来ます。
係数を決める、つまりはフィルタを設計する方法の説明はここでは難しいです。
次数がそれほど大きくなけれはエクセルでも計算できます。

No.2です。

画面全体がノイズだらけになるとしたらデータの処理だけで
ノイズを除去する事は難しいかもしれません。
データの再取得が可能であるならば再取得してください。
その際、あらかじめアナログ回路部分でノイズを除去しておいてデータを取得するようにしてください。
データのサンプリング時にエイリアシングが発生して信号にかぶさった場合には後処理でノイズを除去する事は不可能です。


フィルタについてはアナログ回路で実現するもの、AD変換後にデジタル回路で実現するもの、データ取得...続きを読む

QFFTとパワースペクトルの違いについて教えてください。

FFTとパワースペクトルの違いについて教えてください。
勉強不足で申し訳ありません。よろしくお願いします。

Aベストアンサー

信号をFFTで出したスペクトルというのは、
単にある信号をフーリエ展開した係数をプロットしたものに過ぎません。
ですので、位相によっては値がプラスにもマイナスにもなることがあります。

これに対してパワースペクトルというのは、信ある信号について
ある周波数における信号強度そのものをプロットしたものです。
ですので、位相にかかわらずかならず値がプラスになります。

確かFFTスペクトルを2乗したものがパワースペクトルになったと思います。
間違ってるかもしれないので、一応教科書も調べてみてください。

Q離散ウェーブレット変換(Daubechies 20)について

Wavelet変換にはベルギーの数学者Ingrid Daubechiesによって証明された
離散ウェーブレット変換というのがあるというのはわかったのですが,
自分が読んだ文献にDaubechies 20と書いてありました.

「20」という数字が何を指しているのかわからなかったので
いろいろ検索してみましたが,答えがみつかりません.
どなたか知っていらっしゃる方いらっしゃいましたら
教えていただけないでしょうか.

Aベストアンサー

20はDaubechie数列の番号と関係があります。
http://laputa.cs.shinshu-u.ac.jp/~yizawa/InfSys1/advanced/daubechies/
で、その数列の定義が書いてあります。
数列の番号がNで、
D20はDaubechie(2N)の略となり

Daubechie数列のN=10番目の
係数を使ったDaubechie20形式の係数を使った変換方法とうい意味です。

日本語のサイトの方を読んでから英語の方の係数の表を見るだけで
80%はわかったことになるんじゃないかなとおもいますよ。



N=10の時の係数は
http://en.wikipedia.org/wiki/Daubechies_wavelet
に乗っています。

参考URL:http://laputa.cs.shinshu-u.ac.jp/~yizawa/InfSys1/advanced/daubechies/

Q連続ウェーブレット変換、スケールパラメータ(a)の上限?

連続ウェーブレット変換(CWT)を研究で使用したいのですが、スケールパラメータ(a)の上限について分かりません。有限データをCWTする場合は、データ長によりスケールパラメータの上限が制約されるとのことですが、実際にはどのような値になるのでしょうか?

(データ長が大きい程、低周波まで解析できるのでスケールパラメータの上限が大きくなるというイメージは分かります。)

(スケールパラメータの下限はサンプリング定理から、サンプリング周波数の1/2だという事は分かるのですが、上限は具体的にどのような値になるのでしょうか?)

Aベストアンサー

一応上限は,ウェーブレットがデータ長を超えない範囲まで,という事になるかと思います.

実際の値は,マザーウェーブレットや実装手段によって異なってくるので,言いにくいです.

再構成をしない場合には,スケールパラメーターを大きくすると,計算に時間がかかるので,大きなパラメーターを指定する必要はありません.

Qパワースペクトルとは?

パワースペクトルについて説明してくださいと先生に言われました。
全くわからない人に説明するので端的にわかりやすく説明したいのですが誰かできる人はいませんか?ちなみにぼくも詳しいことは全然わかりません。
本などを見ても式があったりしてそれをまた理解することが出来ません。
なんかイメージがわくような方法はないですかね?

Aベストアンサー

スペクトルとは、独立な成分それぞれについての強さをグラフにしたものです。
光の場合、光の種類を色で分類する事ができます。光といっても、その中に青はどれくらい、オレンジはどれくらいとそれぞれの色に応じて強さがあります。
光をそれぞれに分ける方法は、たとえばプリズムがあって、光をプリズムに通すといろいろな色にわかれてみえます。

ニュートンはプリズムを使った実験で有名です。一つ目のプリズムで光を分光し、赤と青の光を残して他の光を遮り、赤と青を二つ目のプリズムやレンズで一つにまとめました。その後でもう一度プリズムを通すと、いったんまとめたのにやはり赤と青しかでてこないのです。これから光の色の独立性(赤や青は、混ざらないものとして独立に扱って良い、ということ)がわかります。

このように色にはそれぞれを別々に扱ってもよいので、色ごとに物事を考えると分かりやすくなります。この色ごとについての強度を「光のスペクトル」、といいます。
強度はふつう「時間当たりに光りが運ぶエネルギー」(パワー)で表すので、この時は「パワースペクトル」です。

こんなふうに物事を自然な「成分(光の時は色)」にわけて考えた物がスペクトルです。詳しくは座標とフーリエ成分の関係について(フーリエ変換について)勉強するといいと思います(電磁場の実空間の振動とフーリエ空間上での振動の対応として)。

スペクトルとは、独立な成分それぞれについての強さをグラフにしたものです。
光の場合、光の種類を色で分類する事ができます。光といっても、その中に青はどれくらい、オレンジはどれくらいとそれぞれの色に応じて強さがあります。
光をそれぞれに分ける方法は、たとえばプリズムがあって、光をプリズムに通すといろいろな色にわかれてみえます。

ニュートンはプリズムを使った実験で有名です。一つ目のプリズムで光を分光し、赤と青の光を残して他の光を遮り、赤と青を二つ目のプリズムやレンズで一つにま...続きを読む

Qcout と cerrの違い

こんにちわ。
どうも初歩的な質問だと思うのですが、教えてください。

C++で、cerrとcoutの違いは何なのでしょうか?
どちらも同じように出力できますし。
自分でエラー表示を出力させたいような時にcerrを使えばよいのでしょうか?

使い分ける必要がいまいち分かりません。
お暇なときにでもお願いします。

Aベストアンサー

cerr:標準エラー出力 =C言語では stderr
cout:標準出力 =C言語では stdout

どちらもコンソールへの出力ですが、違いはハンドルが違うことです。
このため、リダイレクトやパイプのやり方が変わります。
http://www-or.amp.i.kyoto-u.ac.jp/algo-eng/db/stdinout.html

この違いを利用すると、通常の出力を標準出力に出力しエラーのみエラー出力に
しておくことで、リダイレクトやパイプを利用しているときでも、エラーは
コンソールに出力されるので便利になります。

尚、Windows系では、標準エラー出力へのリダイレクトは
abc 2> route.txt
のような書式になります。(#2さんの書式はWindows系では使えません)
http://www.monyo.com/technical/windows/04.html

参考URL:http://www-or.amp.i.kyoto-u.ac.jp/algo-eng/db/stdinout.html,http://www.monyo.com/technical/windows/04.html

cerr:標準エラー出力 =C言語では stderr
cout:標準出力 =C言語では stdout

どちらもコンソールへの出力ですが、違いはハンドルが違うことです。
このため、リダイレクトやパイプのやり方が変わります。
http://www-or.amp.i.kyoto-u.ac.jp/algo-eng/db/stdinout.html

この違いを利用すると、通常の出力を標準出力に出力しエラーのみエラー出力に
しておくことで、リダイレクトやパイプを利用しているときでも、エラーは
コンソールに出力されるので便利になります。

尚、Windows系では、標...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング