实验一信号的时域描述与运算一、实验目的①掌握信号的MATLAB表示及其可视化方法。②掌握信号基本时域运算的MATLAB实现方法。③利用MATLAB分析常用信号,加深对信号时域特性的理解。二、实验原理与方法1.连续时间信号的MATLAB表示连续时间信号指的是在连续时间范围内有定义的信号,即除了若干个不连续点外,在任何时刻信号都有定义。在MATLAB中连续时间信号可以用两种方法来表示,即向量表示法和符号对象表示法。从严格意义上来说,MATLAB并不能处理连续时间信号,在MATLAB中连续时间信号是用等时间间隔采样后的采样值来近似表示的,当采样间隔足够小时,这些采样值就可以很好地近似表示出连续时间信号,这种表示方法称为向量表示法。表示一个连续时间信号需要使用两个向量,其中一个向量用于表示信号的时间范围,另一个向量表示连续时间信号在该时间范围内的采样值。例如一个正弦信号可以表示如下:t=0:0.01:10;x=sin(t);利用plot(t,x)命令可以绘制上述信号的时域波形,如图1所示。如果连续时间信号可以用表达式来描述,则还可以采用符号表达式來表示信号。例如对于上述正弦信号,可以用符号对象表示如下:x=sin(t);ezplot(X);利用ezplot(x)命令可以绘制上述信号的时域波形012345678910-1-0.8-0.6-0.4-0.200.20.40.60.81Time(seconds)图1利用向量表示连续时间信号常用的信号产生函数函数名功能函数名功能heaviside单位阶跃函数rectpuls门函数sin正弦函数tripuls三角脉冲函数cos余弦函数square周期方波sincsinc函数sawtooth周期锯齿波或三角波exp指数函数-6-4-20246-1-0.500.51t图2利用符号对象表示连续时间信号sin(t)2.连续时间信号的时域运算对连续时间信号的运算包括两信号相加、相乘、微分、积分,以及位移、反转、尺度变换(尺度伸缩)等。1)相加和相乘信号相加和相乘指两信号对应时刻的值相加和相乘,对于两个采用向量表示的可以直接使用算术运算的运算符“+”和“*”来计算,此时要求表示两信号的向量时间范围和采样间隔相同。采用符号对象表示的两个信号,可以直接根据符号对象的运算规则运算。2)微分和积分对于向量表示法表示的连续时间信号,可以通过数值计算的方法计算信号的微分和积分。这里微分使用差分来近似求取的,由时间向量[Nttt,,,21]和采样值向量[Nxxx,,,21]表示的连续时间信号,其微分可以通过下式求得1,,2,1,|)('1Nktxxtxkkttk其中t表示采样间隔。MATLAB中用diff函数来计算差分kkxx1。连续时间信号的定积分可以由MATLAB的qud函数实现,调用格式为quad('function_name',a,b)其中,function_name为被积函数名,a、b为积分区间。对于符号对象表示的连续时间信号,MATLAB提供了diff函数和quad函数分别用于求微分和积分。3.离散时间信号的MATLAB表示离散时间信号仅在一些离散时刻有定义。在MATLAB中离散时间信号需要使用两个向量来表示,其中一个向量用于表示离散的时间点,另一个向量表示在这些时间点上的值。例如对于如下时间信号}3,2,1,1,2,1,2,3{)(nx采用MATLAB可以表示如下:n=-3:4;x=[-32-121-123];stem(n,x,'filled');xlabel('n');title('x(n)');Stem函数用于绘制离散时间信号波形,为了与我们表示离散时间信号的习惯相同,在绘图时一般需要添加‘filled’选项,以绘制实心的杆状图形。上述命令绘制的信号时域波形如图3所示。-3-2-101234-3-2-10123n图3离散时间信号示例x(n)4.离散时间信号的时域运算离散时间信号的相加相乘是将两个信号对应的时间点上的值相加或相乘,可以直接使用算术运算的运算符“+”和“*”来计算。离散时间信号的位移,则可看作是将表示时间的向量平移,而表示对应时间点上的值的向量不变。离散时间信号的反转,则可以看作是将表示时间的向量和表示对应时间点上的值的向量以零点为基准点,一纵轴为对称轴反折,向量的反折可以利用MATLAB的fliplr函数实现。三、实验内容(1)、利用MATLAB绘制下列连续时间信号的波形:1、)()1()(5.0tuetxt(1)1、symst;x(t)=(1-exp(-0.5*t))*heaviside(t)x(t)=-heaviside(t)*(exp(-t/2)-1)ezplot(x)012345600.10.20.30.40.50.60.70.80.91t-heaviside(t)(exp(-t/2)-1)2、)]2()()[cos()(tututtxsymst;x=cos(pi*t)*(heaviside(t)-heaviside(t-2))x=-cos(pi*t)*(heaviside(t-2)-heaviside(t))ezplot(x)00.20.40.60.811.21.41.61.82-1-0.500.51t-cos(t)(heaviside(t-2)-heaviside(t))3、)]2()2()[2cos(2||)(tututttxsymst;x=abs(t)/2*cos(pi*t)*(heaviside(t+2)-heaviside(t-2))x=-(cos(pi*t)*abs(t)*(heaviside(t-2)-heaviside(t+2)))/2ezplot(x)-2-1.5-1-0.500.511.52-0.6-0.4-0.200.20.40.60.81t-(cos(t)abs(t)(heaviside(t-2)-heaviside(t+2)))/24、symst;x=exp(-t)*sin(2*pi*t)*(heaviside(t)-heaviside(t-3))x=-exp(-t)*sin(2*pi*t)*(heaviside(t-3)-heaviside(t))ezplot(x)00.511.522.53-0.4-0.200.20.40.6t-exp(-t)sin(2t)(heaviside(t-3)-heaviside(t))(2)、利用MATLAB绘制下列离散时间信号的波形:1、)3()(nunxn=0.01:10.01n=Columns1through80.01001.01002.01003.01004.01005.01006.01007.0100Columns9through118.01009.010010.0100x=heaviside(n-3)x=00011111111stem(n,x,'filled')02468101200.10.20.30.40.50.60.70.80.912、)()2/1()(nunxnn=0:15n=Columns1through14012345678910111213Columns15through161415x=(-1/2).^n.*heaviside(n)x=Columns1through80.5000-0.50000.2500-0.12500.0625-0.03130.0156-0.0078Columns9through160.0039-0.00200.0010-0.00050.0002-0.00010.0001-0.0000stem(n,x,'filled')051015-0.5-0.4-0.3-0.2-0.100.10.20.30.40.53、)]5()([)(nununnxn=-1:6n=-10123456x=n.*(heaviside(n)-heaviside(n-5))x=001.00002.00003.00004.00002.50000stem(n,x,'filled')-1012345600.511.522.533.544、)()2/sin()(nunnxn=-1:20n=Columns1through14-10123456789101112Columns15through221314151617181920x=sin(n.*pi/2).*heaviside(n)x=Columns1through8001.00000.0000-1.0000-0.00001.00000.0000Columns9through16-1.0000-0.00001.00000.0000-1.0000-0.00001.00000.0000Columns17through22-1.0000-0.00001.00000.0000-1.0000-0.0000stem(n,x,'filled')-505101520-1-0.8-0.6-0.4-0.200.20.40.60.81(3)、利用MATLAB生成并绘制连续周期矩形波信号,要求周期为2,峰值为3,显示三个周期波形。t=0:0.001:6;x=3*square(pi*t);plot(t,x);0123456-3-2-10123(4)、已知信号)40(,4)(1tttx,及信号错误!未找到引用源。,用MATLAB绘出下列信号的波形1、)()()(213txtxtxt=-5:0.001:5;x1=(4-t).*heaviside(t);x2=sin(2*pi*t);x3=x1+x2;plot(t,x3)-5-4-3-2-1012345-2-10123452、)()()(214txtxtxt=0:0.001:5;x1=0:4;x1=4-t;x2=sin(2*pi*t);x4=x1.*x2;plot(t,x4)00.511.522.533.544.55-4-3-2-1012343、)()()(115txtxtxt=0:0.001:5;x1=0:4;x1=4-t;x2=-4:0;x2=4+t;x5=x1+x2;plot(t,x5)00.511.522.533.544.558888884、)1()()(326txtxtxt=0:0.001:5;x1=4-t;x2=sin(2*pi*t);x3=x1+x2;x7=x3.*heaviside(t-1);x6=x2.*x7;plot(t,x6)00.511.522.533.544.55-2-101234(5)、已知离散时间信号x(n)波形(]3,3,3,3,2,1,0[)(nx),用MATLAB绘出x(n)、x(-n)、x(n+2)和x(n-2)的波形。n=-3:3;x=[0123333];stem(n,x,'filled')-3-2-1012300.511.522.53n=-3:3;x=[0123333];n1=-n;stem(n1,x,'filled')-3-2-1012300.511.522.53n=-3:3;x=[0123333];n1=n+2;stem(n1,x,'filled')-101234500.511.522.53(6)、有MATLAB编程绘制下列信号的时域波形,观察信号是否为周期信号?若是周期信号,周期是多少?若不是周期信号,请说明原因。1、)2cos()42cos(2)34cos(1)(ttttxMATLAB代码如下:symst;x=1+cos(pi/4*t-pi/3)+2*cos(pi/2*t-pi/4)+cos(2*pi*t);ezplot(x,[-20,20]);程序运行结果:-20-15-10