数字信号处理实验五(实验箱)报告Word格式.docx
《数字信号处理实验五(实验箱)报告Word格式.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验五(实验箱)报告Word格式.docx(8页珍藏版)》请在冰豆网上搜索。
![数字信号处理实验五(实验箱)报告Word格式.docx](https://file1.bdocx.com/fileroot1/2022-10/4/838edc02-6e1b-4d13-af9b-41fc66445ad0/838edc02-6e1b-4d13-af9b-41fc66445ad01.gif)
2、熟悉FFT算法原理和FFT子程序的应用;
3、学习用FFT对连续信号和时域信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。
二、实验原理与步骤:
(一)实验原理:
1、离散傅立叶变换DFT的定义:
将时域的采样变换成频域的周期性离散函数,频域的采样也可以变换成时域的周期性离散函数,这样的变换称为离散傅立叶变换,简称DFT。
2、FFT是DFT的一种快速算法,将DFT的N2步运算减少为(N/2)log2N步,极大的提高了运算的速度。
3、旋转因子的变化规律。
4、蝶形运算规律。
5、基-2FFT算法。
(二)实验步骤:
1、复习DFT的定义、性质和用DFT作谱分析的有关内容;
2、复习FFT算法原理与编程思想,并对照DIT-FFT运算流程图和程序框图,分析本实验提供的FFT样例子程序;
3、运行CCS软件,对样例程序进行跟踪,分析结果;
记录必要的参数。
4、填写实验报告。
5、样例程序实验操作说明
A、实验前准备:
1)正确完成计算机、E300的连接;
2)用音频线连接音源和E300板的MIC_IN,系统上电;
B、实验
启动CCS,Project/Open打开“..\Algorithm\02FFT\example.pjt”工程文件;
双击“example.pjt”及“Source”可查看各源程序;
加载“example.out”;
在主程序中,k++处设置断点;
单击“Run”运行程序,程序将运行至断点处停止;
用View/Graph/Time/Frequency打开一个图形观察窗口;
设置该观察图形窗口变量及参数;
采用双踪观察在启始地址分别为x和mo,长度为1024,数值类型为32位有符号浮点变量,如图所示;
数组x和mo分别存放的是经A/D转换后的语音信号和对该信号进行FFT变换的结果;
单击“Animate”或按F10运行程序;
调整观察窗口并同步观察输入语音信号波形及其FFT变换结果;
单击“Halt”暂停程序运行,关闭窗口,本实验结束。
三、实验内容及结果:
(一)内容:
单击“Animate” 或按F10运行程序;
调整观察窗口并同步观察输入语音信号波形及其FFT变换结果。
(二)实验结果:
a.源程序:
#include"
Config1cfg.h"
//定义包含的库#include<
stdio.h>
#include<
c6x.h>
#include"
c6211dsk.h"
#include<
csl_pll.h>
csl.h>
e300_codec.h>
math.h"
#defineLength1024 //宏定义#defineLen10
//==================================================
intin;
floatx[Length],mo[Length];
floatpr[Length],pi[Length],fr[Length],fi[Length];
//定义数组intxm,i,n,k;
//定义变量
//LeftandrightsignalsamplesunsignedintxL,xR;
voidmain() //主函数
{
unsignedintdat;
init_sys();
initial_aic23();
delay_SYS
(1);
initial_mcbsp1();
//子函数声明
i=0;
//初始化变量
k=0;
n=Length;
for(;
;
) //死循环
for(i=0;
i<
=n-1;
i++)
mcbsp1Rx_ready();
dat=(*(unsignedint*)0x1900000);
//DRR1;
in=(intshort)dat;
//xm=
x[i]=(float)in;
//32768.0;
pr[i]=x[i];
pi[i]=0;
}
kfft(pr,pi,Length,Len,fr,fi,0,1);
i<
i++)
mo[i]=sqrt(fr[i]*fr[i]+fi[i]*fi[i]);
//快速傅里叶变换
k++;
b.图:
下图是输入两个不同的音频信号得到的波形:
改变length的值:
当length=512时:
当length=128时:
五、思考题:
1、对于不同的N,幅频特性会相同吗?
为什么?
答:
对于不同的N,幅频特性不相同,因为他们函数表达式不相同,模不相同。
2、FFT进行谱分析,可以应用在什么方面?
FFT只是DFT的一种快速算法,所以FFT的运算结果必然满足DFT 的基本性质。
可以应用在对周期信号频谱分析和对模拟信号频谱分析。
3、结合实验中所给定典型序列幅频特性曲线,与理论结果比较,并分析说明误差产生的原因以及用FFT作谱分析时有关参数的选择方法。
误差主要来自于用FFT作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时离散谱的包络才能逼近于连续谱,因此N要适当选择大一些。
对信号进行谱分析的重要问题是频谱分辨率D和分析误差。
频谱分辨率直接和FFT
的变换区间N有关,因为FFT能够实现的频率分辨率是2π/N≤D。
可以根据此时选择
FFT的变换区间N。
4、总结实验所得主要结论。
给的输入信号不同,得到的结果也不同。
只有当N较大时离散谱的包络才能逼近于连续谱,因此N要适当选择大一些。
对信号进行频谱分析时,数据样本应有足够的长度,一般FFT程序中所用数据点数与原含有信号数据点数相同,这样的频谱图具有较高的质量,可减小因补零或截断而产生的影响。
周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT,得到的离散谱才能代表周期信号的频谱。
如果不知道信号周期,可以尽量选择信号的观察时间长一些。
对模拟信号的频谱时,首先要按照采样定理将其变成时域离散信号。
如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的谱分析进行。