信号与系统仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信号与系统仿真
电气工程学院09级1班
2009302540017
于岳川
综述:本仿真课共有五个试验内容,内容涉及到冲击响应,阶跃响应,DFT,FFT,IFFT等内容。本人通过所学知识和查阅相关资料,对每个试验都进行了扩展试验,写在解题分析部分,目的在于验证仿真结果的准确性并同时对题目进行更深入的分析。其中一些试验,本人运用了对比的方法,验证了课本上所学的一些知识,对理论进行了验证和巩固。由于本人水平有限,时间仓促,谬误之处在所难免,请老师批评指正,如果时间允许,希望能得到老师的评价。本人邮箱:yuyuechuan1990@
实验一
一、实验题目:
求三阶系统H(s)=5(s^2+5s+6)/(s^3+6s^2+10s+8)的单位阶跃相应,并绘制响应波形图。
二、Matlab编程
b=[5 25 30];
a=[1 6 10 8];
sys=tf(b,a);%求传递函数
t=0:0.01:10;
u=step(sys,t); %绘制输出函数图象
plot(t,u),grid;
title('单位阶跃响应')
三.改进方法
同样对于此题,可以用simulink进行仿真,仿真结果如下:
可见结果一致,且使用起来比编程方便一些。
四.解题分析:
对令分母=0.解此方程,得到:
>> p=[1 6 10 8];
>> x=roots(p)
x =
-4.0000
-1.0000 + 1.0000i
-1.0000 - 1.0000i
可见系统的极点都在左半开平面,因此系统是稳定的,这在两张阶跃响应的图上也得到了验证。
另外,在编程中使用了tf求传递函数。
实验二
一、实验题目
一个因果线性移不变系统求:y(n)=0.81y(n-2)+x(n)-x(n-2) (1)H(z);(2)冲激响应;(3)单位阶跃响应;(4)H(e^jw),并绘出幅频和相频特性
二.Matlab编程
b=[1 0 -1];
a=[1 0 -0.81];
figure(1);
subplot(2,1,1);
dimpulse(b,a),grid %求冲击响应
title('冲击响应')%求阶跃响应
subplot(2,1,2);
dstep(b,a) %求阶跃响应
title('阶跃响应')
w=[0:0.01:1]*pi;
figure(2);
freqz(b,a,w) %求频率特性
title(‘频率响应’)
图2.1
图2.2
三.改进方法
1.在第一次编程时,没有设置单位冲击响应和阶跃响应的时间(dimpulse(b,a),grid;dstep(b,a),grid)所以所绘制的图
2.1在30秒和50秒后图象基本与横轴重合,无法辨认,因此重设响应时间为30s和50s,重新运行结果如下:
可见图形更加容易辨认
2.前边程序还有也缺点就是不能输出H(z)的表达式,使用符号变量可以实现,故加写程序如下:
syms z
Hz=(1-z^-2)/(1-0.81*z^-2)
pretty(Hz)
运行结果:
Hz =
(1/z^2 - 1)/(81/(100*z^2) - 1)
1
-- - 1
2
z
----------
81
------ - 1
2
100 z
四.解题分析
此题分析了差分方程描述的单位冲击响应和单位阶跃响应,学习了绘制频率特性的函数freqz. 此函数将幅频特性和相频特性分开绘制。
此外,本人还由系统函数Z反变换求解了h(n)的表达式,具体办成如下:
syms n z
Hz=((1-z^-2)/(1-0.81*z^-2));%定义系统函数
fn=iztrans(Hz,n)%求Z反变换
pretty(fk);%美化输出表达式
运行结果如下:
fn =
(100*kroneckerDelta(n, 0))/81 - (19*(9/10)^n)/162 -
(19*(-9/10)^n)/162
/ 9 \k / 9 \k
19 | -- | 19 | - -- |
100 kroneckerDelta(k, 0) \ 10 / \ 10 /
------------------------ - ---------- - ------------
81 162 162
关于上边出现的kroneckerDelta函数,我再网上找到一些资料,但是还是没弄清楚。可能是我做的有错误。
实验三
一、实验题目:
模拟信号x(t)=2sin(4pi*t)+5cos(8pi*t),求N=64的DFT的幅值谱和相位谱。二.Matlab编程:
N=64;%采样点数
N=64;%计64点DFT
t=(0:N-1)*0.1;
x=2*sin(4*pi*t)+5*cos(8*pi*t);
xk=fft(x,N);
k=t*2*pi/N;
subplot(2,1,1),stem(k,abs(xk)),title('64点DFT的幅值谱');
subplot(2,1,2),stem(k,angle(xk)),title('64点DFT的相位谱');