FFT程序设计.docx
- 文档编号:7282474
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:9
- 大小:102.21KB
FFT程序设计.docx
《FFT程序设计.docx》由会员分享,可在线阅读,更多相关《FFT程序设计.docx(9页珍藏版)》请在冰豆网上搜索。
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')
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FFT 程序设计