数字信号处理实验五.docx

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

数字信号处理实验五.docx

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

数字信号处理实验五.docx

数字信号处理实验五

实验报告

 

实验名称____利用DFT分析离散信号频谱

课程名称____数字信号处理________

 

院系部:

电气与电子工程专业班级:

信息1002

学生姓名:

王萌学号:

11012000219

同组人:

实验台号:

指导教师:

范杰清成绩:

实验日期:

 

华北电力大学

一、实验目的

应用离散傅里叶变换(DFT),分析离散信号x[k]的频谱。

深刻理解DFT分析离散信号频谱的原理,掌握改善分析过程中产生的误差的方法。

二、实验原理

根据信号傅里叶变换建立的时域与频域之间的对应关系,可以得到有限长序列的离散傅里叶变换(DFT)与四种确定信号傅里叶变换的之间的关系,实现由DFT分析其频谱。

Matlab中提供了fft函数,FFT是DFT的快速算法

X=fft(x):

用于计算序列x的离散傅里叶变换(DFT)

X=fft(x,n):

对序列x补零或截短至n点的离散傅里叶变换。

当x的长度小于n时,在x的尾部补零使x的长度达到n点;

当x的长度大于n时,将x截短使x的长度成n点;

x=ifft(X)和x=ifft(X,n)是相应的离散傅里叶反变换。

fftshift(x)将fft计算输出的零频移到输出的中心位置。

利用DFT计算离散周期信号的频谱

分析步骤为:

(1)确定离散周期序列

的基本周期N;

(2)利用fft函数求其一个周期的DFT,得到X[m];

(3)

利用DFT计算离散非周期信号x[k]的频谱

分析步骤为:

(1)确定序列的长度M及窗函数的类型。

当序列为无限长时,需要根据能量分布,进行截短。

(2)确定作FFT的点数N;根据频域取样定理.为使时域波形不产生混叠,必须取。

(3)使用fft函数作N点FFT计算X[m]。

三、实验内容

1、利用FFT分析信号

的频谱;

(1)确定DFT计算的参数;

(2)进行理论值与计算值比较,讨论信号频谱分析过程中误差原因及改善方法。

解答:

%该周期序列的周期N=32,基频W0=p/8。

N=32;k=0:

N-1;

x=cos(pi*3/8*k);

X=fft(x,N);

subplot(2,1,1);

stem(k-N/2,abs(fftshift(X)));

ylabel('Magnitude');xlabel('Frequency(rad)');

subplot(2,1,2);

stem(k-N/2,angle(fftshift(X)));

ylabel('Phase');xlabel('Frequency(rad)');

改善方法:

应该多抽取些

2.利用FFT分析信号

的频谱;

(1)确定DFT计算的参数;

(2)进行理论值与计算值比较,讨论信号频谱分析过程中误差

原因及改善方法。

解答:

k=0:

30;

x=0.5.^k;

subplot(2,1,1);

stem(k,x);%画出序列的时域波形

subplot(2,1,2);

w=k-15;

plot(w,abs(fftshift(fft(x))));%画出序列频谱的幅度谱

改善:

多抽取些

3.有限长脉冲序列

利用FFT分析其频谱,并绘出其幅度谱与相位谱。

解答:

N=6;

k=0:

N-1;

x=[2,3,3,1,0,5];

X=fft(x,N);

subplot(2,1,1);

stem(k-N/2,abs(fftshift(X)));

ylabel('Magnitude');

xlabel('Frequency(rad)');

title('Magnitude—FrequencyN=6');

subplot(2,1,2);

stem(k-N/2,angle(fftshift(X)));

ylabel('Phase');

xlabel('Frequency(rad)');

title('Phase—Frequency');

4.某周期序列由3个频率组成:

,利用FFT分析其频谱。

如何选取FFT的点数N?

此3个频率分别对应FFT计算结果X[m]中的哪些点?

若选取的N不合适,FFT计算出的

频谱X[m]会出现什么情况?

解答:

%该周期序列的周期N=32,N=64,基频W0=p/16。

N=32;

k=0:

N-1;

x=cos(pi*7/16*k)+cos(9*pi/16*k)+cos(8*pi/16*k);

X=fft(x,N);

subplot(4,1,1);

stem(k-N/2,abs(fftshift(X)));

ylabel('Magnitude');

xlabel('Frequency(rad)');

title('Magnitude—FrequencyN=32');

subplot(4,1,2);

stem(k-N/2,angle(fftshift(X)));

ylabel('Phase');

xlabel('Frequency(rad)');

title('Phase—FrequencyN=32');

N=64;

k=0:

N-1;

x=cos(pi*7/16*k)+cos(9*pi/16*k)+cos(8*pi/16*k);

X=fft(x,N);

subplot(4,1,3);

stem(k-N/2,abs(fftshift(X)));

ylabel('Magnitude');

xlabel('Frequency(rad)');

title('Magnitude—FrequencyN=64');

subplot(4,1,4);

stem(k-N/2,angle(fftshift(X)));

ylabel('Phase');

xlabel('Frequency(rad)');

title('Phase—FrequencyN=64');

若N选取不合适,则无法区分频率

5.某离散序列,利用FFT分析其频谱。

(1)对x[k]做64点FFT,绘出信号频谱,能分辨出其中的两个频率吗?

(2)对x[k]补零到256点后计算FFT,能分辨出其中的两个频率吗?

(3)选用非矩形窗计算FFT,能够分辨出其中的两个频率吗?

(4)若不能够很好地分辨出其中的两个频谱,应采取哪些措施?

解答:

(1)、该周期序列的周期N=64,基频W0=p/15

N=64;

k=0:

N-1;

x=cos(pi*2/15*k)+0.75*cos(2.3*pi/15*k);

X=fft(x,N);

subplot(2,1,1);

stem(k-N/2,abs(fftshift(X)));

ylabel('Magnitude');

xlabel('Frequency(rad)');

title('Magnitude—FrequencyN=64');

subplot(2,1,2);

stem(k-N/2,angle(fftshift(X)));

ylabel('Phase');

xlabel('Frequency(rad)');

title('Phase—FrequencyN=64');

(2)对x[k]补零到256点后计算FFT

N=256;

k=0:

N-1;

x=cos(pi*2/15*k)+0.75*cos(2.3*pi/15*k);

X=fft(x,N);

subplot(2,1,1);

stem(k-N/2,abs(fftshift(X)));

ylabel('Magnitude');

xlabel('Frequency(rad)');

title('Magnitude—FrequencyN=256');

subplot(2,1,2);

stem(k-N/2,angle(fftshift(X)));

ylabel('Phase');

xlabel('Frequency(rad)');

title('Phase—FrequencyN=256');

(3)

Hanning:

N=64;k=0:

N-1;

w=1/2*(1-cos(2*pi*k/(N-1)));

x=cos(2*pi/15*k).*w+0.75*cos(2.3*pi/15*k).*w;

X=fft(x,N);

subplot(2,1,1);

stem(k,abs(fftshift(X)));

ylabel('Magnitude');xlabel('Frequency(rad)');

subplot(2,1,2);

stem(k,angle(fftshift(X)));

ylabel('Phase');xlabel('Frequency(rad)');

Blackman:

N=64;k=0:

N-1;

w=0.42-0.5*cos(2*pi*k/(N-1))+0.08*cos(4*pi*k/(N-1));

x=cos(2*pi/15*k).*w+0.75*cos(2.3*pi/15*k).*w;

X=fft(x,N);

subplot(2,1,1);

stem(k,abs(fftshift(X)));

ylabel('Magnitude');xlabel('Frequency(rad)');

subplot(2,1,2);

stem(k,angle(fftshift(X)));

ylabel('Phase');xlabel('Frequency(rad)');

6.已知序列

利用FFT分析下列信号的幅频特性,频率范围为

,N=500点。

(1)

(2)

(3)若将上述x[k]乘以cos(pk/2),重做

(1)和

(2)。

解答:

(1)%

N=500;

K=-50:

2:

50;

w=-(0.1*K).^2/2;x=exp(w);

X=fft(x,N);

subplot(2,1,1);

stem(abs(fftshift(X)));

ylabel('Magnitude');xlabel('Frequency(rad)');

subplot(2,1,2);

stem(angle(fftshift(X)));

ylabel('Phase');xlabel('Frequency(rad)

%

N=500;

K=-50:

4:

50;

w=-(0.1*K).^2/2;

x=exp(w);

X=fft(x,N);

subplot(2,1,1);

stem(abs(fftshift(X)));

ylabel('Magnitude');xlabel('Frequency(rad)');

subplot(2,1,2);

stem(angle(fftshift(X)));

ylabel('Phase');xlabel('Frequency(rad)');

 

(2)将上述x[k]乘以cos(pk/2)

%

N=500;

K=-50:

2:

50;

w=-(0.1*K).^2/2;

x=exp(w).*cos(pi*K/2);

X=fft(x,N);

subplot(2,1,1);

stem(abs(fftshift(X)));

ylabel('Magnitude');xlabel('Frequency(rad)');

subplot(2,1,2);

stem(angle(fftshift(X)));

ylabel('Phase');xlabel('Frequency(rad)');

 

%

N=500;

K=-50:

4:

50;

w=-(0.1*K).^2/2;

x=exp(w).*cos(pi*K/2);

X=fft(x,N);

subplot(2,1,1);

stem(abs(fftshift(X)));

ylabel('Magnitude');xlabel('Frequency(rad)');

subplot(2,1,2);

stem(angle(fftshift(X)));

ylabel('Phase');xlabel('Frequency(rad)');

4、实验思考题

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

答:

DFT用于分析有限长序列更方便

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

答:

利用窗函数

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

如何克服或改善?

答:

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

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

答:

根据窗函数的不同特性

5.序列补零和增加序列长度都可以提高频谱分辨率吗?

两者有何本质区别?

答:

可以。

补零是DFT中经常采用的方法,补零只能使序列的频谱变得细致,但不能提高序列的频率分辨率,只有采集更多的有效数据,才能得到序列的高分辨率频谱。

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

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

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

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