用dspC6455调用DSP_fft32x32这个函数最后得到的数据与matlab的数据不对。测试输入数据[1,0,2,0,3,0,..127,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);
}
Yang Song2:
你好!请问你在使用gen_twiddle之前添加了什么库文件吗?
我也是使用的6455,编译通过了,但在最后链接的时候提示不能识别gen_twiddle,猜测是缺少了库文件所致
我在使用DSP_fft32x32之前添加了dsp64x.lib,请问还需要加其他的库文件吗?