用dspC6455调用DSP_fft32x32这个函数最后得到的数据与matlab的数据不对。测试输入数据[1,0,2,0,3,0,..63,0]; 最后得出来的数据列举前面几个 DSP: matlab: FFT_output[0] = 8256 FFT_output[0] = 8256 FFT_output[1] = 0 FFT_output[1] = 0 FFT_output[2] = -102 FFT_output[2] = -64 FFT_output[3] = 2638 FFT_output[3] = 2607 FFT_output[4] = -96 FFT_output[4] = -64 FFT_output[5] = 1338 FFT_output[5] = 1302 FFT_output[6] = -128 FFT_output[6] = -64 FFT_output[7] = 856 FFT_output[7] = 867 ... 程序如下。也是按照手册,先生成相应旋转因子,然后调用库函数。为什么结果会不对呢相差还挺大。是我输入数据的格式有问题吗。还有关于这个函数,如果 我是小数数据又该如何处理呢。求用过的大神解答一下,已经卡很久了。程序如下。 #include "stdio.h"
#include "math.h"
#include "stdlib.h"
#include "string.h"
#include "ctype.h"
#define NSize 128
#define PI 3.1415926
#pragma DATA_SECTION (twiddle_factor, "mysect");
#pragma DATA_ALIGN (twiddle_factor,8)
int twiddle_factor[NSize*2];
#pragma DATA_SECTION (PImgTmp_double, "mysect");
#pragma DATA_ALIGN (PImgTmp_double,8)
int PImgTmp_double[NSize*2];
#pragma DATA_SECTION (FFT_output, "mysect");
#pragma DATA_ALIGN (FFT_output, 8)
int FFT_output[NSize*2]; int gen_twiddle(int *w, int n, double scale); void DSP_fft32x32(int *w, int nx,int *x,int *y); void main()
{
int i,j;
for(i=0;i<NSize;i++)
{
PImgTmp_double[2*i] = i+1;
PImgTmp_double[2*i+1] = 0;
}
gen_twiddle(twiddle_factor, NSize,2147483647.5); DSP_fft32x32(twiddle_factor,NSize,PImgTmp_double,FFT_output);
}
|