FFT程序设计.docx

上传人:b****6 文档编号:7282474 上传时间:2023-01-22 格式:DOCX 页数:9 大小:102.21KB
下载 相关 举报
FFT程序设计.docx_第1页
第1页 / 共9页
FFT程序设计.docx_第2页
第2页 / 共9页
FFT程序设计.docx_第3页
第3页 / 共9页
FFT程序设计.docx_第4页
第4页 / 共9页
FFT程序设计.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

FFT程序设计.docx

《FFT程序设计.docx》由会员分享,可在线阅读,更多相关《FFT程序设计.docx(9页珍藏版)》请在冰豆网上搜索。

FFT程序设计.docx

FFT程序设计

西南科技大学

课程设计报告

 

课程名称:

数字通信课程设计

设计名称:

FFT程序设计

姓名:

学号:

班级:

指导教师:

起止日期:

2011.6.21-2011.7.3

西南科技大学信息工程学院制

课程设计任务书

学生班级:

学生姓名:

学号:

设计名称:

FFT程序设计

起止日期:

2011.6.21-2011.7.3指导教师:

设计要求:

1.构建一个无限长时域序列x(n)

1)截取序列x(n)的长度M=15,得新序列x’(n),又将x’(n)后添加10个零得到序列x’’(n),用DFT公式计算x’(n),x’’(n)的变换值,并用FFT计算x’(n)频谱,对比结果,观察栅栏效应。

2)截取序列x(n)的长度M=30,得新序列y’(n),用FFT计算y’(n)频谱,对比x’(n),

y’(n)的频谱,观察频谱泄露现象。

2.构筑一个信号,由100HZ,200HZ,1000HZ三种频率的正弦波组成,用FFT计算信号的频谱,设计滤波器,保留100HZ,200HZ频率的信号,从时域和频域两个角度,比较滤波器输入、输出信号。

扩展要求:

对已知载波频率的调制信号,用FFT分析其频谱并实现信号解调,得到原基带信号。

课程设计学生日志

时间

设计内容

6.30

查阅资料,确定方案

7.1

设计总体方案,程序流程

7.2~7.3

主程序代码设计

7.2~7.3

撰写设计报告,修改程序细节

7.4

答辩

课程设计考勤表

星期一

星期二

星期三

星期四

星期五

课程设计评语表

指导教师评语:

 

 

成绩:

指导教师:

年月日

FFT程序设计

一、设计目的和意义

FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域。

有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。

二、设计原理

1、FFT算法的基本原理是把长序列的DFT逐次分解为较短序列的DFT.按照抽取方式的不同可分为DIT-FFT(按时间抽取)和DIF-FFT(按频率抽取)算法.按照蝶形运算的构成不同可分为基2、基4、基8以及任意因子。

 

8点FFT流程图

2、滤波器是一种选频装置,可以使信号中特定的频率成分通过,而极大衰减其它频率成分。

在测试装置中,利用滤波器的这种选频作用,可以滤除干扰噪声或进行频谱分析,在解调中,可以滤出有用信号。

本设计采用窗函数设计。

三、详细设计步骤

1、构建一个无限长时域序列x(n)

由于matlab无法产生无限长的序列,当长度大于一定值时,近似等于无限长时序。

设计时截取的长度为500。

利用y=randn(1,500)产生500个随机数x(n),用plot函数画出图形如下:

x_n=randn(1,500);

plot(x_n),title('随即信号500个点'),ylabel('信'),xlabel('t')

2、截取序列x(n)的长度M=15,得新序列x’(n),又将x’(n)后添加10个零得到序列x’’(n),用DFT公式计算x’(n),x’’(n)的变换值,并用FFT计算x’(n)频谱,对比结果,观察栅栏效应。

编写代码利用matlab仿真结果如下图:

x1即x’(n),x2即x’’(n)

3、截取序列x(n)的长度M=30,得新序列y’(n),用FFT计算y’(n)频谱,对比x’(n),y’(n)的频谱,观察频谱泄露现象

 

4、构筑一个信号,由100HZ,200HZ,1000HZ三种频率的正弦波组成,其时域和频域图如下:

5、设计滤波器,保留100HZ,200HZ频率的信号,抽样频率取fs=2000。

6、上述信号经过滤波器后画出其时域图和频谱图。

如图所示:

 

四、设计结果及分析

本次设计实现了数字信号和模拟信号的FFT,DFT变换,由于采样点数少,可以明显观察到栅栏效应,实现了信号的滤波还原,了解了模拟信号的调制解调与滤波。

实现了基本要求,各项功能正常达到了实验的要求。

五、体会

第一次做基于Matlab的课程设计,理论知识也没学的太好,开始的时候无从下手。

只好从课本和网上收集资料。

几天的时间使我收获颇多。

很多代码都借鉴了网上的,经过自己的修改和重新运行仿真。

总算完成了题目所要求的内容,同时,对有关于FFT的理论知识也有了一个更加清晰的认识,对FFT的算法也有了更加深刻的理解。

在做课程设计的过程中,我学会了如何去思考,如何充分有效的安排自己的时间,提高效率。

这对以后的学习和工作都是很有帮助的。

六、参考文献

[1]程佩青.数字信号处理教程(第三版).清华大学出版社,2010.5

[2]张威.Matlab基础与编程入门(第二版).西安电子科技大学出版社,2008.1

七、附代码

定义Dft函数:

functionX=dft(x,N)

n=0:

1:

N-1;

k=0:

1:

N-1;

WN=exp(-j*2*pi/N);

nk=n'*k;

WNnk=WN.^nk;

X=x*WNnk;

主程序:

x0=randn(1,500);

x1=x0(1:

15);

z=zeros(1,10);

n1=1/25:

1/25:

1;

n2=1/15:

1/15:

1;

x2=[x1,z];

y1=dft(x1,15);

y2=dft(x2,25);

y11=fft(x1);

yw1=abs(y1);

yw2=abs(y2);

yw11=abs(y11);

figure

(1)

plot(x0),title('随即信号500个点'),ylabel('信号值'),xlabel('t')

figure

(2)

subplot(3,1,1),stem(n2,yw1,'.'),title('x1的dft图'),xlabel('t')

subplot(3,1,2),stem(n1,yw2,'.'),title('x2的dft图'),xlabel('t')

subplot(3,1,3),stem(n2,yw11,'.'),title('x1的fft'),xlabel('t')

y0=x0(1:

30);

nt=1/30:

1/30:

1;

y1=abs(fft(y0));

figure(3)%用来画30点的fft波形

subplot(2,1,1),stem(nt,y1,'.'),title('y1的fft图'),xlabel('t')

subplot(2,1,2),stem(n2,yw11,'.'),title('x1的fft'),xlabel('t')

fs=2200;

m=(0.3*200)/(fs/2);

M=round(8/m);

N=M-1;

b=fir1(N,30*12/(fs/2));

[h,f]=freqz(b,1,512);

figure(4)

plot(f*fs/(2*pi),20*log10(abs(h)))%

xlabel('频率');

t=0:

1/fs:

1;

s=sin(2*pi*100*t)+sin(2*pi*200*t)+sin(2*pi*1000*t);

figure(5)

subplot(2,1,1)

plot(t,s);

xlabel('时间')

subplot(2,1,2)

SK=fft(s,512);

SXK=abs(SK);

f=(0:

255)*fs/512;

plot(f,SXK(1:

256))

xlabel('频率/Hz')

figure(6)

sf=filter(b,1,s);

subplot(2,1,1)

plot(t,sf)

xlabel('时间')

axis([0.20.5-22])

subplot(2,1,2)

SFK=fft(sf,512);

SFXK=abs(SFK);

f=(0:

255)*fs/512;

plot(f,SFXK(1:

256))

xlabel('频率/Hz')

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

当前位置:首页 > 医药卫生 > 药学

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

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