数字信号处理实验报告3 DSP信号与系统实验报告 信号加窗及谱分析 电子科技大学 2018版

发布时间 : 星期三 文章数字信号处理实验报告3 DSP信号与系统实验报告 信号加窗及谱分析 电子科技大学 2018版更新完毕开始阅读

安装MATLAB软件的PC机一台,DSP实验演示系统一套。 七、实验步骤:

?5??1、计算实数序列x?n??cos?n?w?n? , 0?n?255的DTFT,其中w?n?分别取为

16??矩形窗,Bartlett窗,Hann窗,Hamming窗和Blackman窗,对比各自的频谱特性。

2、计算周期为1kHz的方波序列(占空比为50%,幅度取为+/-512,采样频率为25kHz,取256点长度)的DTFT,对其进行截断分别取矩形窗,Bartlett窗,Hann窗,Hamming窗和Blackman窗,对比各自的频谱特性。 3、利用DFT定义式,编程直接计算上面两个序列的DFT值。

4、利用MATLAB中提供的FFT函数,计算2个要求序列的DFT值。调用MATLAB中提供的计算程序运行时间函数,对比与直接利用DFT定义式计算所花费的时间。

5、对以上两个序列,分别采用不同的窗(Bartlett窗,Hann窗,Hamming窗和Blackman窗),利用FFT函数计算DFT值,对比其结果。

6、(拓展要求)不改变序列的点数,仅改变DFT计算点数(如变为计算1024点DFT值),观察画出来的频谱与前面频谱的差别,并解释这种差别。通过这一步骤的分析,理解频谱分辨力的概念,解释如何提高频谱分辨力。

八、实验数据及结果分析: 需要的程序代码:

(1)对要求的2个序列加不同窗后计算DTFT,对比其各自的频谱。

hold on

grid on

n = 0:255; Fs = 1;

L = length(n);

x = cos(5*pi*n/16);

w1 = bartlett(L)'; w2 = hann(L)'; w3 = hamming(L)'; w4 = blackman(L)';

LINES = 5; ROWS = 2; ID = -1; STEP = 2; ID = ID+STEP; subplot(LINES,ROWS,ID) stem(x)

ID = ID+STEP; subplot(LINES,ROWS,ID) stem(x.*w1)

ID = ID+STEP; subplot(LINES,ROWS,ID) stem(x.*w2)

ID = ID+STEP; subplot(LINES,ROWS,ID) stem(x.*w3)

ID = ID+STEP; subplot(LINES,ROWS,ID) stem(x.*w4)

ID = 0;

ID = ID+STEP; subplot(LINES,ROWS,ID) dtft(x,L,Fs)

ID = ID+STEP; subplot(LINES,ROWS,ID) dtft(x.*w1,L,Fs)

ID = ID+STEP; subplot(LINES,ROWS,ID) dtft(x.*w2,L,Fs)

ID = ID+STEP; subplot(LINES,ROWS,ID) dtft(x.*w3,L,Fs)

ID = ID+STEP; subplot(LINES,ROWS,ID) dtft(x.*w4,L,Fs)

hold on grid on

n = 0:255; Fs = 25000; L = length(n);

x = square(2*pi*1000*n/Fs,50);

w1 = bartlett(L)'; w2 = hann(L)'; w3 = hamming(L)'; w4 = blackman(L)';

LINES = 5; ROWS = 2; ID = -1; STEP = 2; ID = ID+STEP; subplot(LINES,ROWS,ID) stem(x)

ID = ID+STEP; subplot(LINES,ROWS,ID) stem(x.*w1)

ID = ID+STEP; subplot(LINES,ROWS,ID) stem(x.*w2)

ID = ID+STEP; subplot(LINES,ROWS,ID) stem(x.*w3)

ID = ID+STEP; subplot(LINES,ROWS,ID) stem(x.*w4)

ID = 0;

ID = ID+STEP; subplot(LINES,ROWS,ID) dtft(x,L,Fs)

ID = ID+STEP; subplot(LINES,ROWS,ID) dtft(x.*w1,L,Fs)

ID = ID+STEP; subplot(LINES,ROWS,ID) dtft(x.*w2,L,Fs)

ID = ID+STEP; subplot(LINES,ROWS,ID) dtft(x.*w3,L,Fs)

ID = ID+STEP; subplot(LINES,ROWS,ID) dtft(x.*w4,L,Fs)

(2)对要求的2个序列直接用定义式进行DFT计算的程序。 以下是自己写的dft函数,不调用MATLAB的fft函数:

%%

% Author = Nie H.T.

% Stu ID = 2016010903009 % Date = Mar 27, 2018

% Calculate DFT without internal function fft. %%

function [X] = dft(x) L = length(x); X = zeros(L); for k = 1:L for n = 1:L

X(k) = X(k)+x(n)*exp(-1i*2*pi*k*n/L); end end

n = 0:255;

L = length(n);

Fs1 = 1;

x1 = cos(5*pi*n/16);

Fs2 = 25000;

x2 = square(2*pi*1000*n/Fs2,50); tic

X1 = dft(x1);

联系合同范文客服:xxxxx#qq.com(#替换为@)