STM32,使用了FFT變換,我看到網上說輸出的數組,求虛部比實部的反正切就是信號的相位,但是得到的明顯不是啊
void GetPowerMag()
{
signed short lX,lY;
float X,Y,Mag;
unsigned short i;
for(i=0; i<NPT/2; i++)
{
lX = (OutBufArray[ i] << 16) >> 16; //虛部
lY = (OutBufArray[ i] >> 16); //實部
chucun[ i] = InBufArray[ i];
imag[ i] = lX;
real[ i] = lY;
//除以32768再乘65536是為了符合浮點數計算規律
X = NPT * ((float)lX) / 32768;
Y = NPT * ((float)lY) / 32768;
Mag = sqrt(X * X + Y * Y) / NPT;
if(i == 0)
MagBufArray[ i] = (unsigned long)(Mag * 32768);
else
MagBufArray[ i] = (unsigned long)(Mag * 65536);
}
}
具體求出來的反正切值用不用再進行轉換得到相位,還是說我的過程就是錯的? |