求教fft的问题,附代码
for(i=0;i<N;i++)
{
test = sin((2*3.14159*i)/128);
ipcb = (long)(test*2147483648);
}
//对电压进行FFT
fft.ipcbptr = ipcb;
fft.magptr = mag;
fft.init(&fft);
CFFT32_brev1(ipcb,ipcb,N);
fft.izero(&fft);
fft.calc(&fft);
fft.mag(&fft);
自己顶一下,有知道的朋友,指点一下阿
谁知道,帮助偶一下吧
基波的幅值为1,其它次谐波的幅值为0,就能说明结果是正确的嘛??
知道的朋友,帮帮忙,说句话吧
大家都不知道吗??一起讨论一下啊
差不多是这样,你增加3次和5次谐波,然后将结果再开方,再看看
谢谢!
但是我的计算结果
mag[1]=79433686
mag[7]=2083801
mag[9]=10187
mag[15]=1125445
mag[17]=5360918
mag[23]=6747834
。。。。。。
这样应该是不对的吧?
是有问题。
我用的是实数的FFT,RFFT32_brev(ipcb,ipcb,FFT_N),没有问题。
RFFT32输入128个点,输出只算出0-64次谐波?
我的程序:
#define N 128
#pragma DATA_SECTION(ipcb,\"FFTipcb\"
;
#pragma DATA_SECTION(mag,\"FFTmag\"
;
RFFT32 fft = RFFT32_128P_DEFAULTS;
long ipcb[N+2];
long mag[N/2+1];
for(i=0;i<N;i++)
{
test = sin((2*3.14159*i)/128);
ipcb = (long)(test*2147483648);
}
fft.ipcbptr = ipcb;
fft.magptr = mag;
fft.init(&fft);
RFFT32_brev(ipcb,ipcb,N);
fft.calc(&fft);
fft.split(&fft);
fft.mag(&fft);
算出来的结果和之前类似,是不是我赋的方法不对?你是怎么赋值的?
万分感激!!
你的数据输入精度可能有问题,DSP的sin值的精度不太高,你又扩大很多倍。
128点的FFT只能算出64次谐波。
那你试验的时候是怎么赋初值的?
可以发给我看看吗?
谢谢!!
死办法,用EXCEL计算,然后放在data区。如下:
.data
_INDATA:
;y=0.25cos(314*t)+0.25cos(314*3*t)/3+0.25cos(314*9*t)/9 Q14
.WORD 5916,5853,5672,5397,5064,4715,4385,4105
.WORD 3887,3729,3615,3514,3393,3222,2978,2653
.WORD 2256,1811 ,1354 ,924 ,561 ,294 ,138 ,90
.WORD 131 ,230 ,347 ,443 ,487 ,460 ,359 ,198
.WORD 3 ,-192,-355,-458,-487 ,-445 ,-350,-233
.WORD -133,-90,-134,-287,-551,-911,-1339,-1796
.WORD -2242,-2641,-2968,-3215,-3388,-3510,-3611,-3725
.WORD -3881,-4097,-4375,-4703,-5053,-5387,-5664,-5849
.WORD -5916,-5857,-5679,-5407,-5076,-4726,-4395,-4113
.WORD -3893,-3734,-3618,-3517,-3398,-3228,-2987,-2665
.WORD -2270,-1826,-1368,-937,-572,-301,-141,-90
.WORD -129,-226,-343,-440,-486,-462,-363,-204
.WORD -10,186,350,455,487,448,354,237
.WORD 136,90,131,281,541,898,1325,1782
.WORD 2228,2629,2959,3208,3384,3507,3608,3721
.WORD 3875,4089,4365,4692,5042,5377,5656,5845
最后你是以q14的形式输入的吗?ti的手册上ipcb不是应该是q 31吗?
有没有msn,我的jbzliu@hotmail.com
一样的程序,别人在2812的板子上算出来是正确的,我在2806上算出来就不对。
我把程序里其他和fft计算无关的变量删除了,fft计算结果也不一样
大家帮忙分析一下是怎么回事吧??