《信号与系统》实验指导书 下载本文

clear;clc;

t = -2:0.01:4; ft1 = funct1(t-2); ft2 = funct1(3*t); ft3 = funct1(-t); ft4 = funct1(-3*t-2);

subplot(221) plot(t,ft1);grid on title('f(t-2)');

axis([-2 4 -0.5 2]);

subplot(222) plot(t,ft2);grid on

title('f(3t)');

axis([-2 4 -0.5 2]);

subplot(223) plot(t,ft3);grid on title('f(-t)');

axis([-2 4 -0.5 2]);

subplot(224) plot(t,ft4);grid on title('f(-3t-2)'); axis([-2 4 -0.5 2]);

图1 f(t-2),f(3t),f(-t),f(-3t-2)波形图

例2 用MATLAB数值计算分析法求信号f1(t)?u(t)?u(t?2)与f2(t)?e?3tu(t)的卷积积分。

解:因为f2(t)?e?3tu(t)是一个持续时间无限长的信号,而计算机数值计算不可能计算真正的无限长时间信号,所以在进行f2(t)的抽样离散化时,所取的时间范围让f2(t)衰减到足够小就可以了,本例中取t?2.5。MATLAB源程序为:

clear;clc;

14

dt = 0.01; t = -1:dt:2.5; f1 = uCT(t)- uCT(t-2); f2 = exp(-3*t).*uCT(t); f = conv(f1,f2)*dt; n =length(f);

tt = (0:n-1)*dt-2;(tt从-2开始)

subplot(221), plot(t,f1),grid on; axis([-1, 2.5, -0.2,1.2]);

title('f1(t)'); xlabel('t');

subplot(222), plot(t,f2),grid on; axis([-1, 2.5, -0.2,1.2]); title('f2(t)'); xlabel('t');

subplot(212), plot(tt,f),grid on; title('f(t)=f1(t)*f2(t)'); xlabel('t');

程序运行后,产生如图2所示的波形。

图2 例2的卷积结果

由于f1(t)和f2(t)的时间范围都是从t??1开始,所以卷积结果的时间范围从

t??2开始,增量还是取样间隔?t,这就是上面MATLAB语句tt = (0:n-1)*dt-2

的由来。

对于时限信号的卷积运算,还可以利用MATLAB中的function命令建立一

个实用函数来求卷积。例如,可以建立连续时间信号卷积运算的函数ctsconv.m,其MATLAB源程序为:

function [f,t] = ctsconv(f1,f2,t1,t2,dt) f = conv(f1,f2); f = f*dt;

ts = min(t1) +min(t2); te = max(t1)+max(t2); t = ts:dt:te;

15

subplot(221)

plot(t1,f1); grid on

axis([ min(t1), max(t1), min(f1)-abs(min(f1)*0.2), max(f1)+abs(max(f1)*0.2) ]) title('f1(t)');xlabel('t');

subplot(222)

plot(t2,f2); grid on

axis([ min(t2), max(t2), min(f2)-abs(min(f2)*0.2), max(f2)+abs(max(f2)*0.2) ]) title('f2(t)');xlabel('t');

subplot(212) plot(t,f); grid on

axis([ min(t), max(t), min(f)-abs(min(f)*0.2), max(f)+abs(max(f)*0.2) ]) title('f(t)=f1(t)*f2(t)');xlabel('t');

对于例2,可以用上面定义的ctsconv函数求的,MATLAB源程序为: clear;clc; dt = 0.01; t1 = -1:dt:2.5;

f1 = uCT(t1)- uCT(t1-2); t2 = t1;

f2 = exp(-3*t2).*uCT(t2); [t,f] = ctsconv(f1,f2,t1,t2,dt);

程序运行后,可获得和例2相同的波形结果。

4. 实验内容

4.1 试用MATLAB命令绘制信号f(t)?e?tsin(10?t)?e?t/2sin(9?t)的波形图。

?(t?1)[ut(?1)?ut(4.2 已知信号f(t)?u(t)?u(t?1),画出f(t)、f(t?2)、f(?t)、f(?2t?1)的波形。

4.3 求信号f1(t)?u(t)?u(t?2)与

的卷积结果f(t)?f1(t)*f2(t),并画出f1(t),f2(t)和f(t)的波形。

4.4 求信号f1(t)?u(t?0.5)?u(t?0.5)与自身的卷积结果f(t)?f1(t)*f1(t),并画

16

出f1(t)和f(t)的波形。

5. 问题与思考

MATLAB运算符中 .*和 * 的区别?可结合例子说明。(实验1和实验2都有碰到的)

17