1 / 24

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

信号与系统实验一. 连续时间信号的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]); % 确定绘图范围

hetal
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 信号与系统实验一 连续时间信号的Matlab表示与计算

  2. 主要内容 • 1.1 信号的时域表示 • 1.2 信号的运算

  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

  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个单位。

  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); %各样本点上信号值赋为0 x(1,(t0-t1)/dt+1)=1/dt; %将t=-t0处样本值赋为1/dt stairs(t,x); %以阶梯方式绘画 axis([t1,t2,0,1.1/dt])

  6. 三、指数信号Aeat 调用matlab自带函数exp()即可 例4: A=0.5; a=1.2; t=2:0.1:4; y=A*exp(a.*t); plot(t,y)

  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;

  8. 五、抽样函数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]);

  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]);

  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]);

  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即可

  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;

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

  14. 预备知识:符号计算 在符号运算的整个过程中,参与运算的是符号变量,在符号运算中所出现的数字都是当作符号来处理的。在使用符号变量之前,应先定义要使用的变量为符号变量。符号变量的定义有两种格式: sym('变量名') 例如:t=sym(‘t’) ,说明t为符号变量。 这种方式一次只能定义个符号变量,可以采用下面方式 syms 变量名列表 其中各个变量名之间用空格分隔,而不能采用逗号。 例如:syms x y,则x和y为符号变量。

  15. 一、信号相加 在MATLAB中要实现两个连续信号f1(t)、f2(t)的相加,可用如下语句: x=symadd(f1,f2) 例如 s=symadd(f1,f2) ezplot(s)%显示s

  16. 二、信号相乘 在MATLAB中要实现两个连续信号f1(t)、f2(t)的相乘,可用如下语句: x=symmul(f1,f2) 例如: s=symmul(f1,f2); ezplot(s) %显示s

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

  18. 三、信号平移 要实现连续信号f(t)向右平移 t0,MATLAB语句格式为: x=subs(f,t,t-t0)

  19. 四、信号反褶 对一个信号x(t)的反褶运算在数学上表示为: y(t) = x(-t) 使用MATLAB内部函数fliplr()来实现信号的反褶运算。其用法如下: y = fliplr(x) 其中x为原信号x(t),而 y则为x的时域反褶。

  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)

  21. 例12:已知信号 分别求出下式数学表达式,并绘制其时域波形。

  22. 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 程序如下: 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]);

  23. 例13 :已知f1(t)=e-0.5t[(t)- (t-2)], f2(t)=sin(5t)[(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');

  24. 作业: 用符号运算编制程序,实现以下运算,并画图显示: • f(t)=4e-0.5tcos(t) • f(t)=cos( t)+cos(2  t) • 已知信号f1(t)=(4-t)[(t)-(t-4)]和f2 (t)= t0.5 画1) f3 = f1(-t)+f2(-t) 2) f4 = f1(t)f2(t)

More Related