• ベストアンサー
  • 困ってます

離散フーリエ変換について

離散フーリエ変換によって得られた値についての質問です。 多くのサイトでその値は Σ(k=0~N-1) f(k)exp(-2πkni/N) という式から求められるとあります。 離散フーリエ変換は本来、ある周期関数が、どのくらいの振幅でどのくらいの周波数の波からできているかを調べるために行うものだと思います。 しかし上記の公式から得られるスペクトル(sqrt(Re^2+Im^2))では振幅の値は得られません。振幅を得るには刻み幅Δ(関数をサンプリングした際の幅)を乗じて Σ(k=0~N-1) f(k)exp(-2πkni/N)*Δ とすれば得られることが分かりました。 最初の公式から得られるスペクトルはなにを表しているのでしょうか?またなぜ刻み幅Δを乗じることで、振幅が求まるのでしょうか? よろしくお願いします。m(__)m

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数679
  • ありがとう数2

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

  • ベストアンサー
  • 回答No.4
  • Tacosan
  • ベストアンサー率23% (3656/15482)

パッと見だけど, Δを掛けた式で N → ∞ の極限をとると連続の Fourier 変換にならないかなぁ?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

その一言が私の求めていた答えでした!! 本当に感謝します。

その他の回答 (3)

  • 回答No.3
  • guuman
  • ベストアンサー率30% (100/331)

逆変換においてNで割るか変換においてNで割るかは流儀の違い なので好きな方を選べばよい DFTが何を洗わしているかが重要 DFTはサンプリングされた周期関数のフーリエ変換の結果であるインパルス列の係数を表す 周期関数をフーリエ変換すると周波数軸上でインパルス列となるが そのインパルス列の大きさを表すのである さらにサンプリングされているからそのインパルス列は周期を持つ

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございました。 参考になり助かりました。

  • 回答No.2
  • Meowth
  • ベストアンサー率35% (130/362)

もうすこし 正規化はどうなっているのですか。 使っているDFTの 離散フーリエ変換と逆離散フーリエ変換 の式をおしえてください。 {おそらく  フーリエ変換ではNで割らない 逆フーリエ変換ではNで割る}だとおもいますが。 ΔをかけるとかNで割るとか、 Δをかける前と後のスペクトル(sqrt(Re^2+Im^2))の 違いがみえてくると思いますが。

共感・感謝の気持ちを伝えよう!

質問者からの補足

書き込みありがとうございます。 使っている離散フーリエ変換の式は 離散フーリエ変換 Σ(k=0~N-1) f(k)exp(-2πkni/N)  離散逆フーリエ変換 (1/N)Σ(n=0~N-1) f(n)exp(2πkni/N)  です。(1/N)は逆変換の方についています。 (1/N)を逆変換ではなく、変換側につけますと、逆変換の式は Σ(n=0~N-1) f(n)exp(2πkni/N)  になると思います。 スペクトル値として振幅をえるためには、 Σ(k=0~N-1) f(k)exp(-2πkni/N)×Δ としなければなりませんでした。Δなしですと、振幅×100の値がスペクトル値(sqrt(Re^2+Im^2))としてえられました。 この100倍のスペクトル値はなにを示しているのでしょうか? また刻み幅Δを乗じることで、なぜ振幅が求まるのでしょうか? 刻み幅Δは  Δ=サンプリング領域L/サンプリング数N です。

  • 回答No.1
  • Meowth
  • ベストアンサー率35% (130/362)

Σ(k=0~N-1) f(k)exp(-2πkni/N) はなんでしょうか? Nで割らないのでしょうか 刻み幅ΔとNの関係は?

共感・感謝の気持ちを伝えよう!

質問者からの補足

書き込みありがとうございます。 Σ(k=0~N-1) f(k)exp(-2πkni/N)は離散フーリエ変換の式です。 http://ja.wikipedia.org/wiki/%E9%9B%A2%E6%95%A3%E3%83%95%E3%83%BC%E3%83%AA%E3%82%A8%E5%A4%89%E6%8F%9B (wikiでの離散フーリエ変換の式) Nで割るタイプ Σ(k=0~N-1) f(k)exp(-2πkni/N)/N http://akita-nct.jp/~yamamoto/comp/mathematica/material/fft/fourier_html/node1.html もあるようです。Δ=刻み幅=(サンプリングする領域L)/N ですから、このNで割る公式の場合はLを乗じて Σ(k=0~N-1) f(k)exp(-2πkni/N)/N×Lとし、スペクトルを計算しますと、振幅の値がスペクトルとして表示されました。 Nで割らないタイプ(Σ(k=0~N-1) f(k)exp(-2πkni/N))ですと、振幅をスペクトルとして表示させるには、Δを乗じなければなりませんでした。

関連するQ&A

  • 離散フーリエ変換のスペクトルについて

    関数f(x)=2sin(πx)をx=0~2まで等間隔1000点でサンプリングし、 離散フーリエ変換 Σ(k=0~N-1) f(k)exp(-2πkni/N) の式から、言語プログラムで計算する式をつくり、1000個の実数Reと虚数Imを得ました。 ピークはもちろん周波数πのときで、スペクトルの値が1000でした。 √(Re^2+Im^2)をスペクトル値、√なしをパワースペクトル値をいうそうですが、元の関数の振幅2とこのスペクトル値とはどのような関係があるのでしょうか? 異なる正弦波を混ぜれば、スペクトル値を見ることによって振幅の比は分かりますが、スペクトル値と振幅には式的になんらかの関係は存在するのでしょうか?  波のエネルギーは振幅の2乗になると思い、2^2=4がスペクトル値としてでる事を期待していましたが途方もなく異なる値が出てしまいました。 どうぞよろしくお願いします。

  • ある時間関数を離散フーリエ変換して得られるフーリエスペクトルの振幅値に

    ある時間関数を離散フーリエ変換して得られるフーリエスペクトルの振幅値について教えて下さい。 今想定している離散フーリエ変換の式は一般的なもので Σ(k=0~N-1) f(k)exp(-2πkni/N) を考えています。 また、離散フーリエ変換して得られるスペクトルは √(Re^2+Im^2) で計算します。 離散フーリエ変換を適用する関数を、 振幅1の直流、及び振幅1で周波数5[Hz]の正弦波とします。 (この2つの信号は別々の信号で合成されていません。) サンプリング周波数を20[Hz]とした場合、サンプリングして得られるデータ列はそれぞれ、 直流: 「1, 1, 1, 1」 正弦波: 「0, 1, 0, -1」 となると想定されます。 (正弦波をサンプリングする場合は位相が関わってきますが、今回は気にしないで下さい。) このデータ列に対して上記の離散フーリエ変換を適用した場合、 得られるフーリエスペクトルの振幅値はそれぞれ、 直流: 「4」(直流のフーリエスペクトルの振幅値値) 正弦波: 「2」(5[Hz]のフーリエスペクトルの振幅値) となります。 (データ点数は上の通り4点) ここで質問なのですが、 離散フーリエ変換して得られるスペクトルの振幅値から元の関数の振幅値を求める場合、 フーリエスペクトルをサンプリングの総データ点数で割ることは数学的に納得できます。 しかしこの例の場合、フーリエスペクトルを総データ点数で割ると、 直流: 「4 -> 1」 正弦波: 「2 -> 0.5」 となってしまい、直流は正しいのですが、正弦波の元の振幅値を正確に求めることは出来ません。 この例の場合、フーリエスペクトルの振幅値から正弦波の振幅値を正しく求めるには、 「フーリエスペクトルの振幅値*2/データ点数」 としてやらなければいけません。 上記のことに関して、なぜこのようになるのかを(2をかける理由を)教えて頂けないでしょうか。 当方、数学についてはあまり詳しくないため、簡単に説明して頂けると幸いです。

  • フーリエスペクトルの振幅について

    ある時間関数を離散フーリエ変換して得られるフーリエスペクトルの 振幅値について教えて下さい。 今想定している離散フーリエ変換の式は一般的なもので Σ(k=0~N-1) f(k)exp(-2πkni/N) を考えています。 また、離散フーリエ変換して得られるスペクトルは √(Re^2+Im^2) で計算します。 離散フーリエ変換を適用する関数を、 振幅1の直流、及び振幅1で周波数5[Hz]の正弦波とします。 (この2つの信号は別々の信号で合成されていません。) サンプリング周波数を20[Hz]とした場合、 サンプリングして得られるデータ列はそれぞれ、 直流: 「1, 1, 1, 1」 正弦波: 「0, 1, 0, -1」 となると想定されます。 (正弦波をサンプリングする場合は位相が関わってきますが、 今回は気にしないで下さい。) このデータ列に対して上記の離散フーリエ変換を適用した場合、 得られるフーリエスペクトルの振幅値はそれぞれ、 直流: 「4」(直流のフーリエスペクトルの振幅値値) 正弦波: 「2」(5[Hz]のフーリエスペクトルの振幅値) となります。 (データ点数は上の通り4点) ここで質問なのですが、 離散フーリエ変換して得られるスペクトルの振幅値から 元の関数の振幅値を求める場合、 フーリエスペクトルをサンプリングの総データ点数で割ることは 数学的に納得できます。 しかしこの例の場合、フーリエスペクトルを総データ点数で割ると、 直流: 「4 -> 1」 正弦波: 「2 -> 0.5」 となってしまい、直流は正しいのですが、 正弦波の元の振幅値を正確に求めることは出来ません。 フーリエスペクトルの振幅値から正弦波の振幅値を正しく求めるには、 「フーリエスペクトルの振幅値*2/データ点数」 としてやらなければいけません。 上記のことに関して、 なぜこのようになるのかを(2をかける理由を)教えて頂けないでしょうか。

  • 離散フーリエ変換

    今、離散フーリエ変換の値が求まっています。 これから、振幅の値を出すのは、どうしたらいいのでしょうか? 自分で調べたところ、離散フーリエ変換の値に標本化関数のフーリエ変換をかけて、サンプリングの間隔で割ればいいのでは、と考えているのですが、標本化関数というものがよくわかりません。このやり方で良いのかもわかりません。 アドバイスお願いします。

  • 離散フーリエ変換の対称定理について

    離散フーリエ変換において、 Re[X(k)]=Re[X(N-k)] Im[X(k)]=-Im[X(N-k)] |X(k)|=|X(N-k)| といった対称定理が成り立ちます。 数学的にこれらが成り立つということは、大体理解できたのですが、直感的な意味が分かりません。 僕の理解が正しいとしたら、N=128だとしたら、 N=1の極めて周期の大きな波と、N=127の極めて周期の短い波の、 振幅スペクトル(≒振幅?)が等しいということになると思うのですが、どうしても納得が行きません。 N>64の周波数をフィルターでカットした場合も、対称定理は成り立ち、N>64の周波数の波は出てくる(というか、カットしないと、エイリアシングが生じる)と思うのですが、どういうことなのでしょうか? N>64の周波数の波は、計算上は出てくるが、実際にはそのような波は存在しないのですか? あるいは、N>64の周波数同士の波で、上手く相殺されて、逆離散フーリエ変換をしたときには、影響が出ないということなのですか? また、通常のフーリエ変換では、対称定理は成り立たないと思うのですが、そのことも併せて教えて頂けたらと思います。 よろしくお願いします。

  • 離散フーリエ変換の周期とサンプリング間隔と周波数

    離散フーリエ変換で求まるスペクトルの各点の周波数について質問があります。 離散フーリエ変換で時間軸上の各点(0~T[s]でΔt刻みにN個の点を取った)を周波数軸上の各点に変換したときの周波数の換算式を調べると、 Δf=1/Tとなっていたり、Δf=1/(N*Δt) となっていました。 意味上はどちらでも良さそうな気がしたのですが、実際に計算してみると両者の式で周波数軸上の各点での周波数がずれていました。 たとえば0秒から0.1秒刻みで10点とると一周期T=0.9秒になるのですが、N*Δtで計算すると一周期1秒になってしまいます。0.9秒しか見ていないのに一秒周期の関数としてフーリエ変換していることになると思いますが、周波数間隔はどちらの式で計算すべきでしょうか?それとも用いるフーリエ変換の式によって異なるのでしょうか? 教えていただければ助かります。よろしくお願いします。

  • 離散フーリエ変換(DFT)の公式について

    離散フーリエ変換の公式は、参考書等によりますと色々な記述があります。 今回は2例の違いを教えていただきたいのです。 1)F(u)=1/NΣf(x)・・・・ 2)F(u)=Σf(x)・・・・ との式があります(両式とも詳細は省いて記述しました)。この規格化定数(1/N)がある公式1)と、ない公式2)があります。 本来の周波数スペクトル(振幅)を表しているのは1)式であると考えていますが いかがでしょうか? 公式2)を使用して算出した場合には、その値をサンプリング数で除すれば公式1)同じ結果となるのですが、なぜ公式2)が記述してあるのでしょうか?

  • 離散フーリエ変換

    フーリエ変換を計算機で扱う場合について聞きたいです。 ある関数(例えばsin(x))を離散フーリエ変換しようとして、まずxを0.1ずつ増やしながらsin(x)をサンプリングします。これを虚部を0として複素数にします。 この後、複素数のフーリエ変換を行い結果が得られます。 と、ここまでは正しいと思うのですが、 その後が分かりません。 文献などに載っているフーリエ変換後のグラフは、横軸が周波数νで、縦軸がf(ν)です。 このグラフと合うようにするには 横軸・縦軸には何をとればいいのでしょうか? 横軸が周波数って言うのは、この場合は1/0.1のことでしょうか? 教えて頂きたいです。お願いします。

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

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

  • フーリエ変換により得られる周波数スペクトルの単位

    離散フーリエ変換(デジタル信号に対して行う周波数解析)により得られる 周波数スペクトルの単位について教えて頂きたいと思い,質問させて頂きました. デジタル信号処理やフーリエ変換に関する書籍,またはホームページを調べてみますと 周波数スペクトルには ・振幅スペクトル ・位相スペクトル ・パワースペクトル ・パワースペクトル密度 というような様々な表現方法があることがわかりました. しかし,それぞれが持つ意味や単位がはっきりと書かれた書籍をみつけることができませんでした. 離散フーリエ変換の定義式やホームページを参考にして考えてみますと 周波数解析を行う対象の波形の縦軸の単位がVで,横軸の単位が秒であれば, 求められるスペクトルの単位は,以下のようになると考えております. しかし,確信がなく不安な気持ちです. ・振幅スペクトル [VまたはdB] ・位相スペクトル [rad] ・パワースペクトル [V^2またはdB] ・パワースペクトル密度 [(V^2)/Hz] もしスペクトルに関してご存知の方がいらっしゃいましたら, 教えて頂けると本当にうれしいです. 参考になるホームページや書籍等も教えて頂けると助かります. つたない文章ですが,どうぞよろしくお願い致します.