信号在时域中表现为随时间变化的某些物理量,按照自变量是否连续可以分为连续和离散时间信号,一般表示为f(t)或 f(k)。
要观察和分析信号的时域性能,就要把信号随时间变化的二维时间曲线表示出来。一些简单曲线我们可以手工绘制,但是对于某些复杂图形,必须要借助机器绘制。
MATLAB提供的强大图形可视化和处理功能为我们提供了强有力的工具。通常,MATLAB用两种方法表示信号,一种是向量化表示;一种是通过符号运算来表示。之后,就可以用相应的绘图命令直观表示出信号的波形。
一、连续时间信号
所谓连续时间信号,是指自变量和函数值取值都是连续的。MATLAB都是取点连线得到信号波形,所以严格说来,MATLAB只是采用等间隔的样值点近似表示连续信号,但当间隔足够小时,就能较好的表示信号。
1、向量化表示:
对于连续信号f(t),我们用两个行向量t, f表示,其中,向量t是表示时间自变量,它的取值表示了时间范围的大小。f为信号函数值的大小。两者为同维数的行向量。
例如,我们要画出信号f(t)=Sa(t)=sin(t)/t ,程序如下:
t = -10:1.5:10;
f=sin(t)./t
plot(t,f)
axis([-10,10,-0.4,1.1])
就绘制出相应的大致波形,若间隔取0.02,则波形就更加平滑。
2.符号运算表示法:
我们还可以使用符号运算法,使用ezplot() 命令表示。如,我们可以画出f(t)=sin(4*pi/t)的波形。
下面,我们给出几个常用连续时间信号的matlab实现,以后,大家就可以使用这些函数,而不必每次自己编制程序。
单位阶跃信号
单位阶跃信号定义为 ,它是最基本的信号之一,我们可以用它表示不同的时限信号或单边因果信号。如门函数即矩形脉冲就可以表示为:g(t)=u(t+a)-u(t-a),即脉冲宽度为2a,作用时间为(-a, a).
第一种最简单的方法是调用SYMBOLIC MATH TOOLBOX中的现成的单位阶跃函数,但必须在自己的工作目录下加以声明才可以使用。
第二种方法是我们自己编制单位阶跃信号的子程序,在我们的程序中,有三个输入参数,为信号的起止时刻,为平移量,这样我们也可以表示时移的单位阶跃信号了。我们编制的函数名为jieyao.m
第三种方法,我们可以借助符号函数来实现。
单位冲激信号
单位冲激信号定义为当t=0时,有值为无穷大,t不等于0时函数值为0,且信号包含的面积为1。因此,我们无法精确表示该信号,只能用宽度为dt高度为1/dt的矩形脉冲近似表示,当dt较小时可以得到较好的表示效果。
我们自己编制单位冲激信号的显示子程序,程序可以实现冲激函数的移位。在这里,对于变化比较剧烈的阶梯状图形,我们使用stairs()绘图命令。程序名为chongji.m
二、离散时间信号
在MATLAB中,我们表示的离散信号都是有限长序列。离散信号一般记做f(k)或f(n)。我们用两个向量表示该信号:用向量k表示取样点的时间值,一般为均匀取样。用向量f表示对应某取样点的函数值的大小。比如:
序列f(k)={1,2,-1,3(k=0),2,4,-1},在MATLAB中应表示为:
k=-3:3; f=[1,2,-1,3,2,4,-1]
对于离散时间信号的表示,要注意以下几点:
1.我们无法用符号形式表示离散信号,只能是向量形式。
2.由于MATLAB中元素为有限个,所以只能近似表示无限长信号。
3.绘制离散数据要使用专门的绘图命令――stem()。
如刚才的波形就可以使用以下语句:
stem(k,f,’filled’)
下面我们给出单位序列和单位阶跃序列的绘图子程序。
单位序列程序名为:dwxulie.m
单位阶跃序列名为:jyxulie.m
三、信号的运算和变换
时域运算主要包括相加和相乘,时域信号变换主要包括移位,反折,尺度变换,反相等。
1.连续时间信号
我们使用符号运算的方法表示其运算,这样可以是程序简单易读。设两个连续信号f1(t), f2(t)
相加
f(t)=f1+f2表示方法:
s=symadd(f1,f2)
ezplot(s)
相乘
f(t)=f1*f2表示方法:
s=symmul(f1,f2)
ezplot(s)
移位
y=subs(f,t,t-t0)
ezplot(y)
反折
y=subs(f,t,-t)
ezplot(y)
尺度变换
y=subs(f,t,a*t)
ezplot(y)
反相
y=-f
ezplot(y)
下面我们举出两个例题来具体表示:
例:设f(t)=(1+t/2)*[u(t+2)-u(t-2)],做出f(t+2), f(t-2), f(-t), f(2t), -f(t)的时域波形
例:设f1(t)=-t+4 f2(t)=sin(2*pi*t)做出满足以下要求的信号波形
●f3(t)=f1(-t)+f1(t)
●f4(t)=-[f1(-t)+f1(t)]
●f5(t)=f2(-t)*f3(t)
●f6(t)=f1(-t)*f2(t)
2.离散序列
对于离散信号,信号之间的相加和相乘,指的是对应时间序号的值分别相加和相乘。其余变换的含义与连续信号完全相同。但应该注意:离散信号只能用向量表示,没有符号表示法;另外参加运算的序列必须具有相同的维数。
我们给出两个序列相加相乘的相关子程序。
函数名分别为lsxj.m和lsxc.m
类似,我们也可以做出离散信号反折,平移,反相的运算子程序。
分别为:lsfz.m lsyw.m lsdx.m