实验二连续线性时不变系统分析
姓名 罗治民 班级电子12--BF 学号 14122502289 日期 2014.6.17 成绩
一、实验目的:深刻理解连续时间系统的系统函数在分析连续系统的时域特性、频域特性及稳定性中的重要作用及意义。掌握利用MATLAB分析连续系统的时域响应、频响特性和零极点的基本方法。
二、实验条件:计算机一台,MATLAB软件。
三、实验原理:
1. 连续系统的时域响应
(1)单位冲激响应h(t)
impulse(sys)计算系统的冲激响应。sys由函数tf(b,a)。h=impulse(sys, t);
微分方程: 该系统的单位冲激响应h(t)。
a=[1,5,6]; b=[2,8]; sys=tf(b,a); t=0:0.1:10; h=impulse(sys,t);
plot(h); xlabel('t'); title('h(t)');
(2)单位阶跃响应g(t)
step(sys)计算系统的阶跃响应。sys由函数tf(b,a),g=step(sys, t);微分方程: 该系统的阶跃响应响应h(t)。
a=[1,5,6]; b=[2,8]; sys=tf(b,a); t=0:0.1:10; g=step(sys,t);
plot(g); xlabel('t'); title('g(t)');
(3) 零输入响应yzi(t): dsolve(’equ1’,’equ2’,…)计算零输入响应。
微分方程: 输入为y(0-)=1,y’(0-)=1,时系统的零输入响应。
MATLAB程序:yi=dsolve('D2y+3*Dy+2*y=0','y(0)=1,Dy(0)=1');
t=0:0.1:10; ezplot(yi,t); title('yi'); ylabel('yi');
(4)零状态响应yzs(t)
lsim(sys, x, t) 系统的零状态响应。参数: sys可由函数tf(b,a)获得
x为输入信号,t为定义的时间向量。
微分方程: ,输入 为时系统的零状态响应。
a=[1,5,6]; b=[2,8]; sys=tf(b,a); t=0:10/300:10; x=exp(-t);
y=lsim(sys,x,t); plot(t,y);
(5)连续系统的全响应y(t)的计算
全响应:
MATLAB提供了专门用于求解连续系统这些响应的函数dsolve(),其调用格式为:dsolve(’equ1’,’equ2’,…)
2.连续系统的系统函数零极点分析:MATLAB中提供了roots函数计算系统的零极点,提供了pzmap函数绘制连续系统的零极点分布图。
系统函数为: 计算其零极点,画出分布图。
b=[2,3,1];a=[1,2,2,1];
z=roots(b);p=roots(a);
sys=tf(b,a);
pzmap(sys);
3.连续系统的频率响应
MATLAB中freqs函数可以分析连续系统的频响,格式如下:
H=freqs(b,a,w);
计算系统在指定频率点向量w上的频响H;w为频率点向量。
[H,w]=freqs(b,a);%自动选取200个频率点计算频率响应。
已知某连续系统的系统函数为: 分析系统的幅频率特性。
b=[1]; a=conv([1,1],[1,1,1]);
[H,w]=freqs(b,a);
plot(w,abs(H));
xlabel('Frequency(rad/s)');
ylabel('Amplitude');
title('Magnitude response');
四、实验步骤及结果测试:(包括程序、结果图)
1.描述某线性时不变系统的微分方程为:
且f(t)=t2,y(0-)=1,y’(0-)=1;试求系统的单位冲激响应、单位阶跃响应、全响应、零状态响应、零输入响应、自由响应和强迫响应。编写相应MATLAB程序,画出各波形图。
解:冲激响应:t=0:0.1:10; b=[1,2]; a=[1,3,2];
sys=tf(b,a); h=impulse(sys,t);
plot(t,h);
xlabel('t'); title('h(t)');
阶跃响应:t=0:0.1:10; b=[1,2]; a=[1,3,2];
sys=tf(b,a); g=step(sys,t);
plot(t,g);
xlabel('t'); title('g(t)');
全响应: t=0:0.1:10;
yt=dsolve('D2y+3*Dy+2*y=2*t+2*t^2','y(0)=1,Dy(0)=1');
ezplot(yt,t);
xlabel('t'); ylabel('y') ;
title('y(t)');
零状态响应:a=[1,3,2]; b=[1,2]; sys=tf(b,a);
t=0:10/300:10; x=square(t); ys=lsim(sys,x,t);
plot(t,ys); xlabel('t'); title('ys(t)')
零输入响应:t=0:0.1:10; yit=dsolve('D2y+3*Dy+2*y=0','y(0)=1,Dy(0)=1');
ezplot(yit,t); xlabel('t'); title('yit');
2.给定一个连续线性时不变系统,描述其输入输出之间关系的微分方程为:编写MATLAB程序,绘制系统的幅频响应、相频响应、频率响应的实部和频率响应的虚部的波形,确定滤波器的类型。
解: b=[1]; a=[1,3,2];
[H,w]=freqs(b,a);
figure(1); plot(w,abs(H)); title('幅频响应');xlabel('rad/s');
figure(2); plot(w,angle(H)); title('相频频响应');xlabel('rad/s');
figure(3); plot(w,real(H)); title('频率响应实部');xlabel('rad/s');
figure(4); plot(w,imag(H)); title('频率响应虚部');xlabel('rad/s');
由幅频响应知其为带通滤波器。
3.已知系统函数为,试用MATLAB画出系统的零极点分布图,冲激响应波形、阶跃响应波形、幅频响应曲线和相频响应曲线,并判断系统的稳定性。
解: b=[1,-2,0.8]; a=[1,2,2,1];
z=roots(b); p=roots(a);
sys=tf(b,a); pzmap(sys); title('零极点分布');
冲激响应:b=[1,-2,0.8]; a=[1,2,2,1]; sys=tf(b,a);
h=impulse(sys,t); plot(t,h); title('h(t)');
阶跃响应:t=0:0.1:10; b=[1,-2,0.8]; a=[1,2,2,1];
sys=tf(b,a); g=step(sys,t); plot(t,g);
title('g(t)');
频率响应:b=[1,-2,0.8]; a=[1,2,2,1];
[H,w]=freqs(b,a);
figure(1); plot(w,abs(H)); title('幅频响应');
figure(2); plot(w,angle(H)); title('相频响应');
是稳定系统,因为极点分布在jw轴的左边故系统稳定。
四、思考题:
1.系统函数的零极点对系统频率特性有何影响?
答:极点主要影响频率响应的峰值,极点愈靠近单位圆,峰值愈尖锐;零点主要影响频率特性的谷值,零点愈靠近单位圆,谷值愈深,当零点在单位圆上时,频率特性为零,一个传递函数有几个极点幅度响应就有几个峰值,对应出现一些谷值。频率特性还要受零点影响。
3.如何根据系统的幅频特性计算出系统的截止频率?
答:当保持电路输入信号的幅度不变,改变频率使输出信号降至最大值的0.707倍,或某一特殊额定值时该频率称为截止频率。
第二篇:信号与系统实验报告3 (2)
信号与系统实验
实验三:信号的卷积
(第三次实验)
【实验目的】
1. 理解卷积的物理意义;
2. 掌握运用计算机进行卷积运算的原理和方法;
3. 熟悉卷积运算函数conv的应用;
【实验内容】
给定如下因果线性时不变系统:
y[n]+0.71y[n-1]-0.46y[n-2]-0.62y[n-3=0.9x[n]-0.45x[n-1]+0.35x[n-2]+0.002x[n-3]
(1)不用impz函数,使用filter命令,求出以上系统的单位冲激响应h[n]的前20个样本;
代码如下:
clear all;
N=[0:19];
num=[0.9 -0.45 0.35 0.002];
den=[1 0.71 -0.46 -0.62];
h=filter(num,den,N);
stem(N,h);
xlabel('ʱ¼äÐòºÅ');
ylabel('Õñ·ù');
title('µ¥Î»³å¼¤ÏìÓ¦');
grid;
图像如下:
(2)得到h[n]后,给定x[n],计算卷积输出y[n];并用滤波器h[n]对输入x[n]滤波,求得y1[n];
代码如下:
clear all;
N=[0:19];
num=[0.9 -0.45 0.35 0.002];
den=[1 0.71 -0.46 -0.62];
h=filter(num,den,N);
x=[1 -2 3 -4 3 2 1];
y=conv(h,x);
n=0:25;
subplot(2,1,1);
stem(n,y);
xlabel('时间序号n');ylabel('振幅');
title('用卷积得到的输出');grid;
x1=[x zeros(1,19)];
y1=filter(h,1,x1);
subplot(2,1,2);
stem(n,y1);
xlabel('时间序号n ');ylabel('振幅');
title('用滤波得到的输出');grid;
图像如下:
(3)y[n]和)y1[n]有差别吗?为什么要对x[n]进行补零得到的x1[n]来作为输入来产生y1[n]?
(4)思考:设计实验,证明下列结论
① 单位冲激信号卷积:? ?
代码如下:
clc;
clear all;
n=[0:20];
d=(n==0);
f=sin(n);
f1=conv(d,f);
subplot(3,1,1);
f1=f1(1:21);
stem(n,f1);
title('¦Ä[n]*f[n]');
grid;
subplot(3,1,2);
stem(n,f);
title('f[n]');
grid;
subplot(3,1,3);
stem(n,f-f1);
title('¦Ä[n]*f[n]-f[n]');
grid;
图像如下:
② 卷积交换律:
代码如下:
clc;
clear all;
n=0:30;
f1=sin(n);
f2=cos(n);
y1=conv(f1,f2);
y1=y1(1:31);
y2=conv(f2,f1);
y2=y2(1:31);
subplot(3,1,1);
stem(n,y1);
title('f1*f2');
grid;
subplot(3,1,2);
stem(n,y2);
title('f2*f1');
grid;
subplot(3,1,3);
y3=(y1-y2)>10^-14;
stem(n,y3);
grid;
图像如下:
③卷积分配律:
代码如下:
clc;
clear all;
n=1:50;
f1=(-1).^n;
f2=cos(n);
f3=sin(n);
y1=conv(f1,(f2+f3));
y1=y1(1:50);
y2=conv(f1,f2)+conv(f1,f3);
y2=y2(1:50);
subplot(3,1,1);
stem(n,y1);
title('f1*[f2+f3]');
grid;
subplot(3,1,2);
stem(n,y2);
title('f1*f2+f1*f3');
grid;
subplot(3,1,3);
y3=(y1-y2)>10^-14;
stem(n,y3);
title('f1*[f2+f3]-f1*f2+f1*f3');
grid;
图像如下:
【实验分析】:
1. y[n]和)y1[n]有差别吗?为什么要对x[n]进行补零得到的x1[n]来作为输入来产生y1[n]?
答:y[n]和)y1[n]是对同一个系统输入的响应,该系统是因果线性时不变系统,所以y[n]和)y1[n]没有差别;由于y[n]和)y1[n]没有差别,滤波器h[n]对x[n]滤波得到的y1[n]和用卷积计算得到的y[n]是同一个信号;
2. 卷积分配率程序代码中f1的n时间序号长度n为[1:50],f2的n时间序号长度为[1:50],所以输出完整信号的长度为99,而程序中输出长度仅50,说明这只是信号的部分波形。
3. 单位冲击响应δ[t],与任何信号的卷积等于此信号本身。