打印

DSPC6455 fft问题

[复制链接]
1328|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
masege|  楼主 | 2015-7-31 20:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
pc, fft, DSP, AD, se
C6455做FFT。用的void DSP_fft32x32(int *w, int nx, int *x, int *y)对[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]作傅里叶变换测试。 先用tw_fft32x32 产生了旋转因子。为什么最后求出的FFT数据不对?除了第一个对。还有输出的都是整数吗?

求大神给个例程,给出点建议。确实卡这很久了。
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
#include "string.h"
#include "ctype.h"


#define NSize 16

#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]={1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0};
#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()
{
       
       

        gen_twiddle(twiddle_factor, NSize, 2147483647.5);

        DSP_fft32x32(twiddle_factor,NSize,PImgTmp_double,FFT_output);
}

相关帖子

沙发
aresc| | 2015-8-3 21:59 | 只看该作者
1. 每个用到的buffer空间的起始地址是否满足所用的函数要求?
比如#pragma DATA_ALIGN (twiddle_factor, 8),会不会是16或32或64字节对齐。

2.如果1正确,那结果就应该是对的。

3.你怎么知道输出的结果不对?怎么比较的?

使用特权

评论回复
板凳
masege|  楼主 | 2015-8-5 10:12 | 只看该作者
1.手册要求是double word aligned.应该是8字节没错。
2.我是与matlab中的FFT输出结果进行对比,结果不太对。有误差,而且前几个数的误差还挺大,后面的稍微好一点,是精度的问题吗?并且进行ifft后得不到原来的数据。好蛋疼。
3.是否我的输入格式不对 需要转换成Q格式数吗?但是这样进行FFT的绝对会有溢出的。我看了结果也不太对。

求您解答。

使用特权

评论回复
地板
aresc| | 2015-8-5 21:53 | 只看该作者
直接和matlab的结果比肯定不对,因为matlab的运算是double类型的,也就是浮点类型的,而你这里的运算是定点的。

按你产生twiddle的程序,定点的格式是Q31,也就是能表示的浮点数据的范围是[-1.0,1.0)。

比如你用的[1,0,2,0,3,0,4,0,....16,0]的定点数转换成浮点数是[1, 0, 2, 0, 3, 0, ..., 16, 0] / 2^32,你用这个当成matlab的输入,才能得到相同的FFT结果,但因为这一组数实际都很小,接近于0,所以也没法比较。 这也是你IFFT得不到原来数据的原因,不可能一模一样的,有很小的误差存在。

使用特权

评论回复
5
masege|  楼主 | 2015-8-10 09:35 | 只看该作者
aresc 发表于 2015-8-5 21:53
直接和matlab的结果比肯定不对,因为matlab的运算是double类型的,也就是浮点类型的,而你这里的运算是定点 ...

能留您一个QQ吗?有些问题想详细的请教您一下。

使用特权

评论回复
6
LuckyTigerooo| | 2016-10-23 20:10 | 只看该作者
同样遇到这个问题,请问您是怎么解决的呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

24

帖子

0

粉丝