- ベストアンサー
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になってしまいます。どこが違うのでしょうか?
- みんなの回答 (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)
単純に言って、フーリエ変換と言うのは周波数スペクトルですから 位相が違っていても同じ物と言うことになります。 それはもちろん位相が違う並と言うのは別物ではあるのですが フーリエ変換の結果としてはその周波数のエネルギーの分布ですから その時点での計測結果としては位相の違う存在があったとしても ベクトルが合成されたエネルギーのスペクトルが残るだけです。