各位专家:
我在使用DSPF_sp_fftSPxSP的时候,输入的x数据在函数执行之后会改变,而且是非常大的数,如 71446050721131193637847900390625.000000 之类的,输出y数据也是非常大的数。我在daplib里面的DSPF_sp-fftSPxSP_66_LE_ELF工程里面输出x_i在执行DSPF_sp_fftSPxSP函数前后的数据,发现也改变了,只是改编后的数据不是像我自己过程里面的那么巨大。求指教?谢谢!
James Li2:
印象中DSPlib的FFT函数把输入buffer用作scratch buffer(草稿buffer)了,不过你这个函数DSPF_sp_fftSPxSP我没用过
yang cao1:
回复 James Li2:
谢谢!请问scratch buffer是什么意思?我试验过,fft函数确实是会改变输入的数据。
Richard Zhang:
因为FFT的运算是分很多级进行运算的,因此,理论上在每一级的运算结束后都要保存一次该级蝶形运算输出的结果,保存该结果的地方就是我们说的BUFFER,你的BUFFER应该和你的输入数据地址了,所以原来的输入数据被洗掉了,你说的数据非常大的结果,如果你调用FFT函数的接口没错的话,应该检查一下旋转因子的取值是否正确。
james1:
执行完FFT后输入数据和旋转因子都会改变,因此你需要将输入数据另外保存在另一地址空间。
yang cao1:
回复 Richard Zhang:
谢谢!我在最前面加了个printf(“\n")就可以,不加的话就会输出很大。
yang cao1:
回复 james1:
谢谢!那么我要再次调用fft函数的时候还要在产生旋转因子咯?
james1:
回复 yang cao1:
你产生一次,保存几个副本就OK了,每次新产生很费时间
yang cao1:
回复 james1:
我在fft函数执行前后都输出了旋转因子,发现没变化啊!可能fft函数不会改变它!
James Li2:
回复 yang cao1:
不会改变旋转因子,只会改变输入数据存储蝶形系数的buffer只读,存储输入数据的buffer用来存储中间结果