- 締切済み
MATLABによるFFTと位相スペクトルについて
純粋な正弦波信号 y=sin2πft ただし周波数f=500MHz をサンプリング周波数2.5GHz,サンプリング数128,256,512,1024の四パターンMATLABでFFTし、パワースペクトルと位相スペクトルを求めました。 結果、パワースペクトルは予想通り500MHzでピーク値をとったのですが、位相スペクトルは各サンプリング数ごとに全く違う値を取りました。 というわけで、 (1)理論上、正弦波の位相スペクトルはどのような値になるのか (2)なぜサンプリング数ごとに位相スペクトルの結果が大きく変わったのか この二点をご教授ください。よろしくおねがいします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- ninoue
- ベストアンサー率52% (1288/2437)
回答No.1
サンプリング周波数と信号周波数の比が小さく、整数倍の関係になっている為に問題が発生しているのだと思われます。 サンプリング周波数が信号周波数よりもずっと高いと問題は少ないでしょう。 或いはその比が数倍程度でしたら、整数倍の関係に無い方がサンプル数の増大につれて位相も次第に正しい値に収斂していくのではないでしょうか。 理論上どうなるかは、理論通りプログラム上でftの周波数でy=sin2πftの関数を発生させ、その5倍の周波数でサンプルしてFFTを求める事しか思いつきません。 このサンプルの関係では、5点毎に1サイクルの信号のサンプリングが繰り返されるので、128,256,512,1024サンプルでは、最後に3,1,2,4サンプルの分が不完全周期分として残り、これが残留位相分として変換されて現れるのではないでしょうか。 (なお質問は数学カテゴリの方が適しています)