matlab 实验一.docx
《matlab 实验一.docx》由会员分享,可在线阅读,更多相关《matlab 实验一.docx(13页珍藏版)》请在冰豆网上搜索。
![matlab 实验一.docx](https://file1.bdocx.com/fileroot1/2022-11/16/3646dabc-2ab3-4c17-ae79-dce24dd805ef/3646dabc-2ab3-4c17-ae79-dce24dd805ef1.gif)
matlab实验一
北京信息科技大学
信号与系统
实验一信号与系统的时域分析
JonMMx2000
2014-4-10
实验一信号与系统的时域分析
一、实验目的
1、用示波器观察一阶电路的零输入响应,零状态响应及完全响应。
2、理解并掌握一阶电路各响应的物理意义。
3、观察和测定RLC串联电路的阶跃响应和冲激响应,并研究电路参数对响应波形的影响。
4、观察RLC并联谐振电路对高频脉冲激励的响应,并研究电路参数对响应波形的影响。
5、熟悉和掌握常用的用于信号与系统时域仿真分析的Matlab函数;
6、牢固掌握系统的单位冲激响应的概念,掌握LTI系统的卷积表达式及其物理意义,掌握卷积的计算方法、卷积的基本性质;
7、掌握Matlab描述LTI系统的常用方法及有关函数,并学会利用Matlab求解LTI系统响应,绘制相应曲线。
二、实验原理(Matlab部分)
1、信号的时域表示方法
1.1将信号表示成独立时间变量的函数
例如x(t)=sin(ωt)和x[n]=n(0.5)nu[n]分别表示一个连续时间信号和一个离散时间信号。
1.2用信号的波形图来描述信号
用函数曲线表示一个信号,图1-3就是一个连续时间信号和一个离散时间信号的波形图。
图1-3连续时间信号与离散时间信号的波形图
2、用Matlab仿真连续时间信号和离散时间信号
在Matlab中,无论是连续时间信号还是离散时间信号,Matlab都是用一个数字序列来表示信号,这个数字序列在Matlab中叫做向量。
通常的情况下,需要与时间变量相对应。
Matlab有很多内部数学函数可以用来产生这样的数字序列,例如sin()、cos()、exp()等函数可以直接产生一个按照正弦、余弦或指数规律变化的数字序列。
2.1连续时间信号的仿真
常用的图形控制函数:
axis([xmin,xmax,ymin,ymax]):
图型显示区域控制函数,其中xmin为横轴的显示起点,xmax为横轴的显示终点,ymin为纵轴的显示起点,ymax为纵轴的显示终点。
有时,为了使图形具有可读性,需要在所绘制的图形中,加上一些网格线来反映信号的幅度大小。
Matlab中的gridon/gridoff可以实现在你的图形中加网格线。
gridon:
在图形中加网格线。
gridoff:
取消图形中的网格线。
x=input(‘Typeinsignalx(t)inclosedform:
’)
在《信号与系统》课程中,单位阶跃信号u(t)和单位冲激信号δ(t)是两个非常有用的信号。
它们的定义如下
1.1(a)
1.1(b)
这里分别给出相应的简单的产生单位冲激信号和单位阶跃信号的扩展函数。
产生单位冲激信号的扩展函数为:
functiony=delta(t)
dt=0.01;
y=(u(t)-u(t-dt))/dt;
产生单位阶跃信号的扩展函数为:
%Unitstepfunction
functiony=u(t)
y=(t>=0);%y=1fort>0,elsey=0
请将这两个Matlab函数分别以delta和u为文件名保存在work文件夹中,以后,就可以像教材中的方法使用单位冲激信号δ(t)和单位阶跃信号u(t)。
2.2离散时间信号的仿真
程序Program1_2用来产生离散时间信号x[n]=sin(0.2πn)。
%Program1_2
%Thisprogramisusedtogenerateadiscrete-timesinusoidalsignalanddrawitsplot
clear,%Clearallvariables
closeall,%Closeallfigurewindows
n=-10:
10;%Specifytheintervaloftime
x=sin(0.2*pi*n);%Generatethesignal
stem(n,x)%Openafigurewindowanddrawtheplotofx[n]
title('Sinusoidalsignalx[n]')
xlabel('Timeindexn')
请仔细阅读该程序,比较程序Program1_1和Program1_2中的不同之处,以便自己编程时能够正确使用这种方法仿真连续时间信号和离散时间信号。
2.3.1信号的时移
信号的时移可用下面的数学表达式来描述:
设一个连续时间信号为x(t),它的时移y(t)表示为:
y(t)=x(t-t0)1.3
其中,t0为位移量。
若t0为正数,则y(t)等于将x(t)右移t0秒之后的结果。
反之,若t0为负数,则y(t)等于将x(t)左移t0秒之后的结果。
在Matlab中,时移运算与数学上习惯表达方法完全相同。
程序Program1_5对给定一个连续时间信号x(t)=e-0.5tu(t),对它分别左移2秒钟和右移2秒钟得到信号x1(t)=e-0.5(t+2)u(t+2)和x2(t)=e-0.5(t-2)u(t-2)。
%Program1_5
%Thisprogramisusedtoimplementthetime-shiftoperation
%onacontinuous-timesignalandtoobtainitstime-shiftedversions
%andtodrawtheirplots.
clear,closeall,
t=-5:
0.01:
5;
x=exp(-0.5*t).*u(t);%Generatetheoriginalsignalx(t)
x1=exp(-0.5*(t+2)).*u(t+2);%Shiftx(t)totheleftby2secondtogetx1(t)
x2=exp(-0.5*(t-2)).*u(t-2);%Shiftx(t)totherightby2secondtogetx2(t)
subplot(311)
plot(t,x)%Plotx(t)
gridon,
title('Originalsignalx(t)')
subplot(312)
plot(t,x1)%Plotx1(t)
gridon,
title('Leftshiftedversionofx(t)')
subplot(313)
plot(t,x2)%Plotx2(t)
gridon,
title('Rightshiftedversionofx(t)')
xlabel('Timet(sec)')
3、LTI系统的时域描述
3.3卷积的计算
卷积的计算通常可按下面的五个步骤进行(以卷积积分为例):
1.该换两个信号波形图中的横坐标,由t改为τ,τ变成函数的自变量;
2.把其中一个信号反褶,如把h(τ)变成h(-τ);
3.把反褶后的信号移位,移位量是t,这样t是一个参变量。
在τ坐标系中,t>0时图形右移,t<0时图形左移。
4.计算两个信号重叠部分的乘积x(τ)h(t-τ);
5.完成相乘后图形的积分。
对于两个时限信号(Time-limitedsignal),按照上述的五个步骤,作卷积积分运算时,关键是正确确定不同情况下的积分限。
只要正确地确定了积分限都能得到正确定积分结果。
尽管如此,在时域中计算卷积积分,总体上来说是一项比较困难的工作。
借助Matlab的内部函数conv()可以很容易地完成两个信号的卷积积分运算。
其语法为:
y=conv(x,h)。
其中x和h分别是两个作卷积运算的信号,y为卷积结果。
为了正确地运用这个函数计算卷积,这里有必要对conv(x,h)做一个详细说明。
conv(x,h)函数实际上是完成两个多项式的乘法运算。
例如,两个多项式p1和p2分别为:
和
这两个多项式在Matlab中是用它们的系数构成一个行向量来表示的,如果用x来表示多项式p1,h表示多项式p2,则x和h分别为
x=[1234]
h=[4321]
在Matlab命令窗口依次键入
>>x=[1234];
>>h=[4321];
>>y=conv(x,h)
在屏幕上得到显示结果:
y=411203020114
这表明,多项式p1和p2的乘积为:
正如前所述,用Matlab处理连续时间信号时,独立时间变量t的变化步长应该是很小的,假定用符号dt表示时间变化步长,那么,用函数conv()作两个信号的卷积积分时,应该在这个函数之前乘以时间步长方能得到正确的结果。
也就是说,正确的语句形式应为:
y=dt*conv(x,h)。
对于定义在不同时间段的两个时限信号x(t),t0≤t≤t1,和h(t),t2≤t≤t3。
如果用y(t)来表示它们的卷积结果,则y(t)的持续时间范围要比x(t)和h(t)长,其时间范围为t0+t2≤t≤t1+t3。
这个特点很重要,利用这个特点,在处理信号在时间上的位置时,可以很容易地将信号的函数值与时间轴的位置和长度关系保持一致性。
根据给定的两个连续时间信号x(t)=t[u(t)-u(t-1)]和h(t)=u(t)-u(t-1),编写程序,完成这两个信号的卷积运算,并绘制它们的波形图。
范例程序如下:
%Program1_6
%Thisprogramcomputestheconvolutionoftwocontinuou-timesignals
clear;closeall;
t0=-2;t1=4;dt=0.01;
t=t0:
dt:
t1;
x=u(t)-u(t-1);
h=t.*(u(t)-u(t-1));
y=dt*conv(x,h);%Computetheconvolutionofx(t)andh(t)
subplot(221)
plot(t,x),gridon,title('Signalx(t)'),axis([t0,t1,-0.2,1.2])
subplot(222)
plot(t,h),gridon,title('Signalh(t)'),axis([t0,t1,-0.2,1.2])
subplot(212)
t=2*t0:
dt:
2*t1;%Againspecifythetimerangetobesuitabletothe
%convolutionofxandh.
plot(t,y),gridon,title('Theconvolutionofx(t)andh(t)'),axis([2*t0,2*t1,-0.1,0.6]),
xlabel('Timetsec')
3.4用线性常系数微分方程描述LTI系统
线性常系数微分方程或差分方程是描述LTI系统的另一个时域模型。
一个连续时间LTI系统,它的输入信号x(t)输出信号y(t)关系可以用下面的微分方程来表达
1.12
式1.12中,max(N,M)定义为系统的阶。
式1.12描述了LTI系统输入信号和输出信号的一种隐性关系(Implicitrelationship)。
为了求得系统响应信号的显式表达式(Explicitexpression),必须对微分方程和差分方程求解。
在Matlab中,一个LTI系统也可以用系统微分方程的系数来描述,例如,一