西安交通大学数字信号处理实验报告_快速傅里叶变换

  • 格式:docx
  • 大小:1.27 MB
  • 文档页数:18

下载文档原格式

  / 18
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字信号处理

实验报告

姓名:______***______ 学号:____**********____ 班级:_____电信硕23_____ 实验日期:2014年10月15日提交日期:2014年10月23日

实验一快速傅里叶变换与信号频谱分析

一、实验目的

1.在理论学习的基础上,通过本实验加深对离散傅里叶变换的理解;

2.熟悉并掌握按时间抽取编写快速傅里叶变换(FFT)算法的程序;

3.了解应用FFT进行信号频谱分析过程中可能出现的问题,例如频谱混淆、泄漏、栅

栏效应等,以便在实际中正确使用FFT算法进行信号处理。

二、实验内容

1.仔细分析教材第六章“时间抽取法FFT的FORTRAN程序”,编写出相应的使用

FFT进行信号频谱分析的Matlab程序。

2.用FFT程序分析正弦信号,分别在以下情况进行分析,并讨论所得的结果:

a) 信号频率F=50Hz,采样点数N=32,采样间隔T=0.000625s;

b) 信号频率F=50Hz,采样点数N=32,采样间隔T=0.005s;

c) 信号频率F=50Hz,采样点数N=32,采样间隔T=0.0046875s;

d) 信号频率F=50Hz,采样点数N=32,采样间隔T=0.004s;

e) 信号频率F=50Hz,采样点数N=64,采样间隔T=0.000625s;

f) 信号频率F=250Hz,采样点数N=32,采样间隔T=0.005s;

g) 将c)中信号后补32个0,做64点FFT,并与直接采样64个点做FFT的结果进

行对比。

3.思考题:

1) 在实验a)、b)、c)和d)中,正弦信号的初始相位对频谱图中的幅度特性是否有影

响?为什么?

2) 信号补零后做FFT是否可以提高信号频谱的分辨率?为什么?

三、实验要求

1.记录实验内容中各种情况下的X (k)值,做出频谱图并深入讨论结果,说明参数的变

化对信号频谱产生哪些影响。频谱只做幅度特性,并按照幅度最大值进行归一化。

2.打印出编写的FFT源程序,并且在每一小段处加上详细的注释说明。

3.用Matlab编写FFT程序时,要求采用人机界面形式:N,T,F以及初始相位等变

量均由键盘输入,补零或不补零要求设置一开关来选择。

4.回答思考题,撰写实验报告。

四、设计思路

4.1码位倒置

按实验要求,需要对正弦信号进行采样,采样后信号按顺序储存,但此刻DFT运算结果是乱序的,因此需要根据结果所需要的顺序进行码位倒置的变址操作。

变址的实现方法是:将原址用二进制表示后左右翻转,再转回十进制。需要注意的是

MATLAB中数组首元素序号为1,所以在十进制转二进制之前地址需要减1,二进制转十进制之后需要加1。

4.2 蝶形运算

蝶形运算使用三层循环结构,外层循环控制级数m的递推(1 ~ log2N),中层循环体进行不同组(运算系数相同的蝶形运算对视作一组),内层循环对每组内各运算对进行蝶形运算。同级运算的相邻两组运算系数满足以下表达式:

W1=1,W i=W i−1∗e−j

π2m−1

五、实验结果与分析

a)信号频率F=50Hz,采样点数N=32,采样间隔T=0.000625s;

b)信号频率F=50Hz,采样点数N=32,采样间隔T=0.005s;

c)信号频率F=50Hz,采样点数N=32,采样间隔T=0.0046875s;

d)信号频率F=50Hz,采样点数N=32,采样间隔T=0.004s;

e)信号频率F=50Hz,采样点数N=64,采样间隔T=0.000625s;

f)信号频率F=250Hz,采样点数N=32,采样间隔T=0.005s;

g)将c)中信号后补32个0,做64点FFT,并与直接采样64个点做FFT的结果进行

对比。

由结果分析出:采样率、时域采样点数、频率采样点数对信号频谱的影响较大。采样率越低,截止频率越高更易产生混叠,发生混叠时,采样后的频谱无法反映出原频谱,也无法利用内插恢复成原来的信号;时域采样点数决定影响频率泄露的情况;频域采样点数决定了频域分辨率,决定是否影响栅栏效应的出现。

六、思考题

1)在实验a)、b)、c)和d)中,正弦信号的初始相位对频谱图中的幅度特性是否有影

响?为什么?

如下图,a)中初始相位分别为0、0.25π、0.5π、0.75π时,幅度特性并无变化。

题b)初始相位分别为0、0.25π时,幅度特性无变化。

c)的初始相位为0、0.25π、0.5π、0.75π时,幅度特性没有变化。

d)初始相位分别为0、0.25π时,幅度特性没有变化。

综上,改变初始相位不会改变信号频率、采样间隔等参数,因此也就不会对幅度特性产生影响。c)、d)中有部分频率下归一化后的值有所改变是因为复数运算精度问题,FFT 运算后的幅度特性没有改变

2)信号补零后做FFT是否可以提高信号频谱的分辨率?为什么?

频谱分辨率Fs/N发生了变化,以c)、g)为例,因为采样点数N由32提升到64,分辨率也有所改变。

七、MATLAB程序代码

clc;clear;clf;

%数据初始设定

clear;

pi=3.14159265358979;

f=input('信号频率:');

N=input('采样点数:');

T=input('采样时间间隔:');

xdefault=input('初始相位(pi):');

flag_zero=input('是否补零(1/0):');

%生成离散信号过程

x=sin(2*pi*f*(0:N-1)*T+xdefault*pi);

if flag_zero==1

nz=input('补零个数:');

x=[x,zeros(1,nz)]; %补零

N=N+nz;

else

end

%变址过程

k=0:N-1;

addr=bi2de(fliplr(de2bi(k,length(de2bi(N-1)))))+1; %末尾+1是因为matlab数组以1为首元次序

for l=1:N

X(l)=x(addr(l)); %在X内存放按变址后顺序的x

end

%FFT运算

d1=1;

for m=1:log2(N) %m是FFT的级数,满足2^m=N

d2=d1; %d2是两个蝶形运算元的距离

d1=d1*2; %d1是两个同级蝶形运算对的距离

W=1; %蝶形运算系数的初始值

dw=exp(-1i*pi/d2); %蝶形运算系数变化量

for t=1:d2

for p=t:d1:N

q=p+d2;