• 締切済み

三次元のフーリエ変換

C言語で 三次元のフーリエ変換を作成したいんですが,拙者が GNU Scientific Libraryを使いたいんで、どうやって実装をするんですか?とにかく お願い致します.

みんなの回答

回答No.1

GSLしばりの条件でやるのであれば、次のサイトが参考になります。 大浦先生のサイト: http://www.kurims.kyoto-u.ac.jp/~ooura/profile-j.html ↓ 数値計算ソフトのリンクをたどっていく ↓ 多次元FFTの計算のしかた: http://www.kurims.kyoto-u.ac.jp/~ooura/fftman/ftmn3_1.html#sec3_1

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

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

    c言語で画像を入力して2次元フーリエ変換を行い,逆変換をしたいのですが全然うまくいきません. どなたか教えていただけませんか? いろいろ調べたのですが,プログラム初心者なのでどう書いていけばいいのかわからず辛いです... サンプルのコードも教えていただけると助かります. 画像サイズは256×256画素程度です.

  • フーリエ変換すると次元が変わる

    http://okawa-denshi.jp/techdoc/2-1-1CRkato.htm ここのページの式2-1-7に書かれてあるように RCの直列回路に流れる電流は時間の指数関数で表されます。 http://okawa-denshi.jp/techdoc/images/equ2-1-7.gif 一方で、この式をフーリエ変換して電流の周波数特性を求めたいと考えています。 http://www.crl.nitech.ac.jp/~ida/education/etc/FT/FT.pdf ここのページの5ページ目に指数関数のフーリエ変換の公式が書かれているのですが、 t < 0 において電流がゼロだとしてフーリエ変換をかけると i(ω) = (V/R)(1/ω_c)/(1-iω/ω_c) になります。 ここでω_c = 1/RC を表します。 式2-1-7の電流の次元は[A]なのに対して、 フーリエ変換後の電流の次元は[A sec]となってしまいます。 これはフーリエ変換において時間で積分しており、(1/ω_c)という係数がついているためです。 [A]の次元での周波数特性の式を求めたいのですが、 どうすれば良いでしょうか?

  • 2次元フーリエ変換

    ある画像f(x,y)をθ回転させたものを2次元フーリエ変換すると、それはf(x,y)の2次元フーリエ変換F(u,v)の結果をθ回転したものになるみたいなのですが、どうしてそうなるのかわかりません。 拙い説明で申し訳ありませんがよろしくお願いいたします。

  • 2次元フーリエ変換の実際について

    「画像などを対象にする2次元フーリエ変換は、縦方向の1次元フーリエ変換と横方向の1次元フーリエ変換を組み合わせることにより計算できます」 との解説があります。下に示すような2次元の値で計算する場合、具体的にどのようにすればよいのでしょうか? (9×9ピクセルの2次元画像でa1~a9はピクセル値とする)           a1 a2 a3            a4 a5 a6            a7 a8 a9 計算方法 1) 横方向(→方向)の1次元フーリエ変換をおこなう          →a1 a2 a3          →a4 a5 a6          →a7 a8 a9 2) 縦方向(→方向)の1次元フーリエ変換をおこなう          →a1 a4 a7          →a2 a5 a8          →a3 a6 a9 これはできるのですが、「縦方向の1次元フーリエ変換と横方向の1次元フーリエ変換を組み合わせる」の意味がわかりません。 横方向や縦方向の1次元フーリエ変換した値をどのようにすればいいのでしょうか? 具体的に教えてください。

  • 多次元高速フーリエ変換について

    高速フーリエ変換fftによって、計算量のオーダーが n^2 からnlogn まで落とせるんですよね? それで、3次元のフーリエ変換って、 1次元のフーリエ変換を3回やれば n^2*nlogn=n^3lognのオーダーでできると思うのですが、 これ以上速いオーダーではできませんか?

  • 2次元離散フーリエ変換について

    2次元離散フーリエ変換の2次元FFTを用いて、縦256×横256 縦1024×横1024の場合の画像を大きさを求めてもらいたいです。 2次元フーリエ変換について調べたのですが理解することが出来ませんでした。 お手数ですが回答お願いします

  • 多次元フーリエ変換のプログラムについて

    ある物理量に関して物理空間(x,y,z,t)と周波数・波数空間(kx,ky,kz,ω)の変換ができるプログラムを探しています。多次元フーリエ変換(この場合は4次元フーリエ変換?)のプログラムになると思いますが、ネット上などで検索できるでしょうか。1次元の場合は手元にありますが、それを変形して作成することができるかな?と思っていますが。それよりもこのようなプログラムはちゃんとしたものが1つあればよいわけですから、しっかりした既存のものを使いたいです。変換のアルゴリズムはFFTになると思いますが、そうでなくてもいいのです。ブラックボックス的なことでよいのですが。 以上、よろしくお願いします。

  • 画像の離散フーリエ変換

    現在画像の離散フーリエ変換をしており、 「c言語で学ぶ実践画像処理」という本には、 水平方向に1次元の離散フーリエ変換をした後、垂直方向に1次元の離散フーリエ変換をすれば良いと書いてあるのですが、 疑問があります。 最初に実部用の配列と虚部用の配列を用意します。 原画像を水平方向に離散フーリエ変換します。 そうすると、初めに用意した実部、虚部用の配列に値が入ります。 ここからさらに垂直方向の離散フーリエ変換をすると、 実部の垂直方向の離散フーリエ変換から実部と虚部が出て、 虚部の垂直方向の離散フーリエ変換から実部と虚部が出て、最終的には実部用の配列が2個、虚部用の配列が2個必要で、 ここからどうやって離散逆フーリエ変換や、振幅スペクトルを求められるのだろうかと混乱しております。 水平方向に1次元の離散フーリエ変換をした後、垂直方向に1次元の離散フーリエ変換はどのようにすれば良いのでしょうか? よろしくお願いいたします。

  • 画像の2次元フーリエ変換の結果の表示の仕方について

    現在、C言語で画像に2次元離散フーリエ変換を施し、高速フーリエ変換と比較しろという課題に取り組んでいます。 以下の様なプロセスで2次元フーリエ離散変換を施し、結果を表示しようと思っています。 ・画像を読み込み、float型配列に入れる。 (画像は一番左上が原点とします。256×256のサイズです) ・上記のfloat型配列の、第1象限と第3象限、第2象限と第4象限を各々入れ替える。 ・各行ごと、つまり、f[0][0]~f[0][255]、f[1][0]~f[1][255]、と順々)に1次元離散フーリエ変換を施す。 ・上記のフーリエ変換の結果を各列ごと、つまり、f[0][0]~f[255][0],f[1][1]~f[255][1]という風に1次元離散フーリエ変換を施す。 ・フーリエ変換の結果の、第1象限と第3象限、第2象限と第4象限を各々入れ替える。 ・f[][]のパワースペクトル(実部の2乗+虚部の2乗の、自然対数をとったもの)を計算する。 ・そのパワースペクトルとをfloat型なので、char型に置き換えて画像として出力する。 正規化等の少し細かいところは省略しました。 結果として、参考書等で見かけるもの(真ん中が直流成分で、含まれる周波数を濃淡で表したもの)になればいいのですが、上記のプロセスで大丈夫ですか? パワースペクトルを計算した後に、何らかの移動の処理(つまり、画像の真ん中が直流成分となるような処理)を施す必要がなく、 フーリエ変換の計算の前と後に象限の入れ替えを施すだけで、直流成分が出力画像の真ん中に来るということですか? フーリエ変換の前と後で、象限を入れ替えるだけで周波数空間では原点が真ん中になることが納得できないです。 ややこしい質問ですが、「プロセスのここが間違ってるよ」等を教えていただけると助かります。特にパワースペクトルの部分等。 よろしくお願いします。

  • 4次元フーリエ変換による音波の解析について

    4次元フーリエ変換f(x,y,z,t) → F(kx,ky,kz,ω)についての質問です. 現在,独学で,FFTを用いて音波f(x,y,z,t)を解析しようとしています. ここで,4次元フーリエ変換 f(x,y,z,t) → F(kx,ky,kz,ω) を行った場合,Fは一体どのような意味を持つ値なのでしょうか. また,この4次元フーリエ変換を用いて,波数kと周波数ωの関係を表すにはどうすれば良いでしょうか. どうかご回答よろしくお願いいたします.