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