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

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

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

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

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

  • ベストアンサー
  • 回答No.3
  • uyama33
  • ベストアンサー率30% (137/450)

0~T[s]でΔt刻みにN個の点を取った の意味ですが、 0からT秒までをΔtの幅で分割します。 分割した区間内のある時刻に計測するわけです。 たとえば、すべての区間で最初に測るときもあれば、 すべての区間で最後に測るときもあるでしょう。  N回測ったときにかかる時間は、 それぞれの区間で計測した瞬間だけではなく、 各区間の残りの時間を含めて考えるべきです。  そうしないと、 (N+1)回目の測定は、2*Δt秒間で1回計測することになってしまいます。 均等にするには0.9秒の瞬間に測ったとしても残りの0.1秒をつけた区間の中で1回測ったとして扱いますので、10回測るのに必要な時間は1秒となります。

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

質問者からのお礼

離散化はずっと線から点を取り出したと考えていたのですが、本当は点ではなく区間に分けて、区間の代表値として点を扱っていたのですね。 離散フーリエ変換での勘違いが一つ消えてスッキリしました。 解説ありがとうございました。

その他の回答 (3)

  • 回答No.4

離散フーリエ変換ていうのは実のところ離散フーリエ級数展開なんです。 (離散フーリエ変換→フーリエ係数、逆変換→級数展開) なので時間幅Tの有限区間信号を両側に張りつけて周期Tの周期関数として扱っていてf(0)=f(T)なのでf(T)は不要です。 周波数のきざみとして分母に入ってくるのは、この有限区間信号を周期化するときの繰り返し周期Tです。

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

質問者からのお礼

>f(0)=f(T)なのでf(T)は不要です。 そのとうりでした。私は分かったつもりで分かっていなかったようです。 uyama33さん回答と合わせて理解が深まり、助かりました。 回答ありがとうございました。

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

逆に考えた方が簡単かなぁ? 1 s 周期の信号を 0.1 s 単位でみるなら, 0 s, 0.1 s, ..., 0.9 s における信号の強さを見る必要があるし, これで十分だよね. だから T = NΔt なんです.

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

質問者からのお礼

回答ありがとうございます。 uyama33さんとhitokotonusiさんの回答と合わせて離散化と周期化の誤解が一つ解けました。 Tacosanさんの初めの回答のおかげで私自身の誤解が浮き彫りになり、議論が進んだように思います。ありがとうございました。

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

「0秒から0.1秒刻みで10点とる」と周期は 0.9秒ですか? 冷静に考えればわかるはずですが, この場合でも周期は 1秒となるはずです. 「0秒のときの値」と「0.9秒のときの値」は常に等しいですか?

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

質問者からの補足

回答ありがとうございます。 0秒から、0、0.1、0.2、・・・、0.8、0.9秒と0秒を含めて10点取って、フーリエ変換の各教科書にある「0~T秒をサンプリングしたときのフーリエ変換の(元データの)周期はT秒になる」に当てはめると、周期は0.9秒になると考えています。「0秒のときの値」と「0.9秒のときの値」が等しいかは元の波形によると思いますし、一般的には一致しない(だから窓関数が必要になってくる)と考えているのですが、誤った認識なのでしょうか? 間違いなく私は何処かでフーリエ変換を誤って覚えていると思うのですが、どこで勘違いしているのかが分からないのが現状で困り果てています(T_T)

関連するQ&A

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

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

  • 離散フーリエ変換

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

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

    離散フーリエ変換において、 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の周波数同士の波で、上手く相殺されて、逆離散フーリエ変換をしたときには、影響が出ないということなのですか? また、通常のフーリエ変換では、対称定理は成り立たないと思うのですが、そのことも併せて教えて頂けたらと思います。 よろしくお願いします。

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

    double DiscreteFourierTransformClass::DiscreteFourierTransformProcess(int n) { double e=2.7182818; double Pai=3.1415926535; int Tau=10; int N=DataLen/Tau; double Sum=0; for(int k=0;k<N;k++) { Sum+=Tau*Data[k*Tau]*pow(e,i*2*Pai*k*n/N); } return Sum; } Tau*Data[k*Tau]=帯 pow(e,i*2*Pai*k*n/N)=ほしい周波数の乗算 ということで、離散フーリエ展開と同じなのでしょうか? パソコン上で計算するには、離散フーリエ展開で計算して、 FFTというのは、pow(e,i*2*Pai*k*n/N)この回転子が3,4個程度のcos,sinで決まるから その値で計算すれば高速になるよということでしょうか? 離散フーリエ変換 G(n/N)=Σ[k=0::N-1]{τ*f(kτ)e^-i2πkn/N} k:何番目の値か τ:値を読んだ間隔 N:値を読んだ数 n:基本周波数の何倍か G(n/N)->ほしいnの成分を得る

  • 離散フーリエ変換(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と算出できましたが正解でしょうか。 よろしくお願いいたします。

  • フーリエ級数、フーリエ変換、離散フーリエ変換

    こんばんは。 ・正弦波 ・余弦波 ・三角波 上記3つについて、それぞれ ・フーリエ級数 ・フーリエ変換 ・離散フーリエ変換 を求めよ、という課題を出されました。 周期2Tで、-T~Tの区間以外は0として考えていいとのことなのですが、全然分かりません。 教えていただけないでしょうか? よろしくお願いします。

  • フーリエ変換による周波数の表現について

    フーリエ変換が F(ω)=∫(-∞から∞まで) f(t)e^(iωt) dt e^(iωt)=cosωt+isinωt で表わされているときに 周波数がどのように表現されているのか教えていただきたいです。 e^(iωt)のcosとsinは周期2πで周波数1を持った関数である事から f(t)cosωtだとすれば周波数ωをどのくらい含んでいるのかを 表していると理解はできるのですが、 isinωtがなぜ関わってくるのかが原理として分かりません。 複素数が周波数にどう関係しているのか? e^(iωt)が周波数○であるのか? この点を明らかにしたいです。よろしくお願いします。

  • フーリエ変換と周波数

    フーリエ変換によって周波数を解析したのですが、負の周波数の値も出てきてしまいます。これは、共役な関係があることが関係しているのでしょうか。 また、一定周期で周波数が検出されるのですが、これはフーリエ変換が積分範囲を無限大にしていることが原因なのでしょうか。 宜しくお願いいたします。

  • 離散フーリエ変換

    離散フーリエ変換(DFT)に関する質問です。 N個のデータ(次数)をDFTすると、N個の係数が導き出せます。 これらの係数のなかで、周波数が中域成分である係数の値を操作したいのですが、 求まった係数や次数からどのように高周波成分、中周波成分、低周波成分とわかるのでしょうか。 Nの値が大きいほど高周波成分なのでしょうか。

  • 離散フーリエ変換の周波数分解能

    失礼します。 DFT(離散フーリエ変換)について質問させてください。 DFTの周波数分解能は時間領域でのデータが持つ幅の逆数で決まりますが、 この周波数分解能で表現されなかった周波数成分はどこに行くのか教えていただけないでしょうか? DFTでの離散的な周波数の間にある成分はどこへ行くのか? 単純に考えて、DFTは形としては級数和なので、 それらの成分はどこかに畳み込まれているように思うのですが、 表現されない周波数成分の情報は消されたりするのでしょうか? よろしくお願い致します。