• ベストアンサー

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

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

質問者が選んだベストアンサー

  • ベストアンサー
  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.2

 各次元について1次元フーリエ変換をやるだけです。  y,z,tを固定するとf(x,y,z,t)はxだけの関数。これをxについて1次元フーリエ変換する。全てのy,z,tの組み合わせについて計算します。その結果をF1(kx,y,z,t)とします。  kx,z,tを固定するとF1(kx,y,z,t)はyだけの関数。これをyについて1次元フーリエ変換する。全てのkx,z,tの組み合わせについて計算します。その結果をF2(kx,ky,z,t)とします。  …以下同様。  これで旨く行くのは exp(-i(x kx + y ky + z kz + tω)) = exp(-i(x kx)) exp(-i(y ky))exp(-i(z kz)) exp(-i(tω)) だから。

その他の回答 (1)

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

http://www.kurims.kyoto-u.ac.jp/~ooura/fftman/ みたいなもの? っていうか、 「ネット上などで検索できるでしょうか。」 検索してみればいいじゃん。

関連するQ&A

  • 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と周波数ωの関係を表すにはどうすれば良いでしょうか. どうかご回答よろしくお願いいたします.

  • 高次フーリエ変換のプログラム

    お尋ねします。 1次元のデータ(例えば時系列)をフーリエ変換して周波数による系列に置き換えるプログラム(その逆も)は良く見かけます。FFTなどですね。周波数空間と時間空間の行き来に対応します。 一方、2次元、3次元に対応した高次フーリエ変換のプログラムがダウンロードできないでしょうか。3次元ということは空間ということになり、波数空間と実空間の行き来を可能にするものです。高次のFFTとなるでしょうか。入力としては3次元の空間離散化されたデータA(x,y,z)で、変換されるとA(k1,k2,k3)(離散化)のデータです。その逆もあり、というものです。 スペクトル法などによる数値計算を考えていますが、変換の部分は出来合いのものを使いたいと思っています。よろしくお願いします。

  • 2次元データの複素フーリエ変換するコードの作成

    数値計算等の2次元や3次元の空間データ(実数)をFFTによって複素フーリエ変換する実際のプログラム化についてお尋ねします。プログラムの実装ということなので実際的な質問で長文になっています。すみません。 まず、手持ちに1次元のFFTプログラムがあるということを前提とします(逆フーリエ変換すると、元の実数の系列が出ることは確認済のコード)。そして2次元配列の実数のデータがあるとします。この2次元のデータを2次元の複素フーリエ成分に変換することが目的です。(私の分野では波数空間への展開ということになり、複素数ですから位相情報も含まれることになります。) 例えば、x,y方向に16x16のデータあるとすると、 do j=1,16 ここでjを固定してi:1~16の実数データについて1次元のFFTをかける。 このとき、FFTにかける16個の実数データを複素数の実部に入れて、虚部はゼロとする。 FFTの出力も複素数となっている。 ここで出てくる複素フーリエ変換の結果は実部・虚部で前半(0~7)であり、後半(8~15)はその対称とか点対称(符号が逆)とかになっている(虚部をゼロとしているから)。それを複素数の2次元配列として保存する。 enddo 次いで、 do i=1,16 iを固定してj方向にFFTをかける。このとき、FFTに放り込むデータは上記の複素フーリエ変換の出力結果である2次元データを使う。具体的には複素数の2次元データをj方向の1次元の複素数配列にコピーしてFFTをかけて、その出力結果を新たな2次元配列の複素数に保存する。 enddo この結果、得られた2次元の複素数のデータが、私の所望のデータである、ということです。 式が指し示すとおりのことをすればいいのだ、ということに尽きるのだろうと思いますが、アルゴリズム的にアンバランスのように見えてこれでいいのかなと思えてしまいます。最初に虚部をゼロにするというようなこととかです。そのため確信が持てません。また、結果を見てもわかりにくい面があります。 このような考え方で実装するということいいのでしょうか。全く間違っているでしょうか。もしその場合、考え方の間違いを指摘して頂けると助かりますが(根本的な間違いだったら指摘しようがないということにもなりますが。) また、例えば、始めから実数の2次元配列をすぐに2次元複素数の実部に入れて、虚部をゼロとしてそこからコード方がすっきりするのかなと思いますが。 この辺が確定すると、3次元は同じことということになります。 サンプルコードがネットに出ているという面もありますが、自分でやる方が組み込みやすいのでお尋ねしました。 長文で申し訳ありませんが、よろしくお願いします。

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

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

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

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

  • C言語プログラムの離散フーリエ変換

    C言語プログラムの離散フーリエ変換について教えてください。「C言語による画像再構成の基礎」という本のプログラムをもとに二次元画像をDFT(通常の離散フーリエ変換)→InveresFFT(逆高速フーリエ変換)すると画像が左右反転、上下反転してしまいます。DFT→InverseDFTやFFT→InverseFFTだとそのようにはなりません。通常のDFTとFFTのアルゴリズムの違いからしかたがないのでしょうか?それともプログラムの変更で修正できるのでしょうか?どうしてもDFT→InverseFFTでがぞうをもとに戻したいのです。 サンプルページ http://www.iryokagaku.co.jp/frame/03-honwosagasu/370/370-dl.html P4-14fourier2d1d.c (離散フーリエ変換DFT)   P4-15fft.c(高速フーリエ変換)プログラムです

  • FFTやフーリエ変換のプログラム

    FFTやフーリエ変換のプログラムの書き方をご存知の方がいればおしえていただけないでしょうか?よろしくお願いいたします。

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

    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]の次元での周波数特性の式を求めたいのですが、 どうすれば良いでしょうか?

  • 空間フーリエ変換のグラフ化ソフトについて 

    こんにちは現在光学を学んでいる大学院生です。 現在実験やシミュレーションによって得たデータを空間フーリエ変換を行いたいと考えております。 一次元の結果 横軸(x座標) 縦軸(信号強度) を 一次元の 横軸(空間周波数or波数) 縦軸(信号強度)となるものです。 Originやmatlab等でフーリエ変換を行うことはできるのですが、空間フーリエ変換を行うことはできないようなのです(企業に質問いたしました。)そこで現在解析ソフトを探しております。 画像解析における二次元空間フーリエ変換のソフトはいくらかあるのですが、 そういたソフトだと、結果が二次元マップで示されてしまい、空間周波数を調べることができません。 どなたか、良いソフトをご存知でしたら教えていただけますでしょうか? よろしくお願いいたします。

  • フーリエ変換やFFTのプログラム

    C言語で書かれているFFTやフーリエ変換のプログラムのあるお勧めのサイトがあればおしえていただけないでしょうか? よろしくお願いいたします。