[英]Matlab fft on one period of sinewave returns phase of -pi/2. Why?
在嘗試了解快速傅立葉變換時,我遇到了相位問題。 我將其分解為下面的簡單代碼。 計算50Hz正弦波的一個周期,並應用fft算法:
fs = 1600;
dt = 1/fs;
L = 32;
t=(0:L-1)*dt;
signal = sin(t/0.02*2*pi);
Y = fft(signal);
myAmplitude = abs(Y)/L *2 ;
myAngle = angle(Y);
Amplitude_at_50Hz = myAmplitude(2);
Phase_at_50Hz = myAngle(2);
雖然振幅還可以,但我不了解相位結果。 為什么我得到-pi / 2? 因為只有一個純正弦波,所以我希望相位為0。或者我的數學有誤,或者我使用Matlab,或者兩者都...(自制的fft給我相同的結果。所以我想我是絆倒我的數學。)
這里有一個類似的帖子: MATLAB FFT Phase plot 。 但是,建議的“展開”命令不能解決我的問題。
謝謝和最誠摯的問候,
潮呼呼
FFT相位角為零時的默認波形是在FFT窗口中以1.0開始和結束的余弦波(不是在FFT窗口中以0.0或其零交叉開始和結束的正弦波)。通用術語是將FFT基向量的余弦函數分量(復指數)稱為“實數”分量。 正弦函數基礎分量稱為“虛數”,因此可以推斷出非零的復數相位。
正弦函數的傅立葉變換,例如A * sin((2 * pi * f)* t),其中f是頻率,將在+ f和-f的頻域中產生2個幅度為A / 2的脈沖,其中相關相位分別是-pi / 2和pi / 2。 您可以在這里查看其證明: http : //mathworld.wolfram.com/FourierTransformSine.html
因此,代碼工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.