《信号与系统》 实验指导书
张晓明 杨玉华编
中 北 大 学
2015-05
实验一 Matlab中信号的描述和运算
1.1、实验目的:
熟悉MATLAB 软件的使用,并学会信号的多种表示形式和信号的可视化;熟悉MATLAB中信号的基本运算和卷积运算。
1.2、实验时数: 2学时 1.3、实验相关知识:
1.3.1 Matlab中信号的描述
信号按照自变量的取值是否连续可分为连续时间信号和离散时间信号。对一维时间信号进行时域分析,首先需要将信号随时间变化的规律用二维曲线表示出来。对于简单信号可以通过手工绘制其波形,但对于复杂的信号,手工绘制信号波形显得十分困难,且难以绘制精确的曲线。
在 MATLAB中通常用三种方法来产生并表示连续时间信号,即 ? 采用符号运算工具箱来描述信号; ? 采用向量表示法来描述信号;
? 采用Simulink工具来描述并产生信号。 采用MATLAB软件符号运算工具箱来描述信号 方法一:符号函数图形计算器
在MATLAB 环境下输入命令funtool,则会产生三个视窗,如图 1所示。
图 1 符号函数图形计算器
figure No.1:可轮流激活,显示f函数的计算结果。 figure No.2:可轮流激活,显示g函数的计算结果。
figure No.3 :函数运算器,其功能有:f,g 可输入函数表达式;x 是自变量,在缺省时绘制在[-2pi,2pi]的范围内的函数图形,在figure No.1 或figure No.2 产生相应的波形。
方法二:符合运算表示法
如果信号可以用一个符号表达式来表示它,则我们可用ezplot命令(缺省的区间为[-2*pi, 2*pi])绘制出信号的波形,例如对于连续信号f(t)=sin(πt/4),我们可以用符号表达式表示为:
f=sym('sin(pi/4*t)');
然后用 ezplot命令绘制其波形: ezplot(f,[-16,16]);
该命令绘制的信号波形如图 2所示。
图 2 符号运算表示法表示信号
采用向量表示法来描述信号
用适当的MATLAB 中的向量来表示信号,该信号可以利用MATLAB 的绘图命令绘制出直观的信号波形。
对于连续时间信号f(t),可以用两个行向量f和t来表示,其中向量t是形如t=t1:dt:t2的MATLAB命令定义的时间范围向量,t1为信号起始时间,t2为信号终止时间,dt为时间间隔。向量f为连续信号f(t)在向量t所定义的时间点上的样值。
下面分析连续时间信号f(t)=e-0.3tsin(t),可用如下的两个变量表示: t= -10:0.5:10; f= exp(-0.3*t) .* sin(t);
用上述向量对连续信号进行表示后,就可以用plot命令来绘制出信号的时域波形。plot命令可将点与点间用直线连接,当点与点间的距离很小时,绘出的波形就成了光滑的曲线。MATLAB命令如下:
plot(t,f);
title('f(t)= exp(-0.3*t) .* sin(t)'); grid on xlabel('t');
绘出的信号波形图 3所示。当把时间间隔dt取得较小(例如为0.01)时,就可得到f(t)较好的近似波形,如图 4所示。
图 3 dt = 0.5时的波形
图 4 dt = 0.01时的波形
常见连续信号的向量表示法描述
正弦波y(t) = Asin(2πft+υ): t = 0:0.001:2; A = 0.5 ; f = 3; phi = pi/3 %生成3Hz的正弦波 y = A*sin(2*pi*f*t+phi); plot(t, y); 周期锯齿波: t = 0:0.001:2.5; f = 2 y = sawtooth(2*pi*f*t); plot(t, y); ylim([-1.1, 1.1]); 钟形函数f(t)?Eet=-3:0.01:3; E = 1; tau = 0.5; y=E*exp(-(t/tau).^2); plot(t,y); 虚指数函数f(t)?e?j?0t: t = 0:0.001:5; w0 = 2; y = exp(j*w0*t); subplot(211) plot(t, real(y)) ; ylabel('Real(y)') subplot(212) plot(t, imag(y)); ?(t?)2周期方波: t = 0:0.001:2.5; f = 2 ; y = square(2*pi*f*t); plot(t, y); ylim([-1.1, 1.1]); sinc函数sinc(t) = (sinπt)/(πt) t = -5:0.01:5; y = sinc(t); plot(t, y); 实指数函数f(t)?e?at t = -2:0.001:2; a = 2 ; y = exp(a*t); plot(t,y); 复指数函数f(t)?e(??j?0)t: t = 0:0.001:5; sigma = -0.5 ; w0 = 10; y = exp((sigma + j*w0)*t); subplot(211) plot(t, real(y)) ; ylabel('Real(y)') subplot(212) plot(t, imag(y));