数字信号处理实验讲义(修订版) 下载本文

数字信号处理实验讲义

五、参考程序

1、给出一矩形序列,并且给出其频谱曲线。 程序如下:

M=4;N=2*M+1;T=0.5;n=-4*M:4*M;

x=[zeros(1,3*M),ones(1,N),zeros(1,3*M)]; % 给出输入序列 w=[-15:0.1:15]+1e-10;

X=sin(0.5*N*w*T)./sin(0.5*w*T); % 给出频谱序列 subplot(1,3,1),stem(n,x,'.') % 画出输入序列 axis([-20,20,-0.1,1.1]),grid on xlabel('n'),title('(a) 序列幅度')

subplot(1,3,2),plot(w,X),grid on % 画出频谱序列 xlabel('\\Omega'),title('(b) 幅频特性')

subplot(1,3,3),plot(w,X),grid on % 改变横轴比例,画出频谱序列 v=axis;axis([-pi/T,pi/T,v(3),v(4)])

xlabel('\\Omega'),title('(c) 横轴放大后幅特性')

set(gcf,'color','w') % 置图形背景色为白

2、 图示理想低通滤波器的频率特性曲线,并用IDTFT求出它的反变换。 程序如下: clear,close all

wc=input('wc= (范围从0到pi)'); % 低通滤波器的截止频率 n=[-10:10]+1e-10;

10

数字信号处理实验讲义

hd=sin(n*wc)./(n*pi); % 理论的反变换脉冲序列 subplot(1,2,1),

plot([-pi,-wc,-wc,wc,wc,pi],[0,0,1,1,0,0]) % 画出理想频率响应 xlabel('频率(1/秒)'),ylabel('幅度') axis([-pi,pi,-0.1,1.1]),grid on

subplot(1,2,2),stem(n,hd),grid on % 画出对应的脉冲序列 xlabel('n'),ylabel('序列')

axis([-10,10,-0.1*wc,0.4*wc]) % 确定适当的坐标比例尺 set(gcf,'color','w') % 置图形背景色为白

11

数字信号处理实验讲义

实验三 离散傅里叶变换DFT及IDFT

一、实验目的

1、在理论学习的基础上,通过本实验,加深对DFT的理解,熟悉DFT子程序。 2、掌握计算离散信号DFT的方法。

二、实验原理与方法

(一) DFT和IDFT的定义。 1、DFT的定义式:

knX(k)??x(n)WNn?0N?1

0?k?N?1

2、IDFT的定义式:

1x(n)?N 1、DFT所用的MATLAB程序

dft.m

function[Xk]=dft(xn,N) %定义DFT。 %[Xk]=dft(xn,N)

?knX(k)W?Nn?0N?1

0?n?N?1

(二) DFT和IDFT所用的MATLAB程序。

%Xk=DFT coeff.array over 0<=k<=N-1 %xn=N-point finite-duration sequence %N=LENGTH of DFT n=[0:1:N-1]; k=[0:1:N-1]; WN=exp(-j*2*pi/N); nk=n’*k; WNnk=WN.^nk; Xk=xn*WNnk;

2、IDFT所用的MATLAB程序

12

数字信号处理实验讲义

idft.m

function[xk]=idft(Xk,N) %定义IDFT。 %[xn]=idft(Xk,N)

%Xk=DFT coeff.array over 0<=k<=N-1 %xn=N-point finite-duration sequence %N=LENGTH of DFT N=[0:1:N-1]; k=[0:1:N-1]; WN=exp(-j*2*pi/N); nk=n’*k; WNnk=WN.^(-nk); xn =( Xk *WNnk)/N;

三、实验内容及步骤

1、若x(n)?cos(n?)是一个N=12的有限长序列,计算其DFT并画出图形; 62、用MATLAB计算(1)题结果的IDFT并画出图形;

3、若x(n)?cos(0.48?n)?cos(0.52?n)。当0?n?10时,求x(n)的DFT X(k); 4、将(3)题中的x(n)以补零方式加长到0?n?100,求x(n)的DFT X(k); 5、将(3)题中的x(n)加长到0?n?100,求x(n)的DFT X(k)。

四、实验思考

1、说明DFT和DTFT有什么区别和联系?

2、说明题三、(2)能否恢复三、(1)的x(n),为什么? 3、说明题三、(1)(2)(3)的结果为什么不同?

五、参考程序

1、基本序列的离散傅里叶变换计算。 程序如下: clear;close all N=16; N1=8;

%产生序列x1(n),计算DFT[x1(n)] n=0:N-1;

x1n=exp(j*pi*n/8); %产生x1(n)

13