• ベストアンサー

DFTの周期性の証明

私はf(n)の周期性の証明をしようとしました。私が本を参考にして使った定義式をそのまま書きます。 [定義1] 離散フーリエ変換は,f(n)(n=0,1,・・・,N-1)をサンプルデータとしたときそのDFTは F(k)=Σ[N-1<n<0]f(n)exp(-j*2πnk/N) と表すことができる。(k=0,1,・・・,N-1) [定義2] 離散フーリエ逆変換は f(m)=1/NΣ[N-1<k<0]F(k)exp(j*2πmk/N) と定義される。ここでのmは(m=0,1,・・・,N-1)である。 私は定義式2を使って、mをn+rNと置き換えて(r:任意の整数、N:サンプル数) f(n+rN)=Σ[N-1<k<0]F(k)exp(j*2π(n+rN)k/N) =f(n) という証明をしました。 ここで分からないことがあります。 IDFTの定義式中のf(m)のmと証明で使ったn+rNは対応しています。 定義2では、m=0,1,・・・,N-1となっています。 なので、n+rN=0,1,・・・,N-1ということになります。 しかし、定義1では、n=0,1,・・・・,N-1としています。 よって、定義に矛盾してしまいます。 式自体は間違っていないと思うので、間違っていると考えられるのは定義だと思います。 どのように定義を変えたらいいのかアドバイスください。

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

  • ベストアンサー
回答No.6

いくつかレスがついていたので、きっとそのうち解決するだろうと 思いながら見ていたら、なかなか解決しないようですね。 guumanさんは、離散フーリエ変換に対して逆離散フーリエ変換を施すと 元のデータが得られ、かつそのデータに周期性がある、 ということを証明されています。 stomachmanさんは、離散フーリエ変換に対して逆離散フーリエ変換を施すと 元のデータが得られることは既知の事実として、 三角関数に変換した上で周期性を証明しています。 utudes2007さんが#1の補足でされた証明は、 わざわざ三角関数に置き換えずに指数関数のままで 周期性を証明しています。 私は、どの方法でもいいと思います。 でも、utudes2007さんの疑問は、そこではないわけですね。 疑問が解けない最大の原因は、離散フーリエ変換の意味を、 頭の中でイメージできていないことだと思います。 似た事例を別サイトで回答しましたので、その例で説明したいと思います。 f(t) = -t/T + 1/2 をフーリエ級数展開するとどうなるか、という例です。 (たぶん離散フーリエ変換よりこちらのほうが 直感的に理解しやすいと思いますので) フーリエ級数展開を以下のように定義します。 f(t) は周期 T の周期関数であり、 n>0 において、a[n] = (2/T) ∫[0~T] f(t) cos(2πnt/T) dt n>0 において、b[n] = (2/T) ∫[0~T] f(t) sin(2πnt/T) dt n=0 において、a[n] = a[0] = (1/T) ∫[0~T] f(t) dt とすると、f(t) のフーリエ級数展開は、 f(t) = a[0] + Σ[n=1~∞] a[n] cos(2πnt/T) + Σ[n=1~∞] b[n] sin(2πnt/T) 実際にフーリエ係数を求めると、 n>0 において、a[n] = 0 n>0 において、b[n] = 1/(πn) n=0 において、a[n] = 0 となりますので、フーリエ級数展開は、 f(t) = Σ[n=1~∞] 1/(πn) sin(2πnt/T) となります。 (utudes2007さんなら自力で計算できると思いますが、 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1311841808 には導出過程も書いてあります。) さて、f1(t) = -t/T + 1/2 のグラフと、 f2(t) = Σ[n=1~∞] 1/(πn) sin(2πnt/T) のグラフを描いてみます。 (両方とも定義域は -∞~+∞ とします) すると、f1(t) のグラフはただの直線ですが、 f2(t) のグラフは、f1(t) のグラフのうちの t=0~T の範囲を、 周期 T で前後に繰り返した波形になります。 2つのグラフの違いの原因は、フーリエ級数展開の定義で、 「f(t) は周期 T の周期関数である」とされているところにあります。 フーリエ係数を求めるときに 0 から T の範囲で積分していますので、 上記のフーリエ級数展開は、 f(t) = -t/T + 1/2(定義域は -∞~+∞) のフーリエ級数展開ではなく、 f(t) = -t/T + 1/2(定義域は 0 ~ T) ただし、0 ~ T の範囲の外では、f(t + nT) = f(t) (n は整数)により定義する のフーリエ級数展開になります。 実は、離散フーリエ変換でも、f(n) は周期関数として定義されています。 そのことは Wikipedia にもこっそり書かれています。 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 の中の、「畳み込み定理と相互相関定理」のところに、 「ここで y は 次のように循環するとする: y(-j) = y(n-j)」とあります。 そして、離散フーリエ変換では、F(k) も周期関数になります。 これは、例えばサンプリング周波数を 1kHz としたとき、 sin 2πft と sin 2π(f+1000)t をサンプリングすると、 同じ波形にしか見えない、ということを表しています。

utudes2007
質問者

お礼

f(n)について周期関数であると定義できるんですね。 おっしゃるように離散フーリエ変換について正しくイメージできてませんでした。 少し離散フーリエ変換について分かってきた気がします。 とても分かりやすい説明ありがとうございました。

その他の回答 (5)

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

θ=nk/N, h=rkとおけば exp(j*2π(n+rN)k/N) = exp(2πj (θ+h)) そして、(DFTをやる方なら当然ご存知の筈だけれども) exp(2πjθ) = cos(2πθ) + j sin(2πθ) ですから、hが整数のとき exp(2πj (θ+h)) = exp(2πjθ) です。 だから、 f(n+rN) =Σ[N-1≧k≧0]F(k)exp(j*2π(n+rN)k/N) = Σ[N-1≧k≧0]F(k)exp(j*2πnk/N) = f(n)

utudes2007
質問者

お礼

とても分かりやすいです、ありがとうございました。

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

No3は間違っている直して補足に書け 仕事は丁寧にしなければならない

utudes2007
質問者

お礼

力不足で分からないことばかりだったのですが、ありがとうございました。

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

No2補足証明は間違っている直して再度補足に書け

utudes2007
質問者

補足

Nを自然数とし整数nについてF(n)を複素数とし整数nについてF(n+N)=F(n)とし整数kについて f(k):=Σ[0≦n<N]・F(n)・exp(j・2・π・n・k/N)/N とする. 整数nについて F(n)=Σ[0≦k<N]・f(k)・exp(-j・2・π・n・k/N) である。 [証明] Σ[0≦k<N]・f(k)・exp(-j・2・π・n・k/N) =Σ[0≦k<N]・Σ[0≦m<N]・F(m)・exp(j・2・π・m・k/N)/N・exp(-j・2・π・n・k/N) =Σ[0≦k<N]・Σ[0≦m<N]・F(m)・exp(j・2・π・(m-n)・k/N)/N n=mのとき Σ[0≦k<N]・exp(j・2・π・(m-n)・k/N)=N (m-n))/Nが非整数のとき Σ[0≦k<N]・exp(j・2・π・(m-n))・k/N) =(1-exp(j・2・π・(m-n))・N/N))/(1-exp(j・2・π・(m-n))/N)) =(1-1)/(1-exp(j・2・π・(m-n))/N)) =0 だから(等比級数の和の公式を利用) よって =Σ[0≦m<N]・F(m) =F(n)

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

[定理1] Nを自然数とし整数nについてf(n)を複素数とし整数nについてf(n+N)=f(n)とし整数kについて F(k):=Σ[0≦n<N]・f(n)・exp(-j・2・π・n・k/N) とする このとき整数nについて f(n)=Σ[0≦k<N]・F(k)・exp(j・2・π・n・k/N)/N である。 証明: Σ[0≦k<N]・F(k)・exp(j・2・π・n・k/N)/N =Σ[0≦k<N]・Σ[0≦m<N]・f(m)・exp(-j・2・π・m・k/N)・exp(j・2・π・n・k/N)/N =Σ[0≦k<N]・Σ[0≦m<N]・f(m)・exp(j・2・π・(n-m)・k/N)/N =Σ[0≦m<N]・f(m)/N・Σ[0≦k<N]・exp(j・2・π・(n-m)・k/N) =f(n) なぜならば n=mのとき Σ[0≦k<N]・exp(j・2・π・(n-m)・k/N)=N (n-m)/Nが非整数のとき Σ[0≦k<N]・exp(j・2・π・(n-m)・k/N) =(1-exp(j・2・π・(n-m)・N/N))/(1-exp(j・2・π・(n-m)/N)) =(1-1)/(1-exp(j・2・π・(n-m)/N)) =0 だから(等比級数の和の公式を利用) 定理2の証明を同様にして補足に書け

utudes2007
質問者

補足

[定理2] Nを自然数とし整数nについてF(n)を複素数とし整数nについてF(n+N)=F(n)とし整数kについて f(k):=Σ[0≦n<N]・F(n)・exp(j・2・π・n・k/N)/N とする このとき整数nについて F(n)=Σ[0≦k<N]・f(k)・exp(-j・2・π・n・k/N) である。 [証明] Σ[0≦k<N]・f(k)・exp(-j・2・π・n・k/N) 仮定より =Σ[0≦k<N]・Σ[0≦n<N]・F(n)・exp(j・2・π・n・k/N)/N・exp(-j・2・π・n・k/N) =Σ[0≦k<N]・Σ[0≦n<N]・F(n)/N Σ[0≦k<N]=Nより =F(n) 前回の証明などの意見を聞かせてください

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

[定義1] 離散フーリエ変換は,f(n)(n=0,1,・・・,N-1)をサンプルデータとしたときそのDFTは F(k)=Σ[N-1<n<0]f(n)exp(-j*2πnk/N) と表すことができる。(k=0,1,・・・,N-1) [定義2] 離散フーリエ逆変換は f(m)=1/NΣ[N-1<k<0]F(k)exp(j*2πmk/N) と定義される。ここでのmは(m=0,1,・・・,N-1)である。 はコピーミスなのか原文がまちがっているのか分からないが正確には [定義1] 離散フーリエ変換は,f(n)(n=0,1,・・・,N-1)をサンプルデータとしたときそのDFTは F(k)=Σ[-N<n≦0]f(n)exp(-j*2πnk/N) と表すことができる。(k=0,1,・・・,N-1) [定義2] 離散フーリエ逆変換は f(m)=1/NΣ[-N<k≦0]F(k)exp(j*2πmk/N) と定義される。ここでのmは(m=0,1,・・・,N-1)である。 のつもりで書いたものだろう つまらないことにこだわらないようにするため 私が定理を与えよう [定理1] Nを自然数とし整数nについてf(n)を複素数とし整数nについてf(n+N)=f(n)とし整数kについて F(k):=Σ[0≦n<N]・f(n)・exp(-j・2・π・n・k/N) とする このとき 整数kについて F(k+N)=F(k) であり 整数nについて f(n)=Σ[0≦k<N]・F(k)・exp(j・2・π・n・k/N)/N である。 [定理2] Nを自然数とし整数nについてF(n)を複素数とし整数nについてF(n+N)=F(n)とし整数kについて f(k):=Σ[0≦n<N]・F(n)・exp(j・2・π・n・k/N)/N とする このとき整数kについて f(k+N)=f(k) であり 整数nについて F(n)=Σ[0≦k<N]・f(k)・exp(-j・2・π・n・k/N) である。 定理1、定理2について不適当な表現があればその正確な表現を補足に書き 定理1、定理2の証明を補足に書け

utudes2007
質問者

補足

[定義1] 離散フーリエ変換は,f(n)(n=0,1,・・・,N-1)をサンプルデータとしたときそのDFTは F(k)=Σ[0≦n≦N-1]f(n)exp(-j*2πnk/N) と表すことができる。(k=0,1,・・・,N-1) [定義2] 離散フーリエ逆変換は f(m)=1/NΣ[0≦k≦N-1]F(k)exp(j*2πmk/N) と定義される。ここでのmは(m=0,1,・・・,N-1)である。 [定理1] 仮定よりF(k+N)は次のように表すことができる F(k+N)=Σ[0≦n≦N-1]f(n)exp(-j*2πn(k+N)/N) =Σ[0≦n≦N-1]f(n)exp(-j*2πnk/N)*exp(-j*2πnN/N) exp(-j*2πnN/N)=1より =Σ[0≦n≦N-1]f(n)exp(-j*2πnk/N) 定義1より =F(k) よってF(k+N)=F(k) [定理2] 仮定より f(k+N)=1/NΣ[0≦k≦N-1]F(k)exp(j*2πn(k+N)/N) =1/NΣ[0≦k≦N-1]F(k)exp(j*2πnk/N)*exp(j*2πnN/N) exp(-j*2πnN/N)=1より =1/NΣ[0≦k≦N-1]F(k)exp(j*2πnk/N 定義2より =f(k) 定理1のf(n)と定理2のF(n)の導き方が分からなかったです。 また、この証明で訂正や付け足すことがあれば教えてください。

関連するQ&A

  • DFTの周期性について

    信号f(n)のDFTをF(k)としたとき、 f(n)=f(n+rN) という式が成立します。 (r:任意の整数、Nサンプリング数) IDFTの定義式を使って証明できると思うのですが、定義式中のnは(n=0,1,・・・・・,N-1)となっています。 そのため、([n+rN]=0,1,・・・・・N-1)と定義されてしまいます。 その結果、定義で述べている(n=0,1,・・・・・,N-1)が成立せず、その範囲を飛び越えてしまいます。 何か考え方で足りないところがあれば教えてほしいです。

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

    離散フーリエ変換(DFT)について。 次の有限長N=4のディジタル信号の離散フーリエ変換(DFT)の周波数スペクトルを求めよ。[F[0],F[1],F[2],F[3]]=[-1,1,-1,2] について。 算出した所、 DFTは F[0]=1 F[1]=j F[2]=-5 F[3]=-jと算出できましたが正解でしょうか。 よろしくお願いいたします。

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

    離散フーリエ変換によって得られた値についての質問です。 多くのサイトでその値は Σ(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

  • 離散フーリエ展開の意味(イメージ)

    離散フーリエ展開のよく意味がわかりません。 フーリエ変換は任意の周期関数をsunやcosの関数の和 で書くことですよね?それの複素表示も理解できるのですが…。 DFT(離散フーリエ展開)は関数の値を細分化して、 そしてそれを変えるいうことですか? それはどのようなことなのでしょうか? Uj=cos(2π/N)jとVj=sin(2π/N)jの離散フーリエ展開を すると、離散フーリエ変換したUkがk=1、N-1で振動成分をもつとはどういうことですか? まだ、大学1年で非常に難しくて困っています。 どなたかわかりやすく教えてほしいです。 お願いします。

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

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

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

    G(n/Nτ)= Σ[k=0->N-1] {τ*f(kτ)*e^(-i2πkn/N)} 上記の式は離散フーリエ変換の式らしいですが、 これを関数化しようとしてつまずいています。 どのように解釈すれば、関数化できるのでしょうか? 特に、複素数iがよくわかりません。 e^iが点を左に90度回転させるくらいはわかります。 e^(-i2πkn/N)を関数powで表現できなくて困っていますが、多分見当違いだとは思います。 フーリエ級数展開はわかります。 最終的にはFFTを行いたいのですが、 その理解の前に離散フーリエ変換ができないといけないと思っています。 よろしくお願いします。 void GraphClass::ScatteredFourierConvert() { /* N-1 G(n/Nτ)= Σ {τ*f(kτ)*e^(-i2πkn/N)} k=0 k=何番目の値か? τ=値を読んだ間隔 N=値を読んだ数 */ int Tau=10; int N=RangeSize.cx*2/Tau; double Sum=0; double e=2.7182818; for(int k=0;k<N-1;k++) { Sum+=Tau*Data[k*Tau]*pow(e,-i*2*PI*k*n/N); } }

  • Taylor展開について

    「f(x)=exp{itx} をx=0のまわりで、3次の項までTaylor展開せよ」という問題で、exp{x}の有限Maclaurin展開: exp{x}=1+x+x^2/2!+…+x^(n-1)/(n-1)!+exp{θx} *x^n/n! という式にx=itxをそのまま代入したら違うと言われました。どこがどう違うのか教えてください。それと、有限Maclaurin展開でf(x)=f(0)+…+f^(n-1)(0)/(n-1)!*x^(n-1)+Rn, Rn=f^(n)(θx)/n!*x^n (0<θ<1) とありますが、なぜRnだけこんな形になるんですか? 教えてください。

  • 2×3=6の証明って?

    過去の質問「1+1=2の証明って?」 http://oshiete1.goo.ne.jp/kotaeru.php3?q=217225 を精読しました。 私は数学基礎論を少しだけ読んだことがありますが、自然数論は未勉強です。 過去の質問では、小さい自然数の定義した上で、プラスの定義を、 ●f(n,m,m)=n ●m≠kのとき、f(n,m,k) = f(s(n),m,s(k)) そして ●+(n,m)=f(n,m,0) とされていました。 それについで、カケルの定義はどうすればいいのですか? そして、2×3=6の証明って、どうすればいいのですか?

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

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

  • 三角関数の和に関する証明

    現在フーリエ解析関係の本を読んでいるのですが、 証明の途中で Σ[k=1~n]exp(-i2πk/n) = 0 iは虚数単位 という式が出てきました。 これを示したいと思います。 オイラーの公式を使って Σ[k=1~n]exp(-i2πk/n) = Σ[k=1~n]cos(2πk/n) - iΣ[k=1~n]sin(2πk/n) 第二項が0であるということは容易に示せるのですが、 第一項が0であるということがどうも示せなくて困っています。 お力を貸していただけたらと思います。よろしくお願い致します。