数字信号处理实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
前言
数字信号处理是一门理论和工程实践密切结合的课程。
为了加深对教学内容的理解,应在学习理论的同时,加强上机实验,深入理解和消化基本理论,锻炼初学者独立解决问题的能力。
本课程实验要求学生运用MATLAB编程完成一些数字信号处理的基本功能。
MATLAB是一高效的工程计算语言,它将计算、可视化和编程等功能集于一个易于使用的环境。
在MATLAB环境中描述问题计编制求解问题的程序时,用户可以按照符合人们科学思维的方式和数学表达习惯的语言形式来书写程序。
MATLAB广泛应用于工业,电子,医疗和建筑等众多领域。
其典型应用主要包括以下几个方面:
数学计算;
算法开发;
数据采集;
系统建模和仿真;
数据分析和可视化
科学和工程绘图;
应用软件开发(包括用户界面)。
;
实验1 用MATLAB产生时域离散信号一、.实验目的:
1、了解常用时域离散信号及其特点
2、掌握用MATLAB 产生时域离散信号的方法 二、.实验原理: 1、时域离散信号的概念
在时间轴的离散点上取值的信号,称为离散时间信号。
通常,离散时间信号用x(n)表示,其幅度可以在某一范围内连续取值。
由于信号处理设备或装置(如计算机、专用的信号处理芯片等)均以有限位的二进制数来表示信号的幅度,因此,信号的幅度也必须离散化。
我们把时间和幅度均取离散值的信号称为时域离散信号或数字信号。
在MATLAB 语言中,时域离散信号可以通过编写程序直接产生。
2、常用时域离散信号的生成 1) 单位抽样序列 单位抽样序列的表示式为
⎩⎨⎧=01)(n δ
00≠=n n 或 ⎩⎨⎧=-01)(k n δ 0
≠=n k
n 以下三段程序分别用不同的方法来产生单位抽样序列。
例1-1 用MATLAB 的关系运算式来产生单位抽样序列。
n1= -5;n2=5;n0=0;
n=n1:n2; x=[n==n0]; stem(n,x,'filled');
axis([n1,n2,0,1.1*max(x)]); xlabel('时间(n)');ylabel('幅度x(n)');
title('单位脉冲序列');
运行结果如图1-1所示:
时间(n)
幅度x (n )
单位脉冲序列
图1-1
例1-2 用zeros 函数和抽样点直接赋值来产生单位抽样序列。
n1=-5;n2=5;k=0; n=n1:n2;
nt=length(n);(取参数的长度)
nk=abs(k-n1)+1;{取绝对值}
x=zeros(1,nt);{(行、列)}(zeros生成零矩阵)
x(nk)=1;
绘图部分的程序及作图结果与例1-1相同。
例1-3生成移位的单位脉冲序列。
n1=-5;n2=5;n0=2;
n=n1:n2;
x=[(n-n0)==0];
stem(n,x,'filled');
axis([n1,n2,0,1.1*max(x)]);
xlabel('时间(n)');ylabel('幅度x(n)');
title('单位脉冲序列');
运行结果如图1-2所示
时间(n)
幅度x (n )
单位脉冲序列
图1-2
2) 单位阶跃序列
单位阶跃序列表示式为
1()=0u n ⎧⎨⎩
00<≥n n 或 1
(-)=0
u n k ⎧⎨⎩ 00<≥n n 以下三段程序分别用不同的方法来产生单位阶跃序列。
例1-4用MATLAB 的关系运算式来产生单位阶跃序列。
n1=-2;n2=8;n0=0; n=n1:n2; x=[n>=n0]; stem(n,x,'filled');
axis([n1,n2,0,1.1*max(x)]);
xlabel('时间(n)');ylabel('幅度x(n)'); title('单位阶跃序列'); box
运行结果如图1-3所示:
时间(n)
幅度x (n )
单位阶跃序列
图1-3
例1-5 用zeros 和ones 函数来产生单位阶跃序列。
n1=-2;n2=8;k=0; n=n1:n2; nt=length(n); nk=abs(k-n1)+1;
x=[zeros(1,nk-1),ones(1,nt-nk+1)];
绘图部分的程序及作图结果与例1-4相同。
. 例1-6生成移位的单位阶跃序列。
n1=-10;n2=10;n0=4; n=n1:n2; x=[(n-n0)>=0]; stem(n,x,'filled');
axis([n1,n2,0,1.1*max(x)]); xlabel('时间(n)');ylabel('幅度x(n)'); title('移位的单位阶跃序列'); box
程序运行结果如图1-4所示:
时间(n)
幅度x (n )
移位的单位阶跃序列
图1-4
3) 实指数序列
实指数序列的表示式为x(n)=a n其中a为实数
例1-7编写产生a=1/2和a=2的实指数连续信号和离散序列的程序n1=-10;n2=10;a1=0.5;a2=2;
na1=n1:0;x1=a1.^na1;
na2=0:n2;x2=a2.^na2;
subplot(2,2,1);plot(na1,x1);(图形窗口)
title('实指数信号(a<1)');
subplot(2,2,3);stem(na1,x1,'filled');
title('实指数序列(a<1)');
subplot(2,2,2);plot(na2,x2);
title('实指数信号(a>1)');
subplot(2,2,4);stem(na2,x2,'filled');
title('实指数序列(a<1)');
box
程序运行结果如图1-5所示:
-10
-5
05001000
1500
实指数信号(a<1)
实指数序列(a<1
)
05
10
500
1000
1500
实指数信号(a>1)
实指数序列(a<1)
图1-5
4)复指数序列
复指数序列的表示式为 x(n)=e (σ+j ω)n
当ω=0时,x(n)为实指数序列;当σ=0时,x(n)为虚指数序列,即
e j ωn =cos(ωn)+jsin(ωn)
其实部为余弦序列,虚部为正弦序列。
例1-8 编写程序产生σ=-0.1,ω=0.6的复指数连续信号与离散序列。
n1=30;a=-0.1;w=0.6;
n=0:n1;
x=exp((a+j*w)*n);
subplot(2,2,1);plot(n,real(x));
title('复指数信号的实部');
subplot(2,2,3);stem(n,real(x),'filled'); title('复指数序列的实部');
subplot(2,2,2);plot(n,imag(x));
title('复指数信号的虚部');
subplot(2,2,4);stem(n,imag(x),'filled'); title('复指数序列的虚部');
box
程序运行结果如图1-6所示
0102030
-1
-0.500.5
1复指数信号的实部
10
20
30
0102030
-0.5
00.5
1
复指数信号的虚部
0102030
复指数序列的虚部
图1-6
5)正(余)弦序列
正(余)弦序列的表示式为 x(n)=U m sin(ω0n+Θ)
例1-9 已知一时域周期性正弦信号的频率为1Hz ,振幅值为1V 。
编写程序在图形窗口上显示两个周期的信号波形,并对该信号的一个周期进行32点采样获得离散信号。
f=1;Um=1;nt=2; N=32;T=1/f; dt=T/N;
n=0:nt*N-1;
tn=n*dt;
x=Um*sin(2*f*pi*tn);
subplot(2,1,1);plot(tn,x);
axis([0,nt*T,1.1*min(x),1.1*max(x)]); ylabel('x(t)');
subplot(2,1,2);stem(tn,x);
axis([0,nt*T,1.1*min(x),1.1*max(x)]); ylabel('x(n)');
box
程序运行结果如图1-7所示
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
-1-0.500.5
1x (t )
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
x (n )
图1-7
6)矩形波序列
MATLAB 提供有专门函数square 用于产生矩形波。
其调用格式如下: x=square(t) :类似于sin(t),产生周期为2π,幅值为±1的方波。
x=square(t ,duty):产生指定周期的矩形波,其中duty 用于指定占空比。
将square 的参数t 换成n ,且n 取整数,则可以获得矩形序列。
例1-10 一个周期性矩形信号频率为5kHz ,信号幅度在0~2V 之间,占空比为0.25,。
编写程序生成该信号,要求在图形窗口上显示2个周期的信号波形;对信号的一
个周期进行16点采样获得离散信号。
f=5000;nt=2;
N=16;T=1/f;
dt=T/N;
n=0:nt*N-1;
tn=n*dt;
x=square(2*f*pi*tn,25)+1;
subplot(2,1,1);plot(tn,x);
axis([0,nt*T,1.1*min(x),1.1*max(x)]);
ylabel('x(t)');
subplot(2,1,2);stem(tn,x);
axis([0,nt*T,1.1*min(x),1.1*max(x)]);
ylabel('x(n)');
box
程序运行结果如图1-8所示;
三、.实验内容:
1、阅读并上机验证实验原理部分的例题程序,理解每一条语句的含义。
改变例题中的有关参数(如信号的频率、周期、幅度、显示时间的取值范围、采样点数等),观察对信号波形的影响。
2、编写程序,产生以下离散序列:
(1)f(n)=δ(n) (-3<n<4)
(2)f(n)=u(n) (-5<n<5)
(3)f(n)= e(0.1+j1.6∏)n(0<n<16)
(4)f(n)=3sin(nП/4) (0<n<20)
3、一个连续的周期性方波信号频率为200Hz,信号幅度在-1~+1V之间,要求在图形窗口上显示其两个周期的波形。
以4kHz的频率对连续信号进行采样,编写程序生成连续信号和其采样获得的离散信号波形。
四、.实验预习:
1、预先阅读附录部分的MATLAB基础介绍,认真阅读实验原理,明确本次实验任务,读懂例题程序,了解实验方法。
2、根据实验内容预先编写实验程序。
3、预习思考题:产生单位脉冲序列和单位阶跃序列各有几种方法?如何使用?
五、实验报告
1、列写调试通过的实验程序,打印实验程序产生的曲线图形。
2、思考题:通过例题程序,你发现采样频率Fs、采样点数N、采样时间间隔dt在程序编写中有怎样的联系?使用时需注意什么问题?
实验2 离散LSI系统的时域分析
一、.实验目的:
1、加深对离散系统的差分方程、单位脉冲响应、单位阶跃响应和卷积分析方法的理解。
2、初步了解用MATLAB语言进行离散时间系统时域分析的基本方法。
3、掌握求解离散时间系统的单位脉冲响应、单位阶跃响应、线性卷积以及差分方程的程序的编写方法,了解常用子函数的调用格式
二、实验原理:
1、离散LSI 系统的响应与激励
由离散时间系统的时域分析方法可知,一个离散LSI 系统的响应与激励可以用如下框图表示:
其输入、输出关系可用以下差分方程描述:
[][]N
M
k
k k k a
y n k b x n m ==-=-∑∑
2、用函数impz 和dstep 求解离散系统的单位脉冲响应和单位阶跃响应。
例
2-1
已
知
描
述
某
因
果
系
统
的
差
分
方
程
为
6y(n)+2y(n-2)=x(n)+3x(n-1)+3x(n-2)+x(n-3)
满足初始条件y(-1)=0,x(-1)=0,求系统的单位脉冲响应和单位阶跃响应。
解: 将y(n)项的系数a 0进行归一化,得到
y(n)+1/3y(n-2)=1/6x(n)+1/2x(n-1)+1/2x(n-2)+1/6x(n-3)
分析上式可知,这是一个3阶系统,列出其b k 和a k 系数: a 0=1, a ,1=0, a ,2=1/3, a ,3=0 b 0=1/6,b ,1=1/2, b ,2=1/2, b ,3=1/6
程序清单如下:
a=[1,0,1/3,0];
b=[1/6,1/2,1/2,1/6];
N=32;
n=0:N-1;
hn=impz(b,a,n);
gn=dstep(b,a,n);
subplot(1,2,1);stem(n,hn,'k');
title('系统的单位序列响应'); ylabel('h(n)');xlabel('n');
axis([0,N,1.1*min(hn),1.1*max(hn)]); subplot(1,2,2);stem(n,gn,'k');
title('系统的单位阶跃响应'); ylabel('g(n)');xlabel('n');
axis([0,N,1.1*min(gn),1.1*max(gn)]); 程序运行结果如图2-1所示:
10
20
30
系统的单位序列响应
h (n )
n
10
20
30
0.2
0.30.4
0.5
0.6
0.70.8
0.9
11.1
1.2
系统的单位阶跃响应
g (n )
n
图2-1
3、用函数filtic 和filter 求解离散系统的单位序列响应和单位阶跃响应。
例
2-2
已
知
描
述
某
因
果
系
统
的
差
分
方
程
为
6y(n)-2y(n-4)=x(n)-3x(n-2)+3x(n-4)-x(n-6),满足初始条件y(-1)=0,x(-1)=0,求系统的单位脉冲响应和单位阶跃响应。
时间轴上N 取32点。
注意:原式非标准形式,必须化为标准形式后再列出系数b,a 。
程序清单如下:
x01=0;y01=0;
a=[1,0,0,0,-1/3,0,0];
b=[1/6,0,-1/2,0,1/2,0,-1/6];
N=32;n=0:N-1;
xi=filtic(b,a,0);
x1=[n==0];
hn=filter(b,a,x1,xi);
x2=[n>=0];
gn=filter(b,a,x2,xi);
subplot(1,2,1);stem(n,hn,'k');
title('系统的单位序列响应'); ylabel('h(n)');xlabel('n');
axis([0,N,1.1*min(hn),1.1*max(hn)]); subplot(1,2,2);stem(n,gn,'k');
title('系统的单位阶跃响应'); ylabel('g(n)');xlabel('n');
axis([0,N,1.1*min(gn),1.1*max(gn)]); 程序运行结果如图2-2所示:
010
2030
系统的单位序列响应
h (n )
n
010
2030
系统的单位阶跃响应
g (n )
n
图2-2
4、用MATLAB 实现线性卷积 1)用函数conv 进行卷积运算:
求解两个序列的卷积和,关键在于如何确定卷积结果的时宽区间。
MATLAB 提供的求卷积函数conv 默认两个序列的序号均从n=0开始,卷积结果y 对应的序列的序号也从
n=0开始。
例2-3已知两个序列f1=0.8n(0<n<20),f2=u(n) (0<n<10),求两个序列的卷积和。
n1=0:20;
f1=0.8.^n1;
subplot(2,2,1);stem(n1,f1,'filled');
title('f1(n)');
n2=0:10;
N2=length(n2);
f2=ones(1,N2);
subplot(2,2,2);stem(n2,f2,'filled');
title('f2(n)');
y=conv(f1,f2);
subplot(2,1,2);stem(y,'filled');
程序运行结果如图2-3所示:
f1(n)
510
f2(n)
012345
图2-3
2)非零起始序列的卷积运算:
当两个序列不是从0开始时,必须对conv 函数稍加扩展。
由卷积原理可知,若待卷积的两个序列序号分别为{x(n);nx=nxs:nxf},{h(n);nh=nhs:nhf},则卷积和y(n)的序号起点和终点分别为:nys=nxs+nhs ,nyf=nxf+nhf 。
据此可定义通用卷积函数convu :
function[y,ny]=convu(h,nh,x,nx) nys=nh(1)+nx(1);nyf=nh(end)+nx(end);
y=conv(h,x);ny=nys:nyf;
例2-4已知序列f1=0.5n (0<n<10),f2=u(n+2) (-2<n<10),求两个序列的卷积和。
程序清单如下:
n1=0:10;f1=0.5*n1;
n2=-2:10;nt=length(n2);
f2=ones(1,nt);
[y,ny]=convu(f1,n1,f2,n2);
subplot(2,2,1);stem(n1,f1);
subplot(2,2,2);stem(n2,f2);
subplot(2,1,2);stem(ny,y);
程序运行结果如图2-4所示:
-5
5
10
00.20.40.60.81
010
20
30
图2-4
3)卷积积分的动态过程演示:
为了更深入地理解序列卷积的原理,下面提供一段演示卷积和的动态过程的程序。
例2-5 动态演示例2-3两个序列f 1=0.8n (0<n<20),f 2=u(n) (0<n<10)的卷积和。
程序清单如下: clf; nf1=0:20;
f1=0.8.^n1;
lf1=length(n1);
nf2=0:10;
lf2=length(n2);
f2=ones(1,lf2);
m=max(lf2,lf1);
if lf2>lf1 nf2=0;nf1=lf2-lf1;
elseif lf2<lf1 nf1=0;nf2=lf1-lf2;
else nf2=0;lf1=0;
end;
lt=m;
u=[zeros(1,lt),f2,zeros(1,nf2),zeros(1,lt)]; t1=(-lt+1:2*lt);
f1=[zeros(1,2*lt),f1,zeros(1,nf1)];
hf1=fliplr(f1);
N=length(hf1);
y=zeros(1,3*lt);
for k=0:2*lt
p=[zeros(1,k),hf1(1:N-k)];
y1=u.*p;
yk=sum(y1);
y(k+lt+1)=yk;
subplot(4,1,1);stem(t1,u);
subplot(4,1,2);stem(t1,p);
subplot(4,1,3);stem(t1,y1);
subplot(4,1,4);stem(k,yk);
axis([-20,50,0,5]);hold on
pause(2);
end
程序运行结果如图2-5所示:
00.51
00.51
-15-10
-5
5
10
15
20
25
30
-10
105
图2-5
5、离散LSI 系统时域响应的求解:
MATLAB 提供了多种方法求解离散LSI 系统的响应:
1)用conv 函数进行卷积积分,求任意输入的系统零状态响应; 例
2-6
已
知
描
述
某
因
果
系
统
的
差
分
方
程
为
6y(n)+2y(n-2)=x(n)+3x(n-1)+3x(n-2)+x(n-3),
满足初始条件y(-1)=0,x(-1)=0。
在该系统的输入端加一个矩形脉冲序列,其占空比为0.25,一个周期取16个采样点,求该系统的响应。
程序清单如下:
N=16;
n=0:N-1;
x=[ones(1,N/4),zeros(1,3*N/4)]; subplot(2,2,1);stem(n,x);
a=[1,0,1/3,0,];
b=[1/6,1/2,1/2,1/6];
hn=impz(b,a,n);
subplot(2,2,2);stem(n,hn);
y=conv(x,hn);
subplot(2,1,2);stem(y);
程序运行结果如图2-6所示:
051015
05101520253035
-0.5
00.51
1.5
图2-6
2)用dlsim 函数求任意输入的系统零状态响应; 例2-7 已知某IIR 数字低通滤波器的系统函数为
23
143
0.39630.312110.343190.604390.20407z z H z z z
-----++-+--10.1321+0.3963z (z )= 输入两个正弦叠加的序列1
sin sin(10)23
n x n =+,求该系统的响应。
程序清单如下: nx=0:8*pi;
x=sin(nx/2)+sin(10*nx)/3; subplot(3,1,1);stem(nx,x);
a=[1,-0.34319,0.60439,-0.20407]; b=[0.1321,0.3963,0.3963,0.1321]; nh=0:9;h=impz(b,a,nh); subplot(3,1,2);stem(nh,h);
y=dlsim(b,a,x);
subplot(3,1,3);stem(y);
程序运行结果如图2-7所示
0510152025
0123456789
0510********
-1
01
图2-7
3)用filtic 和filter 函数求任意输入的系统完全响应。
例2-8 已知描述某系统的差分方程为y(n)-1.5y(n-1)+0.5 y(n-2)=x(n) n ≥0,满足初始条件y(-1)=4,y(-2)=10,求系统输入为x(n)=(0.25)n u(n)时的零输入、零状态及全响应。
解 为了更深入地理解filtic 和filter 函数的用法,先用经典法求得系统完全响应表达式:1112
()[()()]()()2
34
3
n
n
y n u n u n =++,并编写程序绘出其图形,以便与用MATLAB 函数求解的结果进行对比。
程序清单如下:
a=[1,-1.5,0.5];
b=1;
N=20;n=0:N-1;
x=0.25.^n;
x0=zeros(1,N);
y01=[4,10];
xi=filtic(b,a,y01);
y0=filter(b,a,x0,xi);
xi0=filtic(b,a,0);
y1=filter(b,a,x,xi0);
y=filter(b,a,x,xi);
y2=((1/3)*(1/4).^n+(1/2).^n+(2/3)).*ones(1,N); subplot(2,3,1);stem(n,x);
title('输入信号x(n)');
subplot(2,3,2);stem(n,y0);
title('系统的零输入响应'); subplot(2,3,3);stem(n,y1);
title('系统的零状态响应'); subplot(2,2,3);stem(n,y);
title('用filter求得的完全响应'); subplot(2,2,4);stem(n,y2);
title('经典法求得的完全响应'); 程序运行结果如图2-8所示:
5
10
15
20
5101520
01020
系统的零状态响应
图2-8
三、实验内容:
1、输入并运行例题程序,理解每一条语句的含义。
2、已知描述某离散LSI 系统的差分方程为2y(n)-3y(n-1)+y(n-2)=x(n-1),分别用impz 和dstep 函数、filtic 和filter 函数两种方法求解系统的单位序列响应和单位阶跃响应。
3、编写程序描绘下列序列的卷积波形: (1)f 1(n=u(n),f 2(n)=u(n-2), (0≤n<10)
(2)x(n)=sin(n/2),h(n)=(0.5)n(-3≤n≤4П)
4、已知某离散LSI系统的单位序列响应为
h(n)=3δ(n-3)+0.5δ(n-4)+0.2δ(n-5)+0.7δ(n-6)-0.8δ(n-7)
求输入为x(n)=e-0.5n u(n)时的系统响应。
5、已知描述某离散LSI系统的差分方程为y(n)=0.7y(n-1)+2x(n)-x(n-2),求输入为x(n)=u(n-3)时的系统响应。
四、实验预习:
1、认真阅读实验原理部分,明确实验目的,复习有关离散LSI系统的理论知识。
2、读懂实验原理部分的例题程序,熟悉与本实验有关的MATLAB函数。
3、根据实验内容预先编写实验程序,并思考本实验提出的有关MATLAB函数在调用时应注意哪些问题。
五、实验报告:
1、列写调试通过的实验程序,打印实验程序产生的曲线图形。
2、列出本实验提出的有关MATLAB函数在调用时应注意的问题。
实验3 离散LSI系统的频域分析
一、实验目的
1、加深对离散系统变换域分析——z变换的理解,掌握使用MATLAB进行z变换和逆z变换的常用函数的用法。
2、了解离散系统的零极点与系统因果性和稳定性的关系,熟悉使用MATLAB进行离散系统的零极点分析的常用函数的用法。
3、加深对离散系统的频率响应特性基本概念的理解,掌握使用MATLAB进行离散系统幅频响应和相频响应特性分析的常用方法。
二、实验原理
1、z变换和逆z变换
(1)用ztrans函数求无限长序列的z变换。
该函数只给出z变换的表达式,而没有给出收敛域。
另外,由于这一函数还不尽完善,有的序列的z变换还不能求出,逆z变换也存在同样的问题。
例7-1 求以下各序列的z变换
x1(n)=a n x2(n)=n x3(n)=n(n-1)/2 x4(n)=e jωon x5(n)=1/[n(n-1)]
程序清单如下: syms w0 n z a;
x1=n*a^n;X1=ztrans(x1) x2=sin(w0*n);X2=ztrans(x2)
x3=exp(-a*n)*sin(w0*n);X3=ztrans(x3) 程序运行结果如下: X1 =z/a/(z/a-1) X2 =z/(z-1)^2
X3 =1/2*z*(z+1)/(z-1)^3-1/2*z/(z-1)^2 X4 =z/exp(i*w0)/(z/exp(i*w0)-1) X5 =z/(z-1)-ztrans(1/n,n,z)
(2)用iztrans 函数求无限长序列的逆z 变换。
例3-2 求下列函数的逆z 变换。
1234 X X X X -n
3-1
z az z 1-z (z )=(z )=(z )=(z )=z-1(a-z)(z-1)1-z
程序清单如下: syms n z a;
X1=z/(z-a);x1=iztrans(X1) X2= z/(z-a)^2;x2=iztrans(X2) X3=z/[z-exp(j*w0)];x3=iztrans(X3) X4=(1-z^-3)/(1-z^-1);x4=iztrans(X4) 程序运行结果如下: x1 =1 x2 =a^n*n x3 =1/2*n^2-1/2*n
x4 =iztrans((1-z^(-n))/(1-1/z),z,n)
2、离散系统的零极点分析(系统极点位置对系统响应的影响) 例3-3 研究z 右半平面的实数极点对系统的影响。
已知系统的零极点增益模型分别为:
123
H H H z z z
(z )=
(z )=(z )=z-0.85z-1z-1.5
求这些系统的零极点分布图以及系统的单位序列响应,判断系统的稳定性。
程序清单如下: z1=[0]';p1=[0.85]';k=1;
[b1,a1]=zp2tf(z1,p1,k);
subplot(3,2,1);zplane(z1,p1);
title('极点在单位圆内');
subplot(3,2,2);impz(b1,a1,20);
z2=[0]';p2=[1]';
[b2,a2]=zp2tf(z2,p2,k);
subplot(3,2,3);zplane(z2,p2);
title('极点在单位圆上');
subplot(3,2,4);impz(b2,a2,20);
z3=[0]';p3=[1.5]';
[b3,a3]=zp2tf(z3,p3,k);
subplot(3,2,5);zplane(z3,p3);
title('极点在单位圆外');
subplot(3,2,6);impz(b3,a3,20);
程序运行结果如图3-1所示。
由图可见,这三个系统的极点均为实数且处于z平面的右半平面。
由图可知,当极点位于单位圆内,系统的单位序列响应随着频率的增大而收
敛;当极点位于单位圆上,系统的单位序列响应为等幅振荡;当极点位于单位圆外,系统的单位序列响应随着频率的增大而发散。
由此可知系统1、2为稳定系统。
-2
02
Real Part
I m a g i n a r y P a r t
极点在单位圆内
5
1015
n (samples) A m p l i t u d e
Impulse Response
-2
02-101
Real Part
I m a g i n a r y P a r t
极点在单位圆上
5
1015
n (samples) A m p l i t u d e
-2
2
-101
Real Part
I m a g i n a r y P a r t
极点在单位圆外
n (samples)
A m p l i t u d e
Impulse Response
图3-1
例3-4 研究z 左半平面的实数极点对系统的影响。
已知系统的零极点增益模型分别为:
123
H H H z z z
(z )=
(z )=(z )=z+0.85z+1z+1.5
求这些系统的零极点分布图以及系统的单位序列响应,判断系统的稳定性。
程序清单如下:
z1=[0]';p1=[-0.85]';k=1;
[b1,a1]=zp2tf(z1,p1,k); subplot(3,2,1);zplane(z1,p1); title('极点在单位圆内'); subplot(3,2,2);impz(b1,a1,20); z2=[0]';p2=[-1]';
[b2,a2]=zp2tf(z2,p2,k); subplot(3,2,3);zplane(z2,p2); title('极点在单位圆上'); subplot(3,2,4);impz(b2,a2,20); z3=[0]';p3=[-1.5]';
[b3,a3]=zp2tf(z3,p3,k); subplot(3,2,5);zplane(z3,p3); title('极点在单位圆外'); subplot(3,2,6);impz(b3,a3,20);
程序运行结果如图3-2所示。
由图可见,这三个系统的极点均为实数且处于z 平面的左半平面。
由图可知,当极点位于单位圆内,系统的单位序列响应随着频率的增大而收敛;当极点位于单位圆上,系统的单位序列响应为等幅振荡;当极点位于单位圆外,系统的单位序列响应随着频率的增大而发散。
由此可知系统1、2为稳定系统。
-2
02-10
1
Real Part
I m a g i n a r y P a r t
极点在单位圆内
5
1015
n (samples) A m p l i t u d e
-2
02-101
Real Part
I m a g i n a r y P a r t
极点在单位圆上
n (samples) A m p l i t u d e
Impulse Response
-2
02
-1
01
Real Part
I m a g i n a r y P a r t
极点在单位圆外
05
1015n (samples)
A m p l i t u d e
Impulse Response
图3-2
例3-5 研究z 右半平面的复数极点对系统响应的影响 已知系统的零极点增益模型分别为:
123(0.3)
()(0.50.7)(0.50.7)
(0.3)
()(0.60.8)(0.60.8)
(0.3)
()(1)(1)z z H z z j z j z z H z z j z j z z H z z j z j -=
---+-=---+-=
---+
求这些系统的零极点分布图以及系统的单位序列响应,判断系统的稳定性。
程序清单如下:
z1=[0.3,0]';p1=[0.5+0.7j,0.5-0.7j]';k=1; [b1,a1]=zp2tf(z1,p1,k); subplot(3,2,1);zplane(z1,p1); title('极点在单位圆内'); subplot(3,2,2);impz(b1,a1,20); z2=[0.3,0]';p2=[0.6+0.8j,0.6-0.8j]'; [b2,a2]=zp2tf(z2,p2,k); subplot(3,2,3);zplane(z2,p2); title('极点在单位圆上'); subplot(3,2,4);impz(b2,a2,20); z3=[0.3,0]';p3=[1+j,1-j]';
[b3,a3]=zp2tf(z3,p3,k); subplot(3,2,5);zplane(z3,p3); title('极点在单位圆外'); subplot(3,2,6);impz(b3,a3,20);
程序运行结果如图3-3所示。
由图可见,这三个系统的极点均为复数且处于z 平面的右半平面。
由图可知,当极点位于单位圆内,系统的单位序列响应随着频率的增大而收敛;当极点位于单位圆上,系统的单位序列响应为等幅振荡;当极点位于单位圆外,系统的单位序列响应随着频率的增大而发散。
由此可知系统1、2为稳定系统。
-2
02
Real Part
I m a g i n a r y P a r t
极点在单位圆内
5
1015
n (samples) A m p l i t u d e
Impulse Response
-2
02-101
Real Part
I m a g i n a r y P a r t
极点在单位圆上
5
1015
n (samples) A m p l i t u d e
Impulse Response
-2
02
-101
Real Part
I m a g i n a r y P a r t
极点在单位圆外
05
1015
n (samples)
A m p l i t u d e
Impulse Response
图3-3
由以上三例可得结论:系统只有在极点处于单位圆内才是稳定的。
例3-6 已知某离散时间系统的系统函数为
1234
1234
0.20.10.30.10.2()1 1.1 1.50.70.3z z z z H z z z z z --------++++=-+-+
求该系统的零极点及零极点分布图,并判断系统的因果稳定性。
程序清单如下: b=[0.2,0.1,0.3,0.1,0.2]; a=[1,-1.1,1.5,-0.7,0.3]; rz=roots(b) rp=roots(a)
subplot(2,1,1);zplane(b,a); title('系统的零极点分布图'); subplot(2,1,2);impz(b,a,20); title('系统的单位序列响应'); xlabel('n');ylabel('h(n)'); 程序运行结果如下:
rz =
-0.5000 + 0.8660i -0.5000 - 0.8660i 0.2500 + 0.9682i 0.2500 - 0.9682i rp =
0.2367 + 0.8915i 0.2367 - 0.8915i 0.3133 + 0.5045i 0.3133 - 0.5045i
-3
-2
-1
012
3
Real Part
I m a g i n a r y P a r t
系统的零极点分布图
2
4
6
8
10
12
14
16
18
n h (n )
系统的单位序列响应
图3-4。