数字信号处理快速傅里叶变换FFT实验报告Word文件下载.docx

上传人:b****3 文档编号:14350707 上传时间:2022-10-22 格式:DOCX 页数:18 大小:691.82KB
下载 相关 举报
数字信号处理快速傅里叶变换FFT实验报告Word文件下载.docx_第1页
第1页 / 共18页
数字信号处理快速傅里叶变换FFT实验报告Word文件下载.docx_第2页
第2页 / 共18页
数字信号处理快速傅里叶变换FFT实验报告Word文件下载.docx_第3页
第3页 / 共18页
数字信号处理快速傅里叶变换FFT实验报告Word文件下载.docx_第4页
第4页 / 共18页
数字信号处理快速傅里叶变换FFT实验报告Word文件下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

数字信号处理快速傅里叶变换FFT实验报告Word文件下载.docx

《数字信号处理快速傅里叶变换FFT实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《数字信号处理快速傅里叶变换FFT实验报告Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。

数字信号处理快速傅里叶变换FFT实验报告Word文件下载.docx

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

一、实验目的

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),中层循环体进行不同组(运算系数相同的蝶形运算对视作一组),内层循环对每组内各运算对进行蝶形运算。

同级运算的相邻两组运算系数满足以下表达式:

五、实验结果与分析

由结果分析出:

采样率、时域采样点数、频率采样点数对信号频谱的影响较大。

采样率越低,截止频率越高更易产生混叠,发生混叠时,采样后的频谱无法反映出原频谱,也无法利用内插恢复成原来的信号;

时域采样点数决定影响频率泄露的情况;

频域采样点数决定了频域分辨率,决定是否影响栅栏效应的出现。

六、思考题

如下图,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运算后的幅度特性没有改变

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

七、MATLAB程序代码

clc;

clear;

clf;

%数据初始设定

pi=3.149;

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);

ifflag_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为首元次序

forl=1:

N

X(l)=x(addr(l));

%在X内存放按变址后顺序的x

%FFT运算

d1=1;

form=1:

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

d2=d1;

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

d1=d1*2;

%d1是两个同级蝶形运算对的距离

W=1;

%蝶形运算系数的初始值

dw=exp(-1i*pi/d2);

%蝶形运算系数变化量

fort=1:

d2

forp=t:

d1:

N

q=p+d2;

ifq>

Nbreak;

else

tmp=X(q)*W;

X(q)=X(p)-tmp;

X(p)=X(p)+tmp;

%蝶形运算过程

end

W=W*dw;

%蝶形运算系数变化

X=X/max(abs(X));

X

subplot(2,2,1);

t=0:

0.0000001:

N*T;

plot(t,sin(2*pi*f*t+xdefault));

%输入信号

subplot(2,2,2);

stem(k,x);

%采样后的离散信号

subplot(2,2,3);

stem(k,abs(X)/max(abs(X)));

%程序运算出的FFT

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1