TI中文支持网
TI专业的中文技术问题搜集分享网站

C6455 fft 与matlab数据不符

用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,请问还需要加其他的库文件吗?

赞(0)
未经允许不得转载:TI中文支持网 » C6455 fft 与matlab数据不符
分享到: 更多 (0)