前言
为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至CSDN中,供同学们学习参考。如有不足或描述不完善之处,敬请各位指出,欢迎各位的斧正!
一、实验目的
- 熟悉常见连续信号波形
- 学会使用 MATLAB 表示信号的方法并绘制信号波形
- 掌握使用 MATLAB 进行信号基本运算的指令
二、实验原理
信号一般是随时间而变化的某些物理量。按照自变量的取值是否连续,信号分为连续时间信号和离散时间信号,一般用f(t)和f(k)来表示。若对信号进行时域分析,就需要绘制其波形,如果信号比较复杂,则手工绘制波形就变得很困难,且难以精确。MATLAB强大的图形处理功能及符号运算功能,为实现信号的可视化及其时域分析提供了强有力的工具。
根据MATLAB的数值计算功能和符号运算功能,在MATLAB中,信号有两种表示方法,一种是用向量来表示,另一种则是用符号运算的方法。在采用适当的MATLAB语句表示出信号后,就可以利用MATLAB中的绘图命令绘制出直观的信号波形了。
1.信号表示
所谓连续时间信号,是指其自变量的取值是连续的,并且除了若干不连续的点外,对于一切自变量的取值,信号都有确定的值与之对应。从严格意义上讲,MATLAB并不能处理连续信号。在MATLAB中,是用连续信号在等时间间隔点上的样值来近似表示的,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号。在MATLAB中连续信号可用向量或符号运算功能来表示。
Matlab提供了大量生成基本信号的函数。如:
(1)指数信号:K*exp(a*t)
(2)正弦信号:K*sin(w*t+phi)
和K*cos(w*t+phi)
(3)复指数信号:K*exp((a+i*b)*t)
(4)抽样信号:sin(t*pi)
注意:在Matlab中用与Sa(t)类似的sinc(t)函数表示,定义为:sinc(t)=sin(pi*t)/(pi*t)
(5)矩形脉冲信号:rectpuls(t,width)
(6)单位阶跃信号:heaviside(t)
或 stepfun(t,t0)
,其中,t是以向量形式表示的变量,t0表示信号发生突变的时刻。
2.信号运算
信号的平移、反转和尺度变换是针对自变量时间而言的,其数学表达式和波形变换中存在着一定的变化规律。从数学表达式上来看,信号的上述所有计算都是自变量的替换过程。所以在使用Matlab进行连续时间信号的运算时,只需要进行相应的变量代换即可完成相关工作。
我们也可用命令subs(f,t,t-t0)
来实现连续信号的平移,其中f是用符号表达式表示的连续时间信号, t是符号变量,subs命令则将连续信号中的时间变量t用t-t0替换;用命令subs(f,t,-t)
实现连续信号的反折;用命令subs(f,t,a*t)
实现连续信号的尺度变换。
三、实验环境
硬件:装有Windows 10系统的PC机
软件:MATLAB 2018b
四、实验内容和步骤及实验数据
实验内容1 利用MATLAB命令画出下面波形
(1)
(
2
−
e
−
t
)
ε
(
t
)
(2-e^{-t})ε(t)
(2−e−t)ε(t)
(2)
2
c
o
s
(
3
t
+
π
/
4
)
2cos(3t+π /4)
2cos(3t+π/4)
(3)
ε
(
t
+
2
)
−
ε
(
t
)
ε(t+2)-ε(t)
ε(t+2)−ε(t)
实验内容2 已知信号 f(t)的波形如下图所示,试用MATLAB绘出满足下列要求的信号波形。
(1)f(-t) (2) f(t-2) (3) f(2t) (4) f(0.5t+1)
代码及图案如下
%(1) (2-e^(-t))ε(t)
clear;clc;
t=0:0.01:3;
ft=2-exp(-t);
plot(t,ft);
grid on;
axis([-0.5,3.5,0.75,2.25]);
title('y=(2-exp(-t))ε(t)');
%(2) 2cos(3t+pi/4)
clear;clc;
t=0:0.01:3;
gt=2*cos(3*t+pi/4);
plot(t,gt);grid on
axis([-0.5,3.5,-2.5,2.5]);
title('y=2cos(3t+pi/4)');
%ε(t+2)-ε(t-2)
t=-3:0.01:4;
y=heaviside(t+2);
z=heaviside(t-2);
plot(t,y-z);grid on
axis([-3,4,-0.5,1.5]);
title('y=?(t+2)-?(t-2)');
%2. f(t)
clear;clc;
t=-1:0.01:3;
y=heaviside(t)-heaviside(t-1)+heaviside(t)-heaviside(t-2);
plot(t,y);grid on
axis([-0.5,3,-0.5,2.5]);
title('y=f(t)');
%2. f(-t)
clear;clc;
t=-3:0.01:3;
f=heaviside(t)-heaviside(t-1)+heaviside(t)-heaviside(t-2);
plot(-t,f);grid on
axis([-3,3,-0.5,2.5]);
title('y=f(-t)');
%2. f(t-2)
clear;clc;
t=-2:0.01:5;
y=heaviside(t)-heaviside(t-1)+heaviside(t)-heaviside(t-2);
plot(t+2,y);grid on
axis([1.5,5,-0.5,2.5]);
title('y=f(t-2)');
%2. f(2t)
clear;clc;
t=-2:0.01:4;
y=heaviside(t)-heaviside(t-1)+heaviside(t)-heaviside(t-2);
plot(0.5*t,y);grid on
axis([-1,2,-0.5,2.5]);
title('y=f(2t)');
%2. f(0.5t+1)
clear;clc;
t=-1:0.01:3;
y=heaviside(t)-heaviside(t-1)+heaviside(t)-heaviside(t-2);
plot((t-1)*2,y);grid on
axis([-3,3,-0.5,2.5]);
title('y=f(0.5t+1)');
五、实验结论
信号的平移、反转和尺度变换是针对自变量时间而言的,其数学表达式和波形变换中存在着一定的变化规律。从数学表达式上来看,信号的上述所有计算都是自变量的替换过程。所以在使用Matlab进行连续时间信号的运算时,只需要进行相应的变量代换即可完成相关工作。
六、实验总结
(1)指数信号:K*exp(a*t)
(2)正弦信号:K*sin(w*t+phi)
和K*cos(w*t+phi)
(3)复指数信号:K*exp((a+i*b)*t)
(4)抽样信号:sin(t*pi)
注意:在Matlab中用与Sa(t)类似的sinc(t)函数表示,定义为:sinc(t)=sin(pi*t)/(pi*t)
(5)矩形脉冲信号:rectpuls(t,width)
(6)单位阶跃信号:heaviside(t)
或 stepfun(t,t0)
,其中,t是以向量形式表示的变量,t0表示信号发生突变的时刻。
在遇到问题时,多使用doc函数进行查询