连续时间信号的Matlab表示与计算

24
1 连连连连连连连 Matlab 连连连连连 连连连连 连连连 统一

description

信号与系统实验一. 连续时间信号的Matlab表示与计算. 主要内容. 1.1 信号的时域表示 1 .2 信号的运算. 1.1 信号的时域表示. 对于连续时间信号 f(t) ,在 matlab 中需要用 f 、 t 两个行向量来表示,例如 例 1 : t = -10:0.5:10; % 表示信号的取值范围和步长 f = t.^2 ; % 得到对应每个 t 的 f 值 plot(t,f); % 绘图 axis([-11,11,0,105]); % 确定绘图范围 - PowerPoint PPT Presentation

Transcript of 连续时间信号的Matlab表示与计算

Page 1: 连续时间信号的Matlab表示与计算

1

连续时间信号的Matlab表示与计算

信号与系统实验一

Page 2: 连续时间信号的Matlab表示与计算

2

主要内容

1.1 信号的时域表示

1.2 信号的运算

Page 3: 连续时间信号的Matlab表示与计算

3

1.1 信号的时域表示对于连续时间信号 f(t) ,在 matlab 中需要用 f、 t两个行向量来表示,例如例 1 : t = -10:0.5:10; % 表示信号的取值范围和步长 f = t.^2 ; % 得到对应每个 t的 f 值 plot(t,f); % 绘图 axis([-11,11,0,105]); % 确定绘图范围参数 t 可以表示 -10~10 ,间隔 0.5 的取值范围。但得到的图形效果较差,这是因为间隔 0.5 过大,缩小间隔即可: t = -10:0.05:10

Page 4: 连续时间信号的Matlab表示与计算

4

一、单位阶跃信号 (t)

以下函数生成阶跃信号 (t) , t 大于等于 1 时, y为 1 ,否则为 0

function y=heaviside(t)

y = (t>=0);

例 2 ,下列程序调用此函数:t = -2:0.001:3;

y = heaviside(t+1);

plot(t,y);

axis([-5,6,-0.1,1.2]) ;如果希望阶跃信号移动 t0 个单位,可写为 : y = heaviside(t-t0) ,左加右减!上例为向左平移 1 个单位。

Page 5: 连续时间信号的Matlab表示与计算

5

二、冲激信号 (t)

Matlab 实际无法精确表示冲激信号,但可以用宽度为 dt 高度为 1/dt 的矩形来近似,当 dt 趋于零时,就可以得到近似的冲激函数。程序编制如下:例 3 :冲激信号 (t-t0), t1 和 t2 分为起始时间和终止时间,t0 表示平移量 dt=0.0001; %信号间隔t1=1;t2=4;t0=2;t=t1:dt:t2; %信号时间样本向量n=length(t); %时间样本向量长度x=zeros(1,n); %各样本点上信号值赋为 0x(1,(t0-t1)/dt+1)=1/dt; %将 t=-t0处样本值赋为 1/dtstairs(t,x); % 以阶梯方式绘画axis([t1,t2,0,1.1/dt])

Page 6: 连续时间信号的Matlab表示与计算

6

三、指数信号 Aeat

调用 matlab 自带函数 exp() 即可

例 4:A=0.5;a=1.2;t=2:0.1:4;y=A*exp(a.*t); plot(t,y)

Page 7: 连续时间信号的Matlab表示与计算

7

四、正弦信号 Asin(t+)

sin()和 cos() 函数同样为 matlab 自带函数

例 5 :计算 2sin(t+ /2)

t=0:0.01:8;

f=2*sin(pi*t+0.5*pi);

plot(t,f);grid on;

Page 8: 连续时间信号的Matlab表示与计算

8

抽样函数 Sa(t)在MATLAB中用 sinc()表示,其定义为: sinc(t)=sin(t)/t

调用方法为 :y= sinc(t)

例 6

t = -10:0.5:10; % 表示信号的取值范围和步长 f = sinc(t) ;% 得到对应每个 t的 f 值 plot(t,f); % 绘图 axis([-11,11,-1,1.5]);

五、抽样函数 Sa(t)=sin(t)/t

Page 9: 连续时间信号的Matlab表示与计算

9

六、矩形脉冲信号矩形脉冲信号在 MATLAB 中用 rectpuls 函数来表示,其调用形式为:

y=rectpuls(t, width )

产生幅度为 1 ,宽度为 width ,以 t=0 左右对称的矩形信号。 width 确定了左右范围,以 0 为中心,左右延展width/2 。如果希望以 t0 为中心,则参数 t 可改为 t-t0 ,例 7

t=0:0.001:4; width = 2;t0=2; ft=rectpuls(t-t0,width); plot(t,ft);axis([0 4 -0.5 1.5]);

Page 10: 连续时间信号的Matlab表示与计算

10

周期性矩形波(方波)信号在 MATLAB 中用 square 函数来表示,其调用形式为: y=square(t,DUTY) 用以产生一个周期为 2 、 幅值为 ± 1 的周期性方波信号, 其中的 DUTY 参数表示占空比,即在信号的一个周期中正值所占的百分比。例如频率为 30Hz 的周期性方波信号的 MATLAB 源程序如下: 例 8

t=-0.0625:0.0001:0.0625;y=square(2*pi*30*t,75); %占空比 DUTY=75% plot(t,y);axis([-0.0625 0.0625 -1.5 1.5]);

七、周期性矩形波

Page 11: 连续时间信号的Matlab表示与计算

11

八、三角波信号三角波脉冲信号在 MATLAB 中用 tripuls 函数来表示,其调用形式为: y=tripuls(t,width,skew) 用以产生一个最大幅度为 1 、宽度为 width 、斜度为 skew 的三角波信号 f(t) 。该函数的横坐标范围由向量 t 决定,是以 t=0 为中心向左右各展开 width/2 的范围。斜度 skew 是一个介于 -1和 1 之间的值,它表示最大幅度 1 出现所对应的横坐标位置,比如 skew = 0 表示一个左右对称的三角波信号,最大幅度 1 出现在 t = 0 处;一般地, 最大幅度 1 出现在 skew×(width/2) 的横坐标位置。例 9 :

t=-3:0.001:3; ft=tripuls(t,4,0.5); plot(t,ft);axis([-3 3 -0.5 1.5]); grid on

对于 y(at+b), 只需要将 tripuls(t,width,skew)中的 t改为 at+b即可

Page 12: 连续时间信号的Matlab表示与计算

12

九、周期性三角波周期性方波信号在 MATLAB 中用 sawtooth 函数来表示,其调用形式为: y = sawtooth(t, WIDTH)

用以产生一个周期为 、最大幅度为 1 、最小幅度为 -1 的周期性方波信号(锯齿波)信号,其中的 WIDTH 参数表示最大幅度出现的位置:在一个周期内,信号从 t = 0到 2×WIDTH 时函数值是从 -1 到 1 线性增加的,而从 p 2×WIDTH到 2时函数值又是从 1到 -1 线性递减的 , 其他周期内依次类推。 例 10

t=-5*pi:pi/10:5*pi;

x=sawtooth(t,0.5);

plot(t,x);

axis([-16 16 -1.5 1.5]);

grid on;

Page 13: 连续时间信号的Matlab表示与计算

13

连续信号的基本运算运算主要包括:相加相乘时移反转尺度变换

1.2 信号的运算

Page 14: 连续时间信号的Matlab表示与计算

14

预备知识:符号计算

在符号运算的整个过程中,参与运算的是符号变量,在符号运算中所出现的数字都是当作符号来处理的。在使用符号变量之前,应先定义要使用的变量为符号变量。符号变量的定义有两种格式: sym('变量名 ')

例如: t=sym(‘t’) ,说明 t 为符号变量。这种方式一次只能定义个符号变量,可以采用下面方式 syms 变量名列表其中各个变量名之间用空格分隔,而不能采用逗号。例如: syms x y ,则 x和 y 为符号变量。

Page 15: 连续时间信号的Matlab表示与计算

15

一、信号相加

在MATLAB 中要实现两个连续信号 f1(t)、 f2(t) 的相加,可用如下语句:

x=symadd(f1,f2)

例如 s=symadd(f1,f2)

ezplot(s)% 显示 s

Page 16: 连续时间信号的Matlab表示与计算

16

二、信号相乘

在MATLAB 中要实现两个连续信号 f1(t)、 f2(t)的相乘,可用如下语句: x=symmul(f1,f2)

例如: s=symmul(f1,f2);

ezplot(s) % 显示 s

Page 17: 连续时间信号的Matlab表示与计算

17

一点说明:注意: symadd、 symmul 等函数在 matlab6.5 版本中可用, matlab7.0 以后版本已弃用。 相应的计算只需键入 +-*/ 即可。 例 11 :已知信号 f1=(4-t)[(t)-(t-4)]和 f2=sin(2t)[(t)-(t-4)],求f1(t)+f2(t)

sym t;

f1=sym('(-t+4)*(heaviside(t)-heaviside(t-4))');

f2=sym('sin(2*pi*t)*(heaviside(t)-heaviside(t-4))');

f3=f1+f2;

subplot(3,1,1),ezplot(f1);title('f1(t)')

subplot(3,1,2),ezplot(f2);title('f2(t)')

subplot(3,1,3),ezplot(f3);title('f3(t)')

Page 18: 连续时间信号的Matlab表示与计算

18

三、信号平移

要实现连续信号 f(t) 向右平移 t0,MATLAB 语句格式为:

x=subs(f,t,t-t0)

Page 19: 连续时间信号的Matlab表示与计算

19

四、信号反褶

对一个信号 x(t) 的反褶运算在数学上表示为: y(t) = x(-t)

使用 MATLAB 内部函数 fliplr() 来实现信号的反褶运算。其用法如下: y = fliplr(x)

其中 x 为原信号 x(t) ,而 y 则为 x 的时域反褶。

Page 20: 连续时间信号的Matlab表示与计算

20

五、信号尺度变换

要实现连续信号 f(t) 的尺度变换, MATLAB 语句格式为: x=subs(f,t,a*t) % 实现 x(t) = f(at)

实际上,该函数可以实现信号 f(t) 的平移、反褶和尺度变换的综合运算,可以替代 fliplr 函数,实现方式为: x=subs(f,t,a*t-b) % 实现 x(t) = f(at-b)

Page 21: 连续时间信号的Matlab表示与计算

21

例 12 :已知信号

分别求出下式数学表达式,并绘制其时域波形。

)]2()2([)2

1()( ttt

tf

)(),2(),(),2(),2( tftftftftf

Page 22: 连续时间信号的Matlab表示与计算

22

程序如下:syms tf=sym('(t/

2+1)*(heaviside(t+2)-heaviside(t-2))');

subplot(2,3,1);ezplot(f,[-3,3]);y1=subs(f,t,t+2);subplot(2,3,2);ezplot(y1,[-5,1]);y2=subs(f,t,t-2);subplot(2,3,3);ezplot(y2,[-1,5]);

y3=subs(f,t,-t);subplot(2,3,4);ezplot(y3,[-3,3]);y4=subs(f,t,2*t);subplot(2,3,5);ezplot(y4,[-2,2]);y5=-f;subplot(2,3,6);ezplot(y5,[-3,3]);fy1,y2,y3,y4,y5

Page 23: 连续时间信号的Matlab表示与计算

23

例 13 : 已知 f1(t)=e-0.5t[(t)- (t-2)], f2(t)=sin(5t)[(t)- (t-2)] ,求 f1(-2t+1)、 f1(t) f2(t-1) 的波形。程序如下,注意符号表达式的使用syms t f1=sym('exp(-0.5*t)*(heaviside(t)-heaviside(t-2))'); f2=sym('sin(5*pi*t)*(heaviside(t)-heaviside(t-2))'); subplot(2,2,1),ezplot(f1);title('f1'); subplot(2,2,2), ezplot(f2);title('f2'); f3=subs(f1,t,-2*t+1); subplot(2,2,3);ezplot(f3);title('f3'); f4=f1*subs(f2,t,t-1); subplot(2,2,4);ezplot(f4);title('f4');

Page 24: 连续时间信号的Matlab表示与计算

24

作业:

用符号运算编制程序,实现以下运算,并画图显示:1.f(t)=4e-0.5tcos(t)

2.f(t)=cos( t)+cos(2 t)

3.已知信号 f1(t)=(4-t)[(t)-(t-4)]和 f2 (t)= t0.5

画 1) f3 = f1(-t)+f2(-t)

2) f4 = f1(t)f2(t)