数字信号处理实验指导书2016-通信

更新时间:2023-09-28 19:47:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数字信号处理实验

徐俊

2016年8月

目录

实验一 实验二 实验三 实验四

离散时间系统及系统响应 ································································· 2 离散傅立叶变换及其特性验证 ··························································· 8 时域采样与频域采样 ····································································· 17 冲激响应不变法IIR数字滤波器设计 ················································ 24

实验一 离散时间系统及系统响应

一、实验目的

1、掌握求解离散时间系统脉冲响应和阶跃响应的方法; 2、掌握用线性卷积求解离散时间系统响应的基本方法。

二、实验原理与设计方法

1、用impz和dstep函数求解离散系统的单位脉冲响应和阶跃响应 【例1-1】已知某因果系统的差分方程为

y n +0.5y n?1 =x n +2x(n?2)

系统为零状态,求系统的脉冲响应和阶跃响应。 解:该系统是一个2阶系统,列出bm和ak系数为

a0=1,a1=0.5,a2=0, b0=1,b1=0,b2=2

MALAB程序如下(取16点作图): a=[1,0.5,0]; b=[1,0,2]; n=16;

hn=impz(b,a,n); %脉冲响应 gn=dstep(b,a,n); %阶跃响应 subplot(1,2,1),stem(hn,'k'); title('系统的单位脉冲响应'); ylabel('h(n)');xlabel('n');

axis([0,n,1.1*min(hn),1.1*max(hn)]); subplot(1,2,2),stem(gn,'k'); title('系统的单位阶跃响应'); ylabel('g(n)');xlabel('n');

axis([0,n,1.1*min(gn),1.1*max(gn)]); 结果如下图所示:

2

2、用conv函数进行卷积计算求系统响应 【例1-2】某离散时间系统的脉冲响应为

hb(n)=δ(n)+2.5δ(n-1)+2.5δ(n-2)+δ(n-3)

激励信号为

x t =Ae?αnTsin ??0???? 0≤??<50

设A=444.128,α=50 2??,Ω0=50 2??。 试求该系统在输入信号激励下的响应。 解:MATLAB程序如下:

n=1:50; %定义序列的长度是50

hb=zeros(1,50); %注意:MATLAB中数组下标从1开始 hb(1)=1;hb(2)=2.5;hb(3)=2.5;hb(4)=1; close all; subplot(3,1,1);

stem(hb);title('系统h[n]');

m=1:50;T=0.001; %定义序列的长度和采样率 A=444.128;a=50*sqrt(2.0)*pi; %设置信号有关的参数 w0=50*sqrt(2.0)*pi;

x=A*exp(-a*m*T).*sin(w0*m*T); subplot(3,1,2);stem(x);title('输入信号x[n]'); y=conv(x,hb);

subplot(3,1,3);stem(y);title('输出信号y[n]'); 结果如下图所示:

3

3、用filter函数求系统响应

线性常系数差分方程是描述离散时间LTI系统的另一个时域模型,即系统的输入信号x[n]输出信号y[n]关系可以用下面的差分方程来表达

?dk?0Nky[n?k]??pkx[n?k]

k?0M为了求得系统响应信号的显式表达式(Explicit expression),必须对差分方程求解。 在MATLAB中,是用差分方程的系数来描述一个离散时间LTI系统的。例如,一个LTI离散时间系统的差分方程为

y[n]+y[n-1]-6y[n-2]=x[n]

MATLAB则用两个系数向量num = [1]和den = [1 1 -6]来描述该系统,其中num和den分别表示系统差分方程右边和左边的系数,按照差分运算的递减排列。

在用num和den定义了一个离散时间LTI系统之后,可以利用MATLAB来求解系统响应。求解离散时间系统的响应的一个非常有用的MATLAB函数就是filter()。它可以用来求解系统的在输入信号x[n]作用下的零状态响应,也可以求解系统在这个输入信号作用下的完全响应。其用法描述如下:

y = filter(num, den, x),求系统在输入x作用下的零状态响应y,x与y的长度相同。 y = filter(num, den, x, ic),求系统在输入x作用下的完全响应y,x与y的长度相同。其中ic为系统的初始条件(Initial Condition),即ic = [y[-1], y[-2], y[-3], ......, y[-N]]。

【例1-3】给定一个离散时间LTI系统,它的差分方程为

y[n]+0.1y[n-1]-0.06y[n-2]=x[n]

若输入信号为x[n] = 0.5nu[n],系统的初始条件为ic = [0, 1],编写程序,绘制输入信号x[n]、系统的零状态响应yzs[n]和系统的完全响应信号y[n]的波形图。

4

本文来源:https://www.bwwdw.com/article/25jd.html

Top