西南交大DSP实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FFT实验报告
1.首先启动CCS,打开实验工程文件,对其中主程序文件按要求进行补充、编译并装载程序。
FFT点数为256点,时域信号为60Hz和180Hz情况下,按要求作图,三个图的参数设置分别为:
图形结果为
A、时域信号波形为:
B、对应谱:
C、FFT输出结果
2. 修改代码为时域信号为60Hz和160Hz两个信号相乘,重复上面作图步骤。结果为:
A、时域信号波形为:
B、对应谱:
C、FFT输出结果:
分析:在修改代码后,频谱的两个峰值发生了变化,其中第一个峰值仍保持在60Hz处,而第二个峰值则由180Hz转移到了160Hz处。由此可见,频谱是刚好对应了时域相乘的两个信号的频率。
3. 在实验代码基础上修改代码为1024点FFT,进行程序的编译、运行和对应结果的查看代码主要有如下所示几处修改:
(1)
#define Sample_Numb 1024 // FFT点数 #define Sample_Numb 1024
(2)
void fft(float datar[Sample_Numb],float datai[Sample_Numb])
{
int x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,xx;
int i,j,k,b,p,L;
float TR,TI,temp;
for(i=0;i { x0=x1=x2=x3=x4=x5=x6=x7=x8=x9=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;x7=(i/128)&0x01; x8=(i/256)&0x01;x9=(i/512)&0x01; xx=x0*512+x1*256+x2*128+x3*64+x4*32+x5*16+x6*8+x7*4+x8*2+x9; datai[xx]=datar[i]; } (3) for(L=1;L<=10;L++) { b=1;i=L-1; while(i>0) { b=b*2;i--; } for(j=0;j<=b-1;j++) { p=1;i=10-L; while(i>0) { p=p*2;i--;} p=p*j; for(k=j;k<1024;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]; } }// } 图形结果为: A、时域信号波形为: B、对应谱: C、FFT输出结果 这一问对输出入信号做FFT变换的点数为1024点,时域信号为60Hz和180Hz的两个波形相加,时域信号采样率为800Hz,因此输入信号对应频谱出现峰值的频率点在60Hz 和180Hz两点,N=1024,Fs=800 Hz,可以分辨到(800/1024)秒,图C所示的FFT输出结果中,第一个峰值点频率约为76.875 Hz ,第二个峰值点约为230.4 Hz,76.875*(800/1024)=60 Hz,230.4 *(800/1024)=180 Hz。 将此问和第四问相比较,第四问FFT点数是256,采样率是800 Hz,因此其频率分辨率为(800/256)秒;此问中FFT点数是1024,采样率是800 Hz,因此其频率分辨率为(800/1024)秒。比较图形易知1024点FFT的分辨率比256点的频率分辨率好,同时可以得到结论:要提高频率分辨率,则必须增加采样点数,即采样时间,频率分辨率和采样时间是倒数关系。同时,可以得到,FFT输出频谱中出现峰值点对应的频率可以通过输入信号的频率除以频率分辨率得到,用以检验FFT输出结果是否正确。