|
最近在研究FFT例程的代码,调试后发现了一些问题:在例程中FFTTest函数调用了dsplib中自带的DSPF_sp_fftSPxSP()函数来实现FFT
CFFT_In[2*i]=Input; // 实部
CFFT_In[2*i+1]=0; // 虚部为 0
// 保留一份输入信号副本
memcpy(CFFT_InOrig,CFFT_In,2*Tn*sizeof(float));
// 产生旋转因子
tw_gen(Cw,Tn);
// FFT 计算
DSPF_sp_fftSPxSP(Tn,CFFT_In,Cw,CFFT_Out,brev,rad,0,Tn);
经过测试,发现CFFT_Out数组里面的数是正确的,但是当我再次查看CFFT_In数组时(用printf打印了一遍),
发现里面的数据已经发生了变化,跟保留的输入信号副本CFFT_InOrig数组差距很大。
按理说,调用函数不应该把输入的变量也改变呀,当然,在所给的例程中也特地调用memcpy函数,保留输入信号在CFFT_InOrig数组,
所以想问一下创龙的工程师在编写程序的时候是否也遇到了这个问题?还有别的办法让经过DSPF_sp_fftSPxSP函数处理后的CFFT_In数组里面的数不变化吗?
|
|