Transcript 信号与系统实验1
信号与系统实验一
连续时间信号的Matlab表示与
计算
1
主要内容
1.1
信号的时域表示
1.2
信号的运算
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]); %确定绘图范围
参数t可以表示 -10~10,间隔0.5的取值范围。但得
到的图形效果较差,这是因为间隔0.5过大,缩小间
隔即可:t = -10:0.05:10
3
一、单位阶跃信号(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(tt0),左加右减!上例为向左平移1个单位。
4
二、冲激信号(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); %各样本点上信号值赋为0
x(1,(t0-t1)/dt+1)=1/dt; %将t=-t0处样本值赋为1/dt
stairs(t,x); %以阶梯方式绘画
axis([t1,t2,0,1.1/dt])
5
三、指数信号Aeat
调用matlab自带函数exp()即可
例4:
A=0.5;
a=1.2;
t=2:0.1:4;
y=A*exp(a.*t);
plot(t,y)
6
四、正弦信号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;
7
五、抽样函数Sa(t)=sin(t)/t
抽样函数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]);
8
六、矩形脉冲信号
矩形脉冲信号在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]);
9
七、周期性矩形波
周期性矩形波(方波)信号在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]);
10
八、三角波信号
三角波脉冲信号在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即可
11
九、周期性三角波
周期性方波信号在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]);
12
grid on;
1.2 信号的运算
连续信号的基本运算运算主要包括:
相加
相乘
时移
反转
尺度变换
13
预备知识:符号计算
在符号运算的整个过程中,参与运算的是符号变量,在符号
运算中所出现的数字都是当作符号来处理的。在使用符号变
量之前,应先定义要使用的变量为符号变量。符号变量的定
义有两种格式:
sym('变量名')
例如:t=sym(‘t’) ,说明t为符号变量。
这种方式一次只能定义个符号变量,可以采用下面方式
syms 变量名列表
其中各个变量名之间用空格分隔,而不能采用逗号。
例如:syms x y,则x和y为符号变量。
14
一、信号相加
在MATLAB中要实现两个连续信号f1(t)、f2(t)的
相加,可用如下语句:
x=symadd(f1,f2)
例如
s=symadd(f1,f2)
ezplot(s)%显示s
15
二、信号相乘
在MATLAB中要实现两个连续信号f1(t)、f2(t)的
相乘,可用如下语句:
x=symmul(f1,f2)
例如:
s=symmul(f1,f2);
ezplot(s) %显示s
16
一点说明:
注意: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)')
17
三、信号平移
要实现连续信号f(t)向右平移 t0,MATLAB语句格
式为:
x=subs(f,t,t-t0)
18
四、信号反褶
对一个信号x(t)的反褶运算在数学上表示为:
y(t) = x(-t)
使用MATLAB内部函数fliplr()来实现信号的反褶
运算。其用法如下:
y = fliplr(x)
其中x为原信号x(t),而 y则为x的时域反褶。
19
五、信号尺度变换
要实现连续信号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)
20
例12:已知信号
f ( t ) (1
t
) [ ( t 2 ) ( t 2 )]
2
分别求出下式数学表达式,并绘制其时域波形。
f ( t 2 ), f ( t 2 ),
f ( t ),
f ( 2 t ),
f (t )
21
程序如下:
syms t
f=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]);
f
y1,y2,y3,y4,y5
22
例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');
23
作业:
用符号运算编制程序,实现以下运算,并画
图显示:
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)
24