云南师范大学DSP数字信号处理实验报告5.docx
《云南师范大学DSP数字信号处理实验报告5.docx》由会员分享,可在线阅读,更多相关《云南师范大学DSP数字信号处理实验报告5.docx(14页珍藏版)》请在冰点文库上搜索。
![云南师范大学DSP数字信号处理实验报告5.docx](https://file1.bingdoc.com/fileroot1/2023-5/21/6199def4-82ea-4d4f-8bf2-9c63aae22072/6199def4-82ea-4d4f-8bf2-9c63aae220721.gif)
云南师范大学DSP数字信号处理实验报告5
本科学生实验报告
学号114090395姓名李华福
学院物电学院专业、班级11电子
实验课程名称数字信号处理(实验)
教师及职称李宏宁
开课学期第三至第四学年下学期
填报时间2014年4月9日
云南师范大学教务处编印
实验序号
05
实验名称
利用DFT分析模拟信号频谱
实验时间
2014年4月9
实验室
云南师范大学同析3栋数字信号处理实验室
一.实验预习
1.实验目的
应用离散傅里叶变换DFT分析模拟信号x(t)的频谱,深刻理解利用DFT分析模拟信号频谱的原理、分析过程中出现的现象及解决方法。
2.实验原理、实验流程或装置示意图
连续周期信号相对于离散周期信号,连续非周期信号相对于离散非周期信号,都可以通过时域抽样定理建立相互关系。
因此,在离散信号的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)样点的近似值。
3.实验设备及材料
一台带matlab软件的计算机。
4.实验方法步骤及注意事项
实验方法步骤:
(1)打开MATLAB软件
(2)根据题目要求编写程序
(3)运行程序
(4)分析实验结果
(5)关闭计算机
注意事项:
(1)对于实验电脑要爱惜,遵守实验的规则。
(2)程序运行前要检查程序是否正确。
⏹在使用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('幅度谱');
与列1_5_1的图形对比如下:
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');
4.产生一个淹没在噪声中的信号x(t),例如由50Hz和120Hz的正弦信号以及一个零均值的随机噪声叠加而成。
确定抽样间隔和信号截短长度,分析信号的频谱,指出50Hz和120Hz的正弦成分对应的谱峰位置,详细写出检测信号的步骤和原理。
%5_4……
clc,clear,closeall
fsam=480;Tp=0.4;
N=55;T=1/fsam;
t=0:
T:
Tp;f1=50;f2=120;
x=cos(2*pi*f1*t)+0.75*sin(2*pi*f2*t);
Xm=fft(x,N)/N;f=(-(N-1)/2:
(N-1)/2)/N/T;
stem(f,abs(fftshift(Xm)));
xlabel('f(Hz)');ylabel('magnitude');
title('幅度谱');
2.对实验现象、实验结果的分析及其结论
通过本次实验,我学会应用离散傅里叶变换(DFT),分析连续信号x[k]的频谱。
深刻理解利用DFT分析模拟信号频谱的原理、分析过程中出现的现象及解决方法。
经验:
学习使用matlab快捷键很重要,能大大提高编程效率。
比如方向键的上键能快速输入上次的内容;ctrl+r键全部注释,ctrl+t键取消全部注释(选中的部分);另外,每次编写之前都写一句:
clc,clear,closeall,清除工作空间及面板,这样不会受上一次的操作影响等,使用matlab的help能查找到不熟悉的函数使用方法。
另外,截图时采用Figure中的Edit->CopyFigure以减少图片所占容量,便于编辑。
还可以通过File->SaveAs…保存不同格式的figure图片,便于其他地方其他格式时使用。
通过利用DFT分析模拟信号频谱更加熟悉了matlab的关于傅里叶变换的一些函数及功能作用。
教师评语及评分:
签名:
年月日