收藏 分销(赏)

DSP-FFT实验报告.doc

上传人:丰**** 文档编号:4282988 上传时间:2024-09-03 格式:DOC 页数:15 大小:248KB 下载积分:8 金币
下载 相关 举报
DSP-FFT实验报告.doc_第1页
第1页 / 共15页
DSP-FFT实验报告.doc_第2页
第2页 / 共15页


点击查看更多>>
资源描述
DSP技术课程设计 (FFT) 作者姓名:钟 欣 专业名称:电子科学与技术 指导教师:张 双 15 目录 一、 实验结果 3 1.1 正弦信号输入的结果 3 1.2 余弦信号输入的结果 4 心得 5 参考文献 6 附件1 正弦信号程序 7 A1.1 正弦信号fft.c文件 7 A1.2 INRAM.cmd文件 11 附件2 余弦信号程序 12 A2.1 余弦信号fft.c文件 12 一、实验结果 1.1正弦信号输入的结果 1.2余弦信号输入的结果 心得 通过本次的DSP设计课程,我学会了在CCS软件平台上运用C语言编程来实现傅里叶运算。在课程中老师讲解了的基本原理,以及如何通过运用C语言编程来实现。 实验过程中,通过对傅里叶变换的深入了解,以及老师对程序的讲解,我成功的实现了正弦和余弦的傅里叶变换运算,完成了实现要求。这次课程让我对傅里叶变换有了更加深入的了解。 在使用CCS软件时,要注意加上rts.lib文件,避免出错; 还有就是func.h文件要放在工程文件夹里,不然要出错,还有就是int 和float之间的区分。 我经过此次的学习后,无论是傅里叶变换的原理,还是DSP编程方面,都有了很大的提升。这对以后的课程学习提供了坚实的基础。我也从中获益良多。 参考文献 [1]杨明广. C程序设计教材. 四川科学技术出版社, 2012. [2]邹彦. DSP原理及应用(修订版). 电子工业出版社, 2002. [3]吴京. 信号分析与处理(修订版). 电子工业出版社, 2014. 附件1 正弦信号程序 A1.1 正弦信号fft.c文件 /******************************************************* fft.c *******************************************************/ include <math.h> #include <stdlib.h> #include"func.h" #define PI 3.14159265358979323846 #define SAMPLENUMBER 128 void FFT(); void InitForFFT(); void MakeWave(); float INPUT[SAMPLENUMBER],DATA[SAMPLENUMBER]; float fWaveR[SAMPLENUMBER],fWaveI[SAMPLENUMBER],w[SAMPLENUMBER]; float sin_tab[SAMPLENUMBER],cos_tab[SAMPLENUMBER]; main() { int i; InitForFFT(); MakeWave() ; for(i=0;i<SAMPLENUMBER;i++ ) { fWaveR[i]=INPUT[i]; fWaveI[i]=0.0f; w[i]=0.0f; } FFT(fWaveR,fWaveI); for(i=0;i<SAMPLENUMBER;i++) { DATA[i]=w[i]; } while(1); } void FFT(float dataR[SAMPLENUMBER],float dataI[SAMPLENUMBER]) { int x0,x1,x2,x3,x4,x5,x6,xx; int i,j,k,b,p,L; float TR,TI,temp; for( i=0;i<SAMPLENUMBER;i++ ) { x0=x1=x2=x3=x4=x5=x6=0; x0=i&0x01; x1=(i/2)&0x01 ; x2=(i/4)&0x01 ; x3=(i/8)&0x01; x4=(i/16)&0x01; x5=(i/32)&0x01; x6=(i/64)&0x01; xx=x0*64+x1*32+x2*16+x3*8+x4*4+x5*2+x6; dataI[xx]=dataR[i]; } for( i=0;i<SAMPLENUMBER;i++ ) { dataR[i]=dataI[i]; dataI[i]=0; } for( L=1;L<=7;L++) { b=1; i=L-1; while ( i>0 ) { b=b*2; i--; } for(j=0;j<=b-1;j++) { p=1;i=7-L;; while(i>0) { p=p*2;i--; } p=p*j; for(k=j;k<128;k=k+2*b) { 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]; } } } for(i=0;i<SAMPLENUMBER/2;i++) { w[i]=sqrt(dataR[i]*dataR[i]+dataI[i]*dataI[i]); } } void InitForFFT() { int i; for(i=0;i<SAMPLENUMBER;i++) { sin_tab[i]=sin(PI*2*i/SAMPLENUMBER); cos_tab[i]=cos(PI*2*i/SAMPLENUMBER); } } void MakeWave() { int i; for(i=0;i<SAMPLENUMBER;i++) { INPUT[i]=sin(PI*2*i/SAMPLENUMBER*3)*1024; } } /******************************************************* ** End of File *******************************************************/ A1.2 INRAM.cmd文件 /******************************************************* INRAM.cmd *******************************************************/ -stack 0x100 MEMORY { PAGE 0: RESEVE: org 00h len = 0x80 PAGE 0: PROG1: org = 0x0100 len = 0x1200 PAGE 0: VECT: org = 0x0080, len = 0x80 PAGE 1: RESEVE1: org 00h len = 0x1300 PAGE 1: DARAM2: org = 0x1300 len = 0x400 PAGE 1: DARAM1: org = 0x1700 len = 0x2900 } SECTIONS{ .text : > PROG1 PAGE 0 .cinit : > PROG1 PAGE 0 .switch: > PROG1 PAGE 0 .vectors:> VECT PAGE 0 .const: > DARAM1 PAGE 1 .bss : > DARAM1 PAGE 1 .stack : > DARAM2 PAGE 1 .system: > DARAM2 PAGE 1 .data : > DARAM2 PAGE 1 } /******************************************************* End of File *******************************************************/ 附件2 余弦信号程序 A2.1 余弦信号fft.c文件 /******************************************************* fft.c *******************************************************/ #include <math.h> #include <stdlib.h> #include"func.h" #define PI 3.14159265358979323846 #define SAMPLENUMBER 128 void FFT(); void InitForFFT(); void MakeWave(); float INPUT[SAMPLENUMBER],DATA[SAMPLENUMBER]; float fWaveR[SAMPLENUMBER], fWaveI[SAMPLENUMBER],w[SAMPLENUMBER]; float sin_tab[SAMPLENUMBER],cos_tab[SAMPLENUMBER]; main() { int i; InitForFFT(); MakeWave() ; for(i=0;i<SAMPLENUMBER;i++ ) { fWaveR[i]=INPUT[i]; fWaveI[i]=0.0f; w[i]=0.0f; } FFT(fWaveR,fWaveI); for(i=0;i<SAMPLENUMBER;i++) { DATA[i]=w[i]; } while(1); } void FFT(float dataR[SAMPLENUMBER],float dataI[SAMPLENUMBER]) { int x0,x1,x2,x3,x4,x5,x6,xx; int i,j,k,b,p,L; float TR,TI,temp; for( i=0;i<SAMPLENUMBER;i++ ) { x0=x1=x2=x3=x4=x5=x6=0; x0=i&0x01; x1=(i/2)&0x01 ; x2=(i/4)&0x01 ; x3=(i/8)&0x01; x4=(i/16)&0x01; x5=(i/32)&0x01; x6=(i/64)&0x01; xx=x0*64+x1*32+x2*16+x3*8+x4*4+x5*2+x6; dataI[xx]=dataR[i]; } for( i=0;i<SAMPLENUMBER;i++ ) { dataR[i]=dataI[i]; dataI[i]=0; } for( L=1;L<=7;L++) { b=1; i=L-1; while ( i>0 ) { b=b*2; i--; } for(j=0;j<=b-1;j++) { p=1;i=7-L;; while(i>0) { p=p*2;i--; } p=p*j; for(k=j;k<128;k=k+2*b) { 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]; } } } for(i=0;i<SAMPLENUMBER/2;i++) { w[i]=sqrt(dataR[i]*dataR[i]+dataI[i]*dataI[i]); } } void InitForFFT() { int i; for(i=0;i<SAMPLENUMBER;i++) { sin_tab[i]=sin(PI*2*i/SAMPLENUMBER); cos_tab[i]=cos(PI*2*i/SAMPLENUMBER); } } void MakeWave() { int i; for(i=0;i<SAMPLENUMBER;i++) { INPUT[i]=cos(PI*2*i/SAMPLENUMBER*3)*1024; } } /******************************************************* End of File *******************************************************/
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服