我想用该函数对一个3200个复数数据进行FFT转换,具体操作是每8个复数进行fft,循环作400次;但是我用一个for循环来做,第一次8个数据是对的,之后的变换结果都是错的,我一步一步调试发现,第一次做完FFT,原始数据被覆盖改变了,我想是因为函数中间变量用到了原始数据的空间
想问问各位前辈,如何做循环的FFT
Andy Yin1:
函数都有接口指定输入及输出数据的存储地址,这地址是外部应用维护的,我怀疑你代码每次循环处理给的地址重复使用了。
user4712072:
回复 Andy Yin1:
dspf_sp_fftspxsp里面的buff盛放的是原始数据,循坏做fft;第一次做完之后,buff里面的部分数据被改变了
Andy Yin1:
回复 user4712072:
如你所述输入buffer可能被中间值覆盖,原始数据被覆盖是正常的,只要输出结果正确即可。
user4712072:
回复 Andy Yin1:
可能是我表达有误吧,说明一下pulsenum=8,fft_num=400
buffer有3200个复数,一共是400组,每组8个,实部虚部放的;然后用一个for循坏400次,第一次做8点fft取值应该是buffer[0]~buffer[15],但是做完第一次fft之后,buffer[16]之后的数据很大一部分被改变了;
之后我单独试验了一下,buffer里面只放8个复数,后面的数据全部为零,也就是buffer[16]~buffer[6399]全部等于零,做完fft之后那些0没被改变;
但是如果改成buffer[16]=1.0,buffer[17]=2.0,做完fft之后buffer[16]之后的数据又被一些莫名其妙的数值覆盖;