• ベストアンサー

SINとCOSのフーリエ変換(というか位相差の出し方)

SINの各角度ごとの値:S(K) (K=1~360) COSの各角度ごとの値:C(K) (K=1~360) 周波数とサンプリング時間とデータの数をf、ts、 X(K)=S(K)*COS(2π*K/360)  Y(K)=S(K)*SIN(2π*K/360) Σ(K=1~360)X(K)=X Σ(K=1~360)Y(K)=Y ATAN(Y/X)=SIN関数の位相 になると今、思っています そしてS(K)の所をC(K)に変えればCOS関数の位相が出ると思っています。 そして二つの関数の位相差は90度のはずですが 二つとも-90度ぐらいで位相差はほぼ0になってしまいます。どこが違うのでしょうか?

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

  • ベストアンサー
  • LCR707
  • ベストアンサー率70% (95/135)
回答No.2

 こんにちわ。  以前、私はeva2015さんの「位相差の求め方」という質問に対して、 『2つの信号を  a(t) = A cos(ω0t + θa)  ・・・(1)  b(t) = B cos(ω0t + θb)  ・・・(2) としたとき、ω0が既知なので、  Xa = (1/T)∫(0~T) a(t)exp(-jω0t) dt (ただし、T=2π/ω0) ・・・(3)  Xb = (1/T)∫(0~T) b(t)exp(-jω0t) dt  ・・・(4) のように、ω0でのみフーリエ変換すると、Xa、Xb は複素数なので  arg(Xa) = θa  arg(Xb) = θb になり、位相差は  θa - θb = arg(Xa) - arg(Xb) で求まります。』 という意味の回答をしました。さらに、これを離散的に演算する場合は  Xa = (1/N)Σ(k=0~N-1) a(k)exp(-jω0・ts・k)  ・・・(5) というふうにするという説明もしました。  実は、(3)(4)(5)の式は、たたみこみ演算と言います。今後はたたみこみ演算という名称で質問をされたほうが、誤解が無くて良いだろうと思います。    さて、今回の質問で、Sk = 2π*k/360 とすれば、sinに対する離散たたみこみ演算は  Xs = Σ[K=1~360]sin(Sk)cos(Sk)   = Σ[K=1~360]2sin(2Sk)   = 0  Ys = Σ[K=1~360]sin(Sk)sin(Sk)   = Σ[K=1~360](1-cos(2Sk))/2   = 180 になるので、  ATAN(Ys/Xs) = ATAN(∞) = +π/2 または -π/2 になるはずです。もっとも、ここは  ATAN2(Ys,Xs) = +π/2 という、引数が2個の関数を使って、4象限の答えを得たほうが良いと思います。(そういう関数がサポートされていればですが)  次にcosに対するたたみこみは、  Xc = Σ[K=1~360]cos(Sk)cos(Sk)   = Σ[K=1~360](1+cos(2Sk))/2   = 180  Yc = Σ[K=1~360]cos(Sk)sin(Sk)   = Σ[K=1~360]2sin(2Sk)   = 0 になるので、  ATAN(Yc/Xc) = ATAN(0) = 0 または π になるはずです。従って、結果だけを比べるのではなく、途中の X や Y の値がどうなっているかを確認されたほうが良いと思います。  

その他の回答 (1)

  • CAW
  • ベストアンサー率14% (37/257)
回答No.1

単純に言って、フーリエ変換と言うのは周波数スペクトルですから 位相が違っていても同じ物と言うことになります。 それはもちろん位相が違う並と言うのは別物ではあるのですが フーリエ変換の結果としてはその周波数のエネルギーの分布ですから その時点での計測結果としては位相の違う存在があったとしても ベクトルが合成されたエネルギーのスペクトルが残るだけです。