哈工大数字信号处理实验报告讲解.docx

上传人:b****5 文档编号:7433195 上传时间:2023-01-23 格式:DOCX 页数:24 大小:367.06KB
下载 相关 举报
哈工大数字信号处理实验报告讲解.docx_第1页
第1页 / 共24页
哈工大数字信号处理实验报告讲解.docx_第2页
第2页 / 共24页
哈工大数字信号处理实验报告讲解.docx_第3页
第3页 / 共24页
哈工大数字信号处理实验报告讲解.docx_第4页
第4页 / 共24页
哈工大数字信号处理实验报告讲解.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

哈工大数字信号处理实验报告讲解.docx

《哈工大数字信号处理实验报告讲解.docx》由会员分享,可在线阅读,更多相关《哈工大数字信号处理实验报告讲解.docx(24页珍藏版)》请在冰豆网上搜索。

哈工大数字信号处理实验报告讲解.docx

哈工大数字信号处理实验报告讲解

HarbinInstituteofTechnology

 

数字信号处理

实验报告

 

学生姓名:

江世凯

学号:

1122110307

班级:

1221103

专业:

电子科学与技术

任课教师:

李杨

所在单位:

电子工程系

 

2014年11月

 

实验一、用FFT作谱分析

一、实验目的

(1)进一步加深DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法,所以FFT的运算结果必然满足DFT的基本性质)。

(2)熟悉FFT算法原理和FFT子程序的应用。

(3)学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。

二、实验内容

(1)编制信号产生子程序,产生以下典型信号供谱分析用:

 

(2)画出1中所给出的信号,并逐个进行谱分析。

下面给出针对各信号的FFT变换区间N以及对连续信号x6(t)的采样频率fs,供实验时参考。

x1(n),x2(n),x3(n),x4(n),x5(n):

N=8,16

x6(t):

fs=64(Hz),N=16,32,64(n=0:

1:

69)

(3)令x(n)=x4(n)+x5(n),用FFT计算8点和16点离散傅里叶变换,

X(k)=DFT[x(n)]

(4)令x(n)=x4(n)+jx5(n),重复

(2)。

三、程序框图

 

图1.实验程序框图

四、实验过程

(1)复习DFT的定义、性质和用DFT作谱分析的有关内容。

(2)复习FFT算法原理与编程思想,并对照DIT-FFT运算流图和程序框图,读懂本实验提供的FFT子程序。

(3)编制信号产生子程序,产生以下典型信号供谱分析用:

(4)编写主程序。

(5)按实验内容要求,上机实验,并写出实验报告。

五、实验结果及分析

1.实验结果

(1)对x1(n)进行FFT变换(N=8和N=16)

图2x1(n)进行FFT变换结果

(2)对x2(n)进行FFT变换(N=8和N=16)

图3x2(n)FFT变换结果

(3)对x3(n)进行FFT变换(N=8和N=16)

图4x3(n)FFT变换结果

(4)对x4(n)进行FFT变换(N=8和N=16)

图5x4(n)FFT变换结果

(5)对x5(n)进行FFT变换(N=8和N=16)

图6x5(n)FFT变换结果

(6)对x6(n)进行FFT变换(N=16、N=32和N=64)

图7x6(n)FFT变换结果

(7)对x(n)=x4(n)+x5(n)进行FFT变换(N=8和N=16)

图8x4(n)+x5(n)FFT变换结果

(8)对x(n)=x4(n)+jx5(n)进行FFT变换(N=8和N=16)

图9x4(n)+jx5(n)FFT变换结果

(9)GUI设计结果

 

 

 

2.分析:

(1)在N=8时,x2(n)和x3(n)的幅频特性会相同吗?

为什么?

N=16呢?

答:

在N=8的时候,x3(n)只是x2(n)以它的长度8为周期,将其延拓成周期序列然后加以移位,最后截取主值区间(n=0到8)的序列值,因此x3(n)是x2(n)进行循环位移后的结果。

由于序列的循环位移性质,因此,循环位移只影响到DFT后的相频特性,而不影响幅频特性,因此x2(n)和x3(n)的幅频特性会相同。

若N=16,此时,x2(n)和x3(n)做DFT即为它们分别进行末尾补零后再进行的DFT,则此时两个经过补零以后的序列就不满足循环位移的性质,因此x2(n)和x3(n)的幅频特性就会发生变化。

(2)如果周期信号的周期预先不知道,如何用FFT进行谱分析

答:

在用FFT对信号进行频谱分析时,首先要对信号进行采样,使之变成离散信号,然后就可按照前面的方法用FFT对离散信号进行频谱分析。

按照采样定理,采样频率fs应当大于信号最高频率的2倍。

若预先不知道周期信号的周期,应先适当截取M点进行FFT,再将截取的长度扩大1倍重新截取,比较二者结果,若二者的差别满足分析误差的要求,就可以近似得到该信号的频谱,假若不满足误差要求则继续加倍截取的长度进行FFT,直到结果满足误差要求为止。

 

(3)结合实验中所得给定典型序列幅频特性曲线,与理论结果比较,并分析说明误差产生的原因以及用FFT作谱分析时有关参数的选择方法。

答:

1.误差分析:

1)对于x1(n)理论FFT频谱为一个抽样信号,由图2可以看出,随着采样率的提高,得到的FFT频谱分辨率就越高,当N趋于无限时频谱包络接近理论的抽样函数。

2)序列x2(n)理论FFT频谱为一个抽样函数平方的信号,由图3看出,随着采样率的提高,得到的FFT频谱分辨率就越高,当N趋于无限时频谱包络接近理论的抽样函数。

3)对于x3(n),由图4看出,随着采样率的提高,得到的FFT频谱分辨率就越高,但对于这个函数来说,N仍然过小,因此幅频特性曲线与理论结果有较大差距。

4)序列x4(n)的理论FFT抽样频谱为单位冲激函数,因此只要满足抽样定理,FFT都可以与理论图形一样的曲线。

由图5可以看出,当N=8,16时,满足抽样定理,能够得到与理论一致的曲线。

5)序列x5(n)的理论FFT抽样频谱为单位冲激函数,因此只要满足抽样定理,FFT都可以与理论图形一样的曲线。

由图6可知,当N=8时,不满足抽样定理,因此产生了混叠失真,当N=8时,满足抽样定理,因此可得到与理论曲线一致的图形。

6)序列x6(n)的理论FFT抽样频谱为有三个不同频率分量的单位冲激函数,因此只要满足抽样定理,FFT都可以与理论图形一样的曲线。

当N=16时,不满足抽样定理,因此产生了混叠失真,当N=32,64时,满足抽样定理,因此可得到与理论曲线一致的图形,如图7所示。

7)函数x4(n)+x5(n)理论FFT抽样频谱为有两个不同频率分量的单位冲激函数,因此只要满足抽样定理,FFT都可以与理论图形一样的曲线。

当N=8时,不满足抽样定理,因此产生了混叠失真,当N=16时,满足抽样定理,因此可得到与理论曲线一致的图形,如图8所示。

8)序列x4(n)+jx5(n)理论FFT抽样频谱为有两个不同频率分量的单位冲激函数,因此只要满足抽样定理,FFT都可以与理论图形一样的曲线。

如图9所示,当N=8时,不满足抽样定理,因此产生了混叠失真,当N=16时,满足抽样定理,因此可得到与理论曲线一致的图形。

2.参数选择;

对时间序列做FFT变换时,抽样频率要要一些,从而提高分辨率减小误差,同时抽样频率的选取必须满足抽样定理才能得到与理论相符的曲线。

六、实验源程序

1.对x1(n)进行FFT变换(N=8和N=16)

function[output_args]=Untitled1(input_args)

%UNTITLED1Summaryofthisfunctiongoeshere

%Detailedexplanationgoeshere

clearall;

N=4;

x=[1,1,1,1];

n=0:

N-1;

subplot(3,1,1);

stem(n,abs(x),'g','LineWidth',1.3);

title('x1(n)时间序列');

N=8;

y1=fft(x,N);

n=0:

N-1;subplot(3,1,2);

stem(n,fftshift(abs(y1)),'r','LineWidth',1.3);

holdon;

plot(n,fftshift(abs(y1)),'c','LineWidth',1.3);

title('FFT[x1(n)]:

N=8');

N=16;

y2=fft(x,N);

n=0:

N-1;subplot(3,1,3);

stem(n,fftshift(abs(y2)),'m','LineWidth',1.3);

holdon;

plot(n,fftshift(abs(y2)),'y','LineWidth',1.3);

title('FFT[x1(n)]:

N=16');

2.对x2(n)进行FFT变换(N=8和N=16)

function[output_args]=Untitled2(input_args)

%UNTITLED2Summaryofthisfunctiongoeshere

%Detailedexplanationgoeshere

clearall;

x=[1,2,3,4,4,3,2,1];

N=8;

n=0:

N-1;subplot(3,1,1);

stem(n,abs(x),'k','LineWidth',1.3);

title('x2(n)时间序列');

N=8;

y1=fft(x,N);

n=0:

N-1;subplot(3,1,2);

stem(n,fftshift(abs(y1)),'r','LineWidth',1.3);

holdon;

plot(n,fftshift(abs(y1)),'c--');

title('FFT[x2(n)]:

N=8');

N=16;

y2=fft(x,N);

n=0:

N-1;subplot(3,1,3);

stem(n,fftshift(abs(y2)),'m','LineWidth',1.3);

holdon;

plot(n,fftshift(abs(y2)),'g--');

title('FFT[x2(n)]:

N=16');

3.对x3(n)进行FFT变换(N=8和N=16)

function[output_args]=Untitled3(input_args)

%UNTITLED3Summaryofthisfunctiongoeshere

%Detailedexplanationgoeshere

clearall;

x=[4,3,2,1,1,2,3,4];

N=8;

n=0:

N-1;subplot(3,1,1);

stem(n,abs(x),'k','LineWidth',1.3);

title('x3(n)时间序列');

N=8;

y1=fft(x,N);

n=0:

N-1;subplot(3,1,2);

stem(n,fftshift(abs(y1)),'r','LineWidth',1.3);

holdon;

plot(n,fftshift(abs(y1)),'c--');

title('FFT[x3(n)]:

N=8');

N=16;

y2=fft(x,N);

n=0:

N-1;subplot(3,1,3);

stem(n,fftshift(abs(y2)),'m','LineWidth',1.3);

holdon;

plot(n,fftshift(abs(y2)),'g--');

title('FFT[x3(n)]:

N=16');

4.对x4(n)进行FFT变换(N=8和N=16)

function[output_args]=Untitled3(input_args)

%UNTITLED3Summaryofthisfunctiongoeshere

%Detailedexplanationgoeshere

clearall;

n=0:

15;%读入长度

x=cos(pi/4*n);

subplot(3,1,1);

stem(n,abs(x),'k','LineWidth',1.3);

title('x4(n)时间序列');

N=8;

y1=fft(x,N);

n=0:

N-1;subplot(3,1,2);

stem(n,fftshift(abs(y1)),'r','LineWidth',1.3);

holdon;

plot(n,fftshift(abs(y1)),'c--');

title('FFT[x4(n)]:

N=8');

N=16;

y2=fft(x,N);

n=0:

N-1;subplot(3,1,3);

stem(n,fftshift(abs(y2)),'m','LineWidth',1.3);

holdon;

plot(n,fftshift(abs(y2)),'g--');

title('FFT[x4(n)]:

N=16');

5.对x5(n)进行FFT变换(N=8和N=16)

function[output_args]=Untitled3(input_args)

%UNTITLED3Summaryofthisfunctiongoeshere

%Detailedexplanationgoeshere

clearall;

n=0:

15;%读入长度

x=sin(pi/8*n);;

subplot(3,1,1);

stem(n,abs(x),'k','LineWidth',1.3);

title('x5(n)时间序列');

N=8;

y1=fft(x,N);

n=0:

N-1;subplot(3,1,2);

stem(n,fftshift(abs(y1)),'r','LineWidth',1.3);

holdon;

plot(n,fftshift(abs(y1)),'c--');

title('FFT[x5(n)]:

N=8');

N=16;

y2=fft(x,N);

n=0:

N-1;subplot(3,1,3);

stem(n,fftshift(abs(y2)),'m','LineWidth',1.3);

holdon;

plot(n,fftshift(abs(y2)),'g--');

title('FFT[x5(n)]:

N=16');

6.对x6(n)进行FFT变换(N=16、N=32和N=64)

function[output_args]=Untitled3(input_args)

%UNTITLED3Summaryofthisfunctiongoeshere

%Detailedexplanationgoeshere

clearall;

n=0:

64;%读入长度

x=cos(pi*8/64*n)+cos(pi*16/64*n)+cos(pi*20/64*n);

subplot(4,1,1);

stem(n,abs(x),'k','LineWidth',1.3);

%plot(n,abs(x),'b');

title('x6(t)抽样得x6(n)');

N=16;

y1=fft(x,N);

n=0:

N-1;subplot(4,1,2);

stem(n,fftshift(abs(y1)),'r','LineWidth',1.3);

holdon;

plot(n,fftshift(abs(y1)),'y--');

title('FFT[x6(n)]:

N=16');

N=32;

y2=fft(x,N);

n=0:

N-1;subplot(4,1,3);

stem(n,fftshift(abs(y2)),'m','LineWidth',1.3);

holdon;

plot(n,fftshift(abs(y2)),'c--');

title('FFT[x6(n)]:

N=32');

N=64;

y3=fft(x,N);

n=0:

N-1;subplot(4,1,4);

stem(n,fftshift(abs(y3)),'b','LineWidth',1.3);

holdon;

plot(n,fftshift(abs(y3)),'g--');

title('FFT[x6(n)]:

N=64');

7.对x(n)=x4(n)+x5(n)进行FFT变换(N=8和N=16)

function[output_args]=Untitled2(input_args)

%UNTITLED2Summaryofthisfunctiongoeshere

%Detailedexplanationgoeshere

clearall;

n=0:

15

x4=cos(pi/4*n);

x5=sin(pi/8*n);

x=x4+x5;

subplot(3,1,1);stem(n,abs(x));holdon;plot(n,abs(x),'y--');

title('cos(pi/4*n)+sin(pi/8*n)时间序列');

N=8;

y1=fft(x,N);

n=0:

N-1;subplot(3,1,2);stem(n,fftshift(abs(y1)),'m');holdon;plot(n,fftshift(abs(y1)),'c--');

title('FFT[x4+x5]:

N=8');

N=16;

y2=fft(x,N);

n=0:

N-1;subplot(3,1,3);stem(n,fftshift(abs(y2)),'r');holdon;plot(n,fftshift(abs(y2)),'g--');

title('FFT[x4+x5]:

N=16');

8.对x(n)=x4(n)+jx5(n)进行FFT变换(N=8和N=16)

function[output_args]=Untitled2(input_args)

%UNTITLED2Summaryofthisfunctiongoeshere

%Detailedexplanationgoeshere

clearall;

n=0:

15

x4=cos(pi/4*n);

x5=j*sin(pi/8*n);

x=x4+x5;

subplot(3,1,1);stem(n,abs(x));holdon;plot(n,abs(x),'y--');

title('cos(pi/4*n)+jsin(pi/8*n)时间序列');

N=8;

y1=fft(x,N);

n=0:

N-1;subplot(3,1,2);stem(n,fftshift(abs(y1)),'m');holdon;plot(n,fftshift(abs(y1)),'c--');

title('FFT[x4+x5]:

N=8');

N=16;

y2=fft(x,N);

n=0:

N-1;subplot(3,1,3);stem(n,fftshift(abs(y2)),'r');holdon;plot(n,fftshift(abs(y2)),'g--');

title('FFT[x4+x5]:

N=16');

9.GUI设计源程序

functionvarargout=untitled3(varargin)

%UNTITLED3M-fileforuntitled3.fig

%UNTITLED3,byitself,createsanewUNTITLED3orraisestheexisting

%singleton*.

%

%H=UNTITLED3returnsthehandletoanewUNTITLED3orthehandleto

%theexistingsingleton*.

%

%UNTITLED3('CALLBACK',hObject,eventData,handles,...)callsthelocal

%functionnamedCALLBACKinUNTITLED3.Mwiththegiveninputarguments.

%

%UNTITLED3('Property','Value',...)createsanewUNTITLED3orraisesthe

%existingsingleton*.Startingfromtheleft,propertyvaluepairsare

%appliedtotheGUIbeforeuntitled3_OpeningFunctiongetscalled.An

%unrecognizedpropertynameorinvalidvaluemakespropertyapplication

%stop.Allinputsarepassedtountitled3_OpeningFcnviavarargin.

%

%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone

%instancetorun(singleton)".

%

%Seealso:

GUIDE,GUIDATA,GUIHANDLES

%Copyright2002-2003TheMathWorks,Inc.

%Edittheabovetexttomodifytheresponsetohelpuntitled3

%LastModifiedbyGUIDEv2.523-Nov-201411:

53:

18

%Begininitializationcode-DONOTEDIT

gui_Singleton=1;

gui_State=struct('gui_Name',mfilename,...

'gui_Singleton',gui_Singleton,...

'gui_OpeningFcn',@untitled3_OpeningFcn,...

'gui_OutputFcn',@untitled3_OutputFcn,...

'gui_LayoutFcn',[],...

'gui_Callback',[]);

ifnargin&&ischar(varargin{1})

gui_State.gui_Callback=str2func(varargin{1});

end

ifnargout

[varargout{1:

nargout}]=gui_mainfcn(gui_State,varargin{:

});

else

gui_mainfcn(gui_State,varargin{:

});

end

%Endinitializationcode-DONOTEDIT

%---Executesjustbeforeuntitled3ismadevisible.

functionuntitled3_OpeningFcn(hObject,eventdata,handles,varargin)

%Thisfunctionhasnooutputargs,seeOutputFcn.

%hObjecthandletofigure

%e

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

当前位置:首页 > 农林牧渔 > 林学

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

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