最近在搞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 */ { float X= NPT*((float)lX)/32768; float Y = NPT*((float)lY)/32768; float Mag = sqrt(X*X+ Y*Y)/nfill; // 先平方和,再开方 lBUFMAG[i1] = (u32)(Mag*65536); // } } } |
RE:FFT 计算各次谐波的幅值
这个不还是lBUFOUT吗?
回复:FFT 计算各次谐波的幅值
lX= (lBUFOUT16; /* sine_cosine --> cos */
这个不还是lBUFOUT吗?
是的 我的理解是确宝高16位为空吧 这个求幅值的函数 是我在网上找的 大多数都是这样的 是因为这点的原因吗?
RE:FFT 计算各次谐波的幅值
RE:FFT 计算各次谐波的幅值
回复:FFT 计算各次谐波的幅值
其实也可以这样写,a&0x00FF。取的是低16位。这里最好还是仿真看一下,实际采集的数据和你发书据是不是相同。
好的 我试试看
回复:FFT 计算各次谐波的幅值
其实也可以这样写,a&0x00FF。取的是低16位。这里最好还是仿真看一下,实际采集的数据和你发书据是不是相同。
a&0x00FF。取的是低16位,你确定?????