例程中FFT使用问题 - TMS320C6748 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5591|回复: 8
打印 上一主题 下一主题

例程中FFT使用问题

[复制链接]

8

主题

21

帖子

1145

积分

金牌会员

Rank: 6Rank: 6

积分
1145
跳转到指定楼层
楼主
发表于 2016-4-6 11:00:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
StarterWare中给的FFT例程输入信号是(2*Tn+4)个,但是做Tn点FFT,这样也是可以的吗?为什么输入要设置成(2*Tn+4)个?


// FFT 输入信号
#pragma DATA_ALIGN(CFFT_In, 8);
float CFFT_In[2*Tn+4];

// FFT 输出
#pragma DATA_ALIGN(CFFT_Out, 8);
float CFFT_Out[2*Tn+4];

// FFT 计算
DSPF_sp_fftSPxSP(Tn,CFFT_In,Cw,CFFT_Out,brev,rad,0,Tn);

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
沙发
发表于 2016-4-7 08:59:55 | 只看该作者
为了数据对齐或者防止计算过程中越界
回复 支持 反对

使用道具 举报

8

主题

21

帖子

1145

积分

金牌会员

Rank: 6Rank: 6

积分
1145
板凳
 楼主| 发表于 2016-4-7 09:59:18 | 只看该作者
希望缄默 发表于 2016-4-7 08:59
为了数据对齐或者防止计算过程中越界

        // 复数 FFT
        for (i=0;i<2*Tn;i++)
                CFFT_In=0.0;
        for (i=0;i<Tn;i++)
        {
                CFFT_In[2*i]=Input;                // 实部
                CFFT_In[2*i+1]=0;                     // 虚部为 0
        }
那在如上这一步把CFFT_In的虚部赋值,不设为零,即CFFT_In中有Tn个表示其实部,Tn个表示其虚部,再进行Tn点FFT,即

// FFT 计算
DSPF_sp_fftSPxSP(Tn,CFFT_In,Cw,CFFT_Out,brev,rad,0,Tn);

那么请问得到的CFFT_Out[2*Tn+4]是对应的有Tn个实部,Tn个虚部吗?

点评

对 输入信号可以是实数也可以是复数的  详情 回复 发表于 2016-4-7 14:04
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
地板
发表于 2016-4-7 14:04:51 | 只看该作者
shuo 发表于 2016-4-7 09:59
// 复数 FFT
        for (i=0;i


输入信号可以是实数也可以是复数的
回复 支持 反对

使用道具 举报

8

主题

21

帖子

1145

积分

金牌会员

Rank: 6Rank: 6

积分
1145
5#
 楼主| 发表于 2016-4-7 21:10:55 | 只看该作者
已解决,谢谢
回复 支持 反对

使用道具 举报

0

主题

10

帖子

1035

积分

金牌会员

Rank: 6Rank: 6

积分
1035
6#
发表于 2016-5-3 20:10:08 | 只看该作者
希望缄默 发表于 2016-4-7 08:59
为了数据对齐或者防止计算过程中越界

能给点 关于数据对齐的资料参考吗?
在arm或者其他编译器里,数据对齐一次就可以了,为什么这里每定义一个变量都要对齐一次,等候您的回答。  
回复 支持 反对

使用道具 举报

0

主题

10

帖子

1035

积分

金牌会员

Rank: 6Rank: 6

积分
1035
7#
发表于 2016-5-3 20:12:29 | 只看该作者
// FFT 计算
DSPF_sp_fftSPxSP(Tn,CFFT_In,Cw,CFFT_Out,brev,rad,0,Tn);

里面的那个brev 矩阵 是怎么生成的呢,有没有参考资料了,谢谢 帮忙回答
#pragma DATA_ALIGN (brev, 8);
unsigned char brev[64]=
{
        0x0, 0x20, 0x10, 0x30, 0x8, 0x28, 0x18, 0x38,
        0x4, 0x24, 0x14, 0x34, 0xc, 0x2c, 0x1c, 0x3c,
        0x2, 0x22, 0x12, 0x32, 0xa, 0x2a, 0x1a, 0x3a,
        0x6, 0x26, 0x16, 0x36, 0xe, 0x2e, 0x1e, 0x3e,
        0x1, 0x21, 0x11, 0x31, 0x9, 0x29, 0x19, 0x39,
        0x5, 0x25, 0x15, 0x35, 0xd, 0x2d, 0x1d, 0x3d,
        0x3, 0x23, 0x13, 0x33, 0xb, 0x2b, 0x1b, 0x3b,
        0x7, 0x27, 0x17, 0x37, 0xf, 0x2f, 0x1f, 0x3f
};

点评

参考下那篇文档 讲原理的~  详情 回复 发表于 2016-5-9 11:33
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
8#
发表于 2016-5-9 11:32:45 | 只看该作者
萧寒 发表于 2016-5-3 20:12
// FFT 计算
DSPF_sp_fftSPxSP(Tn,CFFT_In,Cw,CFFT_Out,brev,rad,0,Tn);


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

15

主题

1357

帖子

4579

积分

创龙

Rank: 8Rank: 8

积分
4579
9#
发表于 2016-5-9 11:33:19 | 只看该作者
萧寒 发表于 2016-5-3 20:12
// FFT 计算
DSPF_sp_fftSPxSP(Tn,CFFT_In,Cw,CFFT_Out,brev,rad,0,Tn);

参考下那篇文档 讲原理的~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-5-2 06:16 , Processed in 0.042897 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表