• 締切済み

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

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

みんなの回答

  • kiyomushi
  • ベストアンサー率68% (13/19)
回答No.5

うっかりミスだと思うのですが、「絶対値が周波数成分のパワーである」は、ちょっと違います。 正しくは「絶対値の 2 乗が周波数成分のパワーである」です。

  • kiyomushi
  • ベストアンサー率68% (13/19)
回答No.4

> 虚部についてですが、虚部ときくと虚数のjと関係があるように思ってしまって > いまいち実際の具体的なイメージを持てずにいます。 「虚数の j と関係がある」という部分は仰るとおりで、関係大有りです。 でも、「(実数) 波形に虚部がある」と考えるとおかしくなります。波形に虚部が あるのではなく、スペクトル(変換結果)に虚部があるのです。 虚部が出てくるのは、複素の指数関数 exp(jθ)=cos(θ)+j sin(θ) と波形を 掛け算して積分するフーリエ級数展開だからで、DFT はその離散版です。 > 虚部を実際の具体的なイメージとして表現する方法はありませんでしょうか? 波形の、時刻 0 を中心に左右奇対称な成分の強さです。sin(nθ)は n によらず 全部奇対称ですよね。 > 人の声の場合ですと、波形が複雑であるため偶関数と奇関数の両方が含まれて > いるのでしょうか? そうですね。人の声は偶関数でも奇関数でもないです。両方が混ざっています。 だからフーリエ変換すると実部と虚部が両方出て来ます。 ちなみに、人の声に限らず、複雑でも単純でも、全ての波形は偶関数と奇関数 に分解できますが、それをフーリエ級数で完全に表せるとは限りません。

distea
質問者

補足

ご回答ありがとうございます。 あれから考えてみたのですけれど、わからない部分があります。 離散フーリエ変換される音声が入力として、入力する場所が実部と虚部にわかれている場合これは実部と虚部の両方へ入力することになるのでしょうか? それとも入力が実部と虚部にわかれている時点でここに入力されるのは離散フーリエ変換後の信号となるのでしょうか? もしよければご回答をよろしくお願い致します。

  • hrsmmhr
  • ベストアンサー率36% (173/477)
回答No.3

絶対値がパワーであると分かるなら、 初期位相がたまたまπ/2(虚部だけ)だったなら実部0になったりするとか 周波数成分の比較としてまずいことがたくさんあることが分かると思うのですが…

  • kiyomushi
  • ベストアンサー率68% (13/19)
回答No.2

(1) 実部は cos(nθ) の係数、虚部は sin(nθ) の係数です。 (2) 変換前の関数が偶関数なら変換後は実部だけ、奇関数なら虚部だけになります。

distea
質問者

補足

ご回答ありがとうございます。 実部は理解することができました。 虚部についてですが、虚部ときくと虚数のjと関係があるように思ってしまって いまいち実際の具体的なイメージを持てずにいます。 虚部を実際の具体的なイメージとして表現する方法はありませんでしょうか? 人の声の場合ですと、波形が複雑であるため偶関数と奇関数の両方が含まれて いるのでしょうか? もしよければよろしくお願いします。

  • hrsmmhr
  • ベストアンサー率36% (173/477)
回答No.1

(1)実数部、虚数部ではなく、その絶対値がその周波数成分のパワー、位相角が信号列の時系列上の初期位相だと思います (2)それだけで意味がある使い方もあるかもしれませんが、周波数成分の強さは初期位相が分からないと比較できないです

distea
質問者

補足

ご回答ありがとうございます。 絶対値が周波数成分のパワーであることは理解できましたが、位相角が 信号列の時系列上の初期位相であり、それがなければ周波数成分の強さ 比較できないのはどうしてなのでしょうか? もしよければよろしくお願いします。

関連するQ&A

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

  • CUDAでの離散フーリエ変換(DFT)を教えてください。

    CUDAでの離散フーリエ変換(DFT)を教えてください。

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

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

  • 離散フーリエ変換

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

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

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

  • アナログ信号とフーリエ変換

    デジタル信号の周波数分析として離散フーリエ変換があります。そして、アナログ信号の周波数分析としてフーリエ変換と考えていました。またアナログ信号を離散フーリエ変換で考える方法もあり、アナログ信号をサンプリングすることで離散フーリエ変換で考えることが出来ると考えています。 ですが、「アナログ信号の周波数分析にフーリエ変換を使うと定義されている」という考え方は間違いであると言われました。 何が違うのか分かりません。よく分からないので詳しく教えてください。

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

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

  • 離散フーリエ変換をC言語でどの様に書けばいいですか?

    C言語でDFT離散フーリエ変換を書くにはどの様に書けばよろしいですか? Googleで検索すれば書き方は出てくるのですが、使ってる関数がいまいちよく分かりません。 ・データの入力 ↓ ・フーリエ変換の計算 ↓ ・結果の出力というのをやればいいのは理解できるのですが、C言語でどの様に書けばいいか分からなくて…

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

    ある時間関数を離散フーリエ変換して得られるフーリエスペクトルの振幅値について教えて下さい。 今想定している離散フーリエ変換の式は一般的なもので Σ(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をかける理由を)教えて頂けないでしょうか。 当方、数学についてはあまり詳しくないため、簡単に説明して頂けると幸いです。

  • 離散フーリエ変換

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