初级会员

- 积分
- 88
- 金钱
- 88
- 注册时间
- 2020-7-26
- 在线时间
- 20 小时
|
1金钱
void GetPowerMag(void)
{
signed short lX,lY; //算频率的话Fn=i*Fs/NPT //由于此处i是从0开始的,所以不需要再减1
float X,Y,Mag;
unsigned short i;
for(i=0; i<NPT/2; i++) //经过FFT后,每个频率点处的真实幅值 A0=lBufOutArray[0]/NPT
{ // Ai=lBufOutArray[i]*2/NPT
lX = (lBufOutArray[i] << 16) >> 16; //lX = lBufOutArray[i];
lY = (lBufOutArray[i] >> 16);
X = NPT * ((float)lX) / 32768;//除以32768再乘65536是为了符合浮点数计算规律,不管他
Y = NPT * ((float)lY) / 32768;
Mag = sqrt(X * X + Y * Y) / NPT;
if(i == 0)
lBufMagArray[i] = (unsigned long)(Mag * 32768); //0Hz是直流分量,直流分量不需要乘以2
else
lBufMagArray[i] = (unsigned long)(Mag * 65536);
}
}
为什么在这里要*NPT , lX不是已经是实部了吗
X = NPT * ((float)lX) / 32768;//除以32768再乘65536是为了符合浮点数计算规律,不管他
Y = NPT * ((float)lY) / 32768;
|
|