FFT 计算各次谐波的幅值
最近在搞FFT 我用的是自带DSP库中64点 的FFT 现在我遇到一个问题是:我在通过对采样数据进行完FFT后 来计算各次谐波幅值的时候发现计算的值就不对 总是乱跳 (前提是我用的是一个可以产生稳定谐波的源)不知道这是为什么。希望高手给予指点计算幅值的程序如下:
void powerMag(long nfill)
{
s32 lX,lY;
u32 i;
for (i=0; i < nfill; i++)
{
lX= (lBUFOUT16; /* sine_cosine --> cos */
lY= (lBUFOUT >> 16); /* sine_cosine --> sin */:L
{
float X= NPT*((float)lX)/32768;
float Y = NPT*((float)lY)/32768;
float Mag = sqrt(X*X+ Y*Y)/nfill; // 先平方和,再开方
lBUFMAG = (u32)(Mag*65536); //
}
}
}
RE:FFT 计算各次谐波的幅值
lX= (lBUFOUT16; /* sine_cosine --> cos */这个不还是lBUFOUT吗?
回复:FFT 计算各次谐波的幅值
回复第 2 楼 于2012-07-31 10:27:14发表:lX= (lBUFOUT16; /* sine_cosine --> cos */
这个不还是lBUFOUT吗?
是的 我的理解是确宝高16位为空吧 这个求幅值的函数 是我在网上找的 大多数都是这样的 是因为这点的原因吗?
RE:FFT 计算各次谐波的幅值
你仿真到这里,看看这里的内容。然后算一下,看看是采集的时候数据放错了。还是有别的问题。RE:FFT 计算各次谐波的幅值
其实也可以这样写,a&0x00FF。取的是低16位。这里最好还是仿真看一下,实际采集的数据和你发书据是不是相同。回复:FFT 计算各次谐波的幅值
回复第 5 楼 于2012-07-31 11:40:57发表:其实也可以这样写,a&0x00FF。取的是低16位。这里最好还是仿真看一下,实际采集的数据和你发书据是不是相同。
好的 我试试看 :)
回复:FFT 计算各次谐波的幅值
回复第 5 楼 于2012-07-31 11:40:57发表:其实也可以这样写,a&0x00FF。取的是低16位。这里最好还是仿真看一下,实际采集的数据和你发书据是不是相同。
a&0x00FF。取的是低16位,你确定?????
页:
[1]