• 締切済み

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

「NUMERICAL RECIPES in C」という本でフーリエ変換を試しているのですが、うまくいきません。 変換している配列は一つだけ100であとは0のデルタ関数です 変換にはfour1.cを使っています 変換結果が1にならずに実数に100、虚数に0が入っています デルタ関数を変換するためには配列にどのような数字を入れたらいいのか教えていただけませんか? あと、sin波も変換したいのですが配列にはどのような数字を入れたらよろしいでしょうか? よかったらお答えください

みんなの回答

  • fxdoctor
  • ベストアンサー率0% (0/0)
回答No.2

なぜ変換結果が1になると考えているのでしょうか? フーリエ変換の定義から考えると、cos,sinで計算された係数の行列式に、[100,0,0,....,0]を掛けるだけですよね。 スペースがありませんので展開した式はかけませんが、答えはすべて100で正しいですよ。先頭のcos(0)=1だけが利いてきますから。 まずフーリエ変換の定義式からオイラーの式で展開して、単純な行列式に書き直すところまで自分でやってみたら良いと思います。 そうすればフーリエ変換が単純な計算式で成り立っていることが一発で理解できます。これが分かれば重複する計算を簡単にするFFTがすぐに理解できます。

  • asuncion
  • ベストアンサー率33% (2126/6286)
回答No.1

ここを見ている人が、その本を持っているとは限りません。 four1.cといわれましても、何のことだかわかりません。 どういう風に質問したらいい答えが返ってくるかを考えてみてはいかがでしょう。

関連するQ&A

  • フーリエ変換・逆変換の虚数成分って?

    フーリエ変換を用いた論文を読んでいるときに、ある3次元関数f(x,y,z)に対してフーリエ変換・逆変換を行ったとき、逆変換で求められる値は実数成分と虚数成分があり、虚数成分を無視できるという記述を見つけました。 これは対象の関数が実数成分しかもともと持ち合わせていなかったで逆変換しても虚数はゼロである、という解釈でいいのでしょうか? 正直、フーリエ変換・逆変換に関してはほとんど初心者なのですが、気になってしまっています。誰かこの疑問に答えていただけないでしょうか?

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

     プログラム言語の種類は問いません。 入力数値データを読み込み(ファイルからでも直接入力によるものでもかまいません)、 フーリエ変換を行うプログラムの基本的な考え方を教えてください(プログラムそのものは求めません。考え方を教えてください)。  しばらくの間フーリエ変換について勉強してはいるものの、まだよく理解していない状況ですし、プログラムに関してもまだまだ未熟者です。 しかし、どちらも勉強しながらこのプログラムを作ってみようと思っています。  けれども、フーリエ変換の指数関数を用いた式だと虚数を扱わなければならないし、 sin, cosを使った式だと計算量が膨大になってしまいそうで(指数関数を用いた式でもそんなに変わらないとは思いますが)、 どこから手をつければよいかまったく見当がつきません。 考え方を教えていただければ結構ですので、よろしくお願いします。

  • 離散フーリエ変換(DFT)の実数と虚数

    離散フーリエ変換を行うと実数部と虚数部が出力されるのはわかったのですが、この実数部と虚数部そのものが何であるかがわからないです。 質問は下記の二つになります。 (1)離散フーリエ変換された信号の実数部とは何で虚数部とは何なのでしょうか? (2)実数部と虚数のどちらかだけでは離散フーリエ変換にならないのでしょうか? どなたかよろしくお願いします。

  • フーリエ変換

    画像中の2段目の式(B(t)のフーリエ変換)はどのようになるでしょうか. 1段目の式はB(t)の定義を表し, 3段目の式は2段目の式がこうなってほしいなぁという私の願望です. なお, tは時刻, オメガは角周波数, iは虚数, デルタは定数とします. また, Rは虚数の実部を指す記号とします. A(オメガ)は実数関数で偶関数とします. 以前も同様の質問をしたのですが, そのときの回答者様の回答を参考に自分なりに計算した結果, 2段目の式は, A(オメガ)cos(デルタ), となりました. しかし, この2段目の式はある物理現象を表したものなのですが, その物理現象の実験結果から考えると, B(t)のフーリエ変換は画像の3段目の式になってほしいのです. やはり2段目の式はA(ω)cos(デルタ)なのでしょうか. 何かの仮定やうまい計算方法を利用すれば, 3段目の式が答えになるのでしょうか. お力を貸して頂ければ嬉しいです. 宜しくお願いします.

  • フーリエ変換後に実効値を求めるには?

    ノイズ波の位相演算するためにフーリエ変換した後で、数サイクル前との複素数引き算をしてから、その「実効値」を求めたいのですが、どの式が正解なのでしょうか?  (1) √(実数^2+虚数^2)/(FFTデータ数/2)/√2  (2) √(実数^2+虚数^2)/√2  (3) √(実数^2+虚数^2)  (4) その他? なお、これまで(1)と認識して、基本波のみで算定していたのですが、どうも実測値より小さいようなのです。 波高値/√2=実効値とは思いますが、√2が必要なかったりするのでしょうか?

  • フーリエ変換の問題について

    この問題教えてください。 Q.次の関数をフーリエ変換をせよ。(結果はデルタ関数を使う)  sin(ax) 解ける方いましたらぜひ教えてください。

  • exp(-γt)sinΩt のフーリエ変換

    f(t) = exp(-γt)sinΩt をフーリエ変換したものを図示せよ という問題があります。 一応この関数を自分なりにフーリエ変換してみたところ F(ω) = {-1 / (2i)} { 1/(iΩ-iω-γ) + 1/(iΩ+iω+γ) } となったのですが、こんな関数図示できるんでしょうか? ちなみに t の範囲は指定されていなかったのですが、減衰関数なので自分の判断で t <0 ならば f (t) = 0 としました。 F(ω)が実数や純虚数なら図示できるとは思うのですが、今回はそうではなさそうですし、 私の計算が間違っているのでしょうか? よろしくお願いいたします。

  • フーリエ変換についてのコト

    初歩的なことだとは思うんですが、、、 f(t)がフーリエ”級数”展開可能なときは、 A_0(定数) , A_n・sin(nωt + θ_n) (n=1,2,3……) の重ね合わせでf(t)を表現できますよね。 つまり、基本角周波数ωの整数倍の角周波数を持つ 正弦波の重ね合わせでf(t)を表現できますよね。 では、「フーリエ”変換”可能な関数f(t)は、 A(ω)・sin(ωt + θ) ( ωは実数全体 、A(ω)とθはωに対して定まる実数 ) の重ね合わせで表現できる。」というのは正しいですか? 正しいような気がしているのですが、どうもハッキリと明言している 本が見つからなくて、確信が持てないでいます。 また、もし正しいとするなら、以下のことは正しいですか? これも正しいような気がしているのですが、 明言している本が見つからないんです。 ----------- F(ω)をf(t)のフーリエ変換とします。、 「|F(ω)|は、f(t)を構成しているA(ω)・sin(ωt+θ)の 振幅A(ω)を表している。つまり、|F(ω)| = A(ω)」 ということでいいんでしょうか? また、「arg{F(ω)} = θ」ということでいいんでしょうか?

  • 偶関数のフーリエ変換

    なぜ偶関数の場合はフーリエ変換すると虚数成分がなくなってしまう(複素数計算を必要としない)のですか? 詳しく解説してあるサイトなんかも教えてもらえるとうれしいです。

  • デルタ関数のフーリエ変換について

    デルタ関数のフーリエ変換後の波形について質問です よく見かけるδ(t)のフーリエ変換は1になり、実部で周波数軸に平行の波形になるのはわかるのですが t=aの位置にデルタ関数のあるδ(t-a)のフーリエ変換後は波形はどうなるのでしょうか? 私の計算結果だと実部はcos関数、虚部はsin関数になるのですが ある参考書を見たところ定数になっていて、何が正しいのか不明な状況です。 詳しい方がいらっしゃいましたら、是非ご教授お願い致します。