6136|7

64

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求计算FFT函数! [复制链接]

想通过快速的fft变换计算出的结果,再来求有效值,
不知道是怎么操作,我用的是2812。
由于新手上路,希望大家多多指导!

最新回复

顺便问个问题,我用的5509,为什么没有看到CFFT32()的库函数?我也想用32位的库函数,16位的精度损失太大了。我先用CFFT()求出结果后,再用此结果做CIFFT(),但由于库函数都是16位的,所以我不得不舍弃低位,造成了精度损失,应该怎么解决,能找到CFFT32()的库函数吗   详情 回复 发表于 2007-7-4 12:38
点赞 关注

回复
举报

59

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
FFT可以在TI免费下载到代码,有效值就用程序自己来实现了
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

我在一个周期中采集了32个点!

在网络找了个程序,然后自己修改了一下,运行后的根据得到的数据看了波形,我都不知道对不对,把代码发上来,高手们多多拍砖?!


const float cos_tab[0x20]={
1,0.980785281,0.923879535,0.923879535,0.707106791,0.555570247,0.382683451,0.195090345,
0,-0.195090292,-0.382683401,-0.555570202,-0.707106753,-0.831469588,-0.923879515,-0.980785271,
-1,-0.980785292,-0.923879556,-0.831469648,-0.707106829,-0.555570292,-0.3826835,-0.195090398,
0,0.19509024,0.382683352,0.555570158,0.707106715,0.831469558,0.923879494,0.98078526};
const float sin_tab[0x20]={
0,0.195090319,0.382683426,0.555570225,0.707106772,0.831469603,0.923879525,0.980785276,
1,0.980785286,0.923879545,0.831469633,0.70710681,0.555570269,0.382683476,0.195090371,
0,-0.195090266,-0.382683377,-0.55557018,-0.707106734,-0.831469573,-0.923879504,-0.980785265,
-1,-0.980785297,-0.923879566,-0.831469663,-0.707106848,-0.555570314,-0.382683525,-0.195090424};



/*  采样来的数据放在dataR[ ]数组中,运算前dataI[ ]数组初始化为0 */
void FFT(float dataR[],float dataI[])
{
        int x0,x1,x2,x3,x4,x5,xx;
        int L,i,j,k,b,p;
        float TR,TI,temp;
/********** following code invert sequence ************/
        for(i=0;i<32;i++)
        {
                x0=x1=x2=x3=x4=x5=0;
                x0=i&0x01;
                x1=(i/2)&0x01;
                x2=(i/4)&0x01;
                x3=(i/8)&0x01;
                x4=(i/16)&0x01;
                x5=(i/32)&0x01;
                xx=x0*32+x1*16+x2*8+x3*4+x4*2+x5;
                dataI[xx]=dataR;
        }
        for(i=0;i<32;i++)
        {
                dataR=dataI;
                dataI=0;
        }
/************** following code FFT *******************/
        for(L=1;L<=5;L++) /* for(1) */
        {
                b=1; i=L-1;
                while(i>0)
                {
                        b=b*2; /* b= 2^(L-1) */
                        i--;
                }
                for(j=0;j<=b-1;j++) /* for (2) */
                {
                        p=1;
                        i=5-L;
                        while(i>0) /* p=pow(2,5-L)*j; */
                        {
                                p=p*2;
                                i--;
                        }
                        p=p*j;
                        for(k=j;k<32;k=k+2*b) /* for (3) */
                        {
                                TR=dataR[k];
                                TI=dataI[k];
                                temp=dataR[k+b];
                                dataR[k]=dataR[k]+dataR[k+b]*cos_tab[p]+dataI[k+b]*sin_tab[p];
                                dataI[k]=dataI[k]-dataR[k+b]*sin_tab[p]+dataI[k+b]*cos_tab[p];
                                dataR[k+b]=TR-dataR[k+b]*cos_tab[p]-dataI[k+b]*sin_tab[p];
                                dataI[k+b]=TI+temp*sin_tab[p]-dataI[k+b]*cos_tab[p];
                        } /* END for (3) */
                } /* END for (2) */
        } /* END for (1) */
} /* END FFT */

 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

4
 

to: louxudan

我在ti上下载了fftr128代码,修改编译后,出现了下面的问题:

symbol                              in file
---------                        ----------------
_CFFT32_calc                     F:\\projct\\lubo\\program\\test7\\Debug\\Main.obj
_RFFT32_split                    F:\\projct\\lubo\\program\\test7\\Debug\\Main.obj
_RFFT32_brev                     F:\\projct\\lubo\\program\\test7\\Debug\\Main.obj
_RFFT32_acq                      F:\\projct\\lubo\\program\\test7\\Debug\\Main.obj
_RFFT32_mag                      F:\\projct\\lubo\\program\\test7\\Debug\\Main.obj
_CFFT32_init                     F:\\projct\\lubo\\program\\test7\\Debug\\Main.obj
_RFFT32_win                      F:\\projct\\lubo\\program\\test7\\Debug\\Main.obj
>>   error: symbol referencing errors - \'./Debug/test4.out\' not built

函数calc , split……没有定义!其中有个头文件无法找到:stb.h!是不是这些函数在这个头文件中,还是在ccs编译器中?
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

5
 
添加库
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

6
 

to:louxudan

后来,我发现了那几个文件
_CFFT32_calc   
_RFFT32_split   
_RFFT32_brev                  
_RFFT32_acq                  
_RFFT32_mag               
_CFFT32_init                  
_RFFT32_win  
他们都是以汇编文件的形式出现的,不知道该怎么添加!
请多多指点! 谢谢!
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

7
 
首先,在你的主程序中要添加DSPLIB.H,在编译选项(BUILD OPTION)中要添加DSPLIB.H的路径,这样就OK了
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

8
 
顺便问个问题,我用的5509,为什么没有看到CFFT32()的库函数?我也想用32位的库函数,16位的精度损失太大了。我先用CFFT()求出结果后,再用此结果做CIFFT(),但由于库函数都是16位的,所以我不得不舍弃低位,造成了精度损失,应该怎么解决,能找到CFFT32()的库函数吗
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表