实验五利用DFT分析模拟信号频谱.docx

上传人:b****3 文档编号:3065817 上传时间:2022-11-17 格式:DOCX 页数:14 大小:2.71MB
下载 相关 举报
实验五利用DFT分析模拟信号频谱.docx_第1页
第1页 / 共14页
实验五利用DFT分析模拟信号频谱.docx_第2页
第2页 / 共14页
实验五利用DFT分析模拟信号频谱.docx_第3页
第3页 / 共14页
实验五利用DFT分析模拟信号频谱.docx_第4页
第4页 / 共14页
实验五利用DFT分析模拟信号频谱.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

实验五利用DFT分析模拟信号频谱.docx

《实验五利用DFT分析模拟信号频谱.docx》由会员分享,可在线阅读,更多相关《实验五利用DFT分析模拟信号频谱.docx(14页珍藏版)》请在冰豆网上搜索。

实验五利用DFT分析模拟信号频谱.docx

实验五利用DFT分析模拟信号频谱

实验报告

实验课程:

数字信号处理实验开课时间:

2020—2021学年秋季学期实验名称:

利用DFT分析模拟信号频谱实验时间:

2020年9月27日星期日

学院:

物理与电子信息学院年级:

大三班级:

182学号:

184********34姓名:

武建璋

实验目的要求

应用离散傅里叶变换DFT分析模拟信号x(t)的频谱,深刻理解利用DFT分析模拟信号频谱的原理、分析过程中出现的现象及解决方法。

实验仪器用具

装有Matlab的计算机一台

 

 

 

连续周期信号相对于离散周期信号,连续非周期信号相对于离散非周期信号,都可以通过时域抽样定理建立相互关系。

因此,在离散信号的DFT分析方法基础上,增加时域抽样的步骤,就可以实现连续信号的DFT分析。

利用DFT计算连续周期信号的频谱

分析步骤为:

(1)确定周期信号的基本周期T0;

(2)计算一个周期内的抽样点数N。

若周期信号的最高次谐频为p次谐波pw0,则频谱中有2p+1根谱线;若周期信号的频谱无限宽,则认为集中信号90%以上(或根据工程允许而定)能量的前(p+1)次谐波为近似的频谱范围,其余谐波忽略不计。

取N>=2p+1;

(3)对连续周期信号以抽样间隔T=T0/N进行抽样,得到x[k];

(4)利用FFT函数对x[k]作N点FFT运算,得到X[m];

(5)最后求得连续周期信号的频谱为X(nw0)=X[m]/N。

利用DFT计算连续非周期信号x(t)的频谱

分析步骤为:

(1)根据时域抽样定理,确定时域抽样间隔T,得到离散序列x[k];

(2)确定信号截短的长度M及窗函数的类型,得到有限长M点

离散序列xM[k]=x[k]w[k];

(3)确定频域抽样点数N,要求N>=M;

(4)利用FFT函数进行N点FFT计算得到N点的X[m];

(5)由X[m]可得连续信号频谱X(jw)样点的近似值。

一、实验预习

实验

方法

步骤

注意事项

实验方法步骤:

(1)打开MATLAB软件

(2)根据题目要求编写程序

(3)运行程序

(4)分析实验结果

(5)关闭计算机

注意事项:

(1)在使用MATLAB时应注意中英输入法的切换,在中文输入法输入程序时得到的程序是错误的;

(2)MATLAB中两个信号相乘表示为x.*u,中间有个‘.’,同样两个信号相除也是如此;

(3)使用MATLAB编写程序时,应新建一个m文件,而不是直接在Comandante窗口下编写程序;

在使用MATLAB编程时,应该养成良好的编写习惯。

注意事项:

(4)对于实验电脑要爱惜,遵守实验的规则。

(5)程序运行前要检查程序是否正确。

在使用matlab编程时,应该养成良好的编写习惯,新建一个flies编写。

一些快捷键的使用,能提高编程效率。

Help能查询到不懂使用的函数使用方法,比如这个用到的fft和fftshift等函数。

实验现象

实验数据记录

【例1.5.1】

已知周期信号x(t)=cos(10*pi*t)+2sin(18*pi*t),计算其频谱。

解:

信号基频

0=2*pirad/s,周期T=1;最高次谐频为9*

0=18*pirad/s,所以N≥(2*9+1=19),程序如下:

%example1_5_1……

clc,clear,closeall

T0=1;

N=19;

T=T0/N;

t=0:

T:

T0;

x=cos(2*pi*5*t)+2*sin(2*pi*9*t);

Xm=fft(x,N);

f=(-(N-1)/2:

(N-1)/2)/N/T;

stem(f,abs(fftshift(Xm)));

xlabel('f(Hz)');

ylabel('f(Magnitube)');

title('幅度谱');

【例1.5.2】

利用DFT近似分析连续信号x(t)=exp(-t)*u(t)的幅度谱并理论值比较。

fsam=50;

Tp=6;

N=512;

T=1/fsam;

t=0:

T:

Tp;

x=exp(-1*t);

X=T*fft(x,N);

subplot(2,1,1);

plot(t,x);

xlabel('t');

title('时域波形');

w=(-N/2:

N/2-1)*(2*pi/N)*fsam;

y=1./(j*w+1);

subplot(2,1,2);

plot(w,abs(fftshift(X)),w,abs(y),'r-.');

title('幅度谱');

xlabel('w');

legend('理论值','计算值',0);

axis([-10,10,0,1.4])

实验内容

1.利用FFT分析信号

的频谱。

(1)确定DFT计算的各参数(抽样间隔,截短长度,频谱分辨率等);

(2)比较理论值与计算值,分析误差原因,提出改善误差的措施。

%5_1_1……

clc,clear,closeall

T0=1;

N=19;

T=T0/N;

t=0:

T:

T0;

x=exp(-2*t)

Xm=fft(x,N);

f=(-(N-1)/2:

(N-1)/2)/N/T;

stem(f,abs(fftshift(Xm)));

xlabel('f(Hz)');

ylabel('f(Magnitube)');

title('幅度谱');

%5_1_2……

clc,clear,closeall

fsam=50;

Tp=6;

N=512;

T=1/fsam;

t=0:

T:

Tp;

x=exp(-2*t);

X=T*fft(x,N);

subplot(2,1,1);

plot(t,x);

xlabel('t');

title('时域波形');

w=(-N/2:

N/2-1)*(2*pi/N)*fsam;

y=1./(j*w+1);

subplot(2,1,2);

plot(w,abs(fftshift(X)),w,abs(y),'r-.');

title('幅度谱');

xlabel('W');

legend('理论值','计算值',0);

axis([-10,10,0,1.4]);

2.分析周期信号

频谱时,如果分析长度不为整周期,利用fft函数计算并绘出其频谱,总结对周期信号进行频谱分析时,如何选取信号的分析长度。

%5_2……

clc,clear,closeall

T0=1.5;%周期不为整数时,如1.5时分析

N=19;

T=T0/N;

t=0:

T:

T0;

x=cos(2*pi*5*t)+2*sin(2*pi*9*t);

Xm=fft(x,N);

f=(-(N-1)/2:

(N-1)/2)/N/T;

stem(f,abs(fftshift(Xm)));

xlabel('f(Hz)');

ylabel('f(Magnitube)');

title('幅度谱');

3.假设一实际测得的一段信号的长度为0.4s,其表达式为x(t)=cos(2pf1t)+0.75cos(2pf2t)其中f1=100Hz,f2=110Hz。

当利用FFT近似分析该信号的频谱时,需要对信号进行时域抽样。

试确定一合适抽样频率fsam,利用DFT分析信号x(t)的频谱。

若在信号截短时使用Hamming窗,由实验确定能够分辨最小谱峰间隔Df和信号长度Tp的关系。

若采用不同参数的Kaiser窗,重新确定能够分辨最小谱峰间隔Df和信号长度Tp的关系。

%5_3……

clc,clear,closeall

fsam=440;

Tp=0.4;

N=55;

T=1/fsam;

t=0:

T:

Tp;

f1=100;f2=110;

x=cos(2*pi*f1*t)+sin(2*pi*f2*t);

Xm=fft(x,N)/N;

f=(-(N-1)/2:

(N-1)/2)/N/T;

subplot(2,1,1);

stem(f,abs(fftshift(Xm)));

xlabel('f(Hz)');

ylabel('magnitude');

title('幅度谱N=440');

fsam=440;

Tp=0.4;

N=55;

T=1/fsam;

t=0:

T:

Tp;

N=Tp/T+1;

f1=100;f2=110;

y=cos(2*pi*f1*t)+0.75*sin(2*pi*f2*t);

w=0.54-0.46*cos(2*pi*t/(N-1));

x=y.*w;

Xm=fft(x,N)/N;

f=(-(N-1)/2:

(N-1)/2)/N/T;

subplot(2,1,2);

stem(f,abs(fftshift(Xm)));

xlabel('f(Hz)');

ylabel('magnitude');

二、实验内容

实验数据处理及实验

结果分析总结

通过本次实验,我学会应用离散傅里叶变换(DFT),分析连续信号x[k]的频谱。

深刻理解利用DFT分析模拟信号频谱的原理、分析过程中出现的现象及解决方法。

经验:

学习使用matlab快捷键很重要,能大大提高编程效率。

比如方向键的上键能快速输入上次的内容;ctrl+r键全部注释,ctrl+t键取消全部注释(选中的部分);另外,每次编写之前都写一句:

clc,clear,closeall,清除工作空间及面板,这样不会受上一次的操作影响等,使用matlab的help能查找到不熟悉的函数使用方法。

另外,截图时采用Figure中的Edit->CopyFigure以减少图片所占容量,便于编辑。

还可以通过File->SaveAs…保存不同格式的figure图片,便于其他地方其他格式时使用。

通过利用DFT分析模拟信号频谱更加熟悉了matlab的关于傅里叶变换的一些函数及功能作用。

问题

讨论

(1)既然可以直接由DTFT定义计算序列DTFT,为何利用DFT分析序列的频谱?

答:

DFT对于分析有限的频谱更为方便。

(2)若序列持续时间无限长,且无解析表达式,如何利用DFT分析其频谱?

答:

利用其窗函数分析其频谱。

(3)利用DFT分析离散信号频谱时会出现哪些误差?

如何克服或改善?

答:

频率分不出,应该多抽取些。

(4)在利用DFT分析离散信号的频谱时,如何选择窗函数?

答:

根据每个窗函数不同的特性,去选择窗函数

(5)序列补零和增加序列长度都可以提高频率分辨率么?

两者有何本质区别?

答:

可以,序列补零可以使序列的频谱变得更为细致,但不能提高序列的频率分辨率,只有采集更多的有效数据,才能得到序列的高分辨率频谱。

实验成绩评定

 

指导老师签名:

年月日

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

当前位置:首页 > 法律文书 > 调解书

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

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