当前位置:首页 > 实验指导书2011.3.8信号分析与处理
1?z?16 已知某离散因果系统的系统函数H(z)?,试分析该系统的幅?1?21?z?0.5z频特性。
三、实验主要仪器设备和材料
计算机
四、实验方法、步骤及结果测试
实验方法:编程,上机调试,分析实验结果; 步骤: 编程实现上述各实验内容 五、实验报告要求
1) 简述实验目的及实验原理。
2) 按实验步骤附上实验过程中系统单位脉冲响应及系统响应序列的时
域和幅频特性曲线,并对所得结果进行分析和解释。 3) 总结实验中的主要结论。 4) 简要回答思考题 六、思考题
1) 连续系统响应的计算机求解可以分为哪些方法?各是什么原理? 2) matlab中用于离散系统求解的命令有哪些?各基于什么求解方法?
17
实验二解题思路及部分题目的参考程序 利用matlab进行系统的时域分析 ◆连续时间系统零状态响应的求解
◆连续时间系统冲激响应和阶跃响应的求解 ◆离散时间系统零状态响应的求解 ◆离散时间系统单位脉冲响应的求解 ◆离散卷积的计算 一、 连续时间系统零状态响应的求解
y?lsim(sys,f,t)
t表示计算系统响应的抽样点向量,f是系统输入信号向量 sys是LTI系统模型,借助tf函数获得。 sys?tf(b,a)
b和a分别为微分方程右端和左端各项的系数向量
a3y'''(t)?a2y''(t)?a1y'(t)?a0y(t)?b3f'''(t)?b2f''(t)?b1f'(t)?b0f(t)
a?[a3,a2,a1,a0]b?[b3,b2,b1,b0] sys?tf(b,a)二、 连续系统冲激响应和阶跃响应的求解
连续时间系统冲激响应可用impulse函数直接求出,其调用形式为:
y=impulse(sys,t)
连续时间系统阶跃响应可用step函数直接求出,其调用形式为: y=step(sys,t)
t表示计算系统响应的抽样点向量, sys是LTI系统模型. 三、 离散时间系统零状态响应的求解
y=filter(b,a,f)
b和a分别为差分方程左、右端各项的系数向量 f表示输入序列,y表示输出序列
?ay[k?i]??bf[k?j]
iji?0j?0nm可用MATLAB表示为
b?[b0,b1,b2,......,bm];a?[a0,a1,a2,......,an];
四、 离散时间系统单位脉冲响应的求解
H=impz(b,a,k)
b和a分别为差分方程左、右端各项的系数向量 k表示输出序列的取值范围 h就是单位脉冲响应 五、 离散卷积的计算
c=conv(a,b)
式中a,b为待卷积两序列的向量表示,c是卷积结果。 conv函数也可用于计算两个多项式的积 例1:(s?2s?3)(s?3s?2)可用下面MATLAB语句求出
32a?[1,0,2,3] b?[1,3,2]
'c?con(va,b)例2:求系统y(t)?2y(t)?100y(t)?10f(t)的零状态响应,已知f(t)?sin(2?t)u(t) %微分方程求解
ts=0;te=5;dt=0.01; sys=tf([10],[1 2 100]);
18
''
t=ts:dt:te; f=sin(2*pi*t); y=lsim(sys,f,t); plot(t,y) xlabel(?time(sec)‘) ylabel(?y(t)‘)
'''例3:求系统y(t)?2y(t)?100y(t)?10f(t)的零状态响应,已知f(t)??(t)。 %连续时间系统的冲击响应 ts=0;te=5;dt=0.01; sys=tf([10],[1 2 100]); t=ts:dt:te; f=sin(2*pi*t); y=impulse(sys,t); plot(t,y)
xlabel(?time(sec)‘) ylabel(?h(t)‘)
例4:求系统y[k]?3y[k?1]?2y[k?1]?10f[k]的单位脉冲响应 %离散系统的单位脉冲响应 k=0:10; a=[1 3 2]; b=[10];
h=impz(b,a,k); stem(k,h)
例5:计算x[k]*y[k]并画出卷积结果,已知
x[k]={1,2,3,4;k=0,1,2,3},y[k]={1,1,1,1,1;k=0,1,2,3,4}。 x=[1,2,3,4]; y=[1,1,1,1,1]; z=conv(x,y) N=length(z) stem(0:N-1,z)
%实验二第1题参考程序
%this program is to practice with system response num=[1];den=[ 1 3 2]; % system model
y1=impulse(num,den); %impulse()函数的详细解释见后面 subplot(121); plot(y1); title('impulse response');
y2=step(num,den); %step()函数的详细解释见后面 subplot(122); plot(y2);
title('step response');
%实验二第2题参考程序
%使用x[n]补零后的x1来产生y1,是因为存在边界效应,只要脉冲响应采样的部分位于输入信号采样值之外,输出就不确定。用conv函数计算能在输入序列后自动补零,而filter函数不能。 %
理论计算结果: 单位冲激响应:
n 0 h[n] 1 Y[n] 1
y[n]?0.75y[n?1]?0.125y[n?2]?x[n]?x[n?1] y[n]?0.25{x[n?1]?x[n?2]?x[n?3]?x[n?4]} y[n]?0.75y[n?1]?0.125y[n?2]?x[n]?x[n?1] H[n]??[n]??[n?1]?0.75h[n?1]?0.125h[n?2]
1 2 -1.75 1.19 -1.75 1.19 3
-0.67 -0.67 4 0.355 0.355 5 …… -0.18 ……. -0.18 ……
19
单位阶跃响应:
y[n]??0.75y[n?1]?0.125y[n?2]??[n]
n 0 1 2 3 4 5 …… Y[n] 1 -0.75
0.44
-0.234
0.12
-0.06 ……
y[n]?0.25{x[n?1]?x[n?2]?x[n?3]?x[n?4]}单位冲激响应:
n 0 1 2 3 4 5 …… Y[n] 0 0.25 0.25 0.25 0.25 0 ……
单位阶跃响应: n 0 1 2 3 4 5 …… Y[n] 0 0.25 0.5 0.75
1
1 ……
程序计算结果:
I. y[n]?0.75y[n?1]?0.125y[n?2]?x[n]?x[n?1]
a. 单位冲激响应: (1)用filter函数 a1=[1,0.75,0.125]; b1=[1,-1]; n=0:20;
x1=[1 zeros(1,20)];
y1filter=filter(b1,a1,x1); stem(n,y1filter); title('y1filter'); xlabel('x'); ylabel('y');
y1filter1.510.50y-0.5-1-1.5-202468101214161820x(2)用conv函数 a1=[1,0.75,0.125]; b1=[1,-1];
x1=[1 zeros(1,10)]; [h]=impz(b1,a1,10); y1conv=conv(h,x1); n=0:19;
stem(n,y1conv,'filled')
20
共分享92篇相关文档