|
STM32官方的DSP库中FFT库函数的输入参数是一个long型的数组,高16位代表实部,低16位代表虚部,看到官方的例程中,如下:
void MygSin(long nfill, long Fs, long Freq1, long Freq2, long Ampli)
{
uint32_t i;
float fFs, fFreq1, fFreq2, fAmpli;
float fZ,fY;
fFs = (float) Fs;
fFreq1 = (float) Freq1;
fFreq2 = (float) Freq2;
fAmpli = (float) Ampli;
for (i=0; i < nfill; i++)
{
fY = sin(PI2 * i * (fFreq1/fFs)) + sin(PI2 * i * (fFreq2/fFs));
fZ = fAmpli * fY;
lBUFIN= ((short)fZ) << 16 ; /* sine_cosine (cos=0x0) */
}
}
上述函数中,fY的值在-1.0到1.0之间的浮点数,fZ是fY和幅值的乘积,再讲fZ取short型后,左移16位,也就是实部是高16位,这里有个问题没搞明白,假如幅值 fAmpli为1,那么放fZ就是一个-1.0到1.0之间的浮点数,取short后,不是都变成0了吗? 这样还能正确计算fft吗?
跪求大神指点,谢谢!! |
|