信号与系统实验报告 联系客服

发布时间 : 星期日 文章信号与系统实验报告更新完毕开始阅读587a04cddaef5ef7ba0d3ce2

实验三 常见信号的MATLAB表示及运算

一、实验目的

1.熟悉常见信号的意义、特性及波形

2.学会使用MATLAB表示信号的方法并绘制信号波形 3. 掌握使用MATLAB进行信号基本运算的指令 4. 熟悉用MATLAB实现卷积积分的方法

二、实验原理

根据MATLAB的数值计算功能和符号运算功能,在MATLAB中,信号有两种表示方法,一种是用向量来表示,另一种则是用符号运算的方法。在采用适当的MATLAB语句表示出信号后,就可以利用MATLAB中的绘图命令绘制出直观的信号波形了。

1.连续时间信号

从严格意义上讲,MATLAB并不能处理连续信号。在MATLAB中,是用连续信号在等时间间隔点上的样值来近似表示的,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号。在MATLAB中连续信号可用向量或符号运算功能来表示。 ⑴ 向量表示法

对于连续时间信号f(t),可以用两个行向量f和t来表示,其中向量t是用形如t?t1:p:t2的命令定义的时间范围向量,其中,1为信号起始时间,t2为终止时间,p为时间间隔。向量f为连续信号f(t)在向量t所定义的时间点上的样值。

⑵ 符号运算表示法

如果一个信号或函数可以用符号表达式来表示,那么我们就可以用前面介绍的符号函数专用绘图命令ezplot()等函数来绘出信号的波形。 ⑶ 常见信号的MATLAB表示 单位阶跃信号

单位阶跃信号的定义为:u(t)??t?1?0t?0 t?0方法一: 调用Heaviside(t)函数

首先定义函数Heaviside(t) 的m函数文件,该文件名应与函数名同名即Heaviside.m。

%定义函数文件,函数名为Heaviside,输入变量为x,输出变量为y function y= Heaviside(t)

y=(t>0); %定义函数体,即函数所执行指令

%此处定义t>0时y=1,t<=0时y=0,注意与实际的阶跃信号定义的区别。

方法二:数值计算法

在MATLAB中,有一个专门用于表示单位阶跃信号的函数,即stepfun( )函数,它是用数值计算法表示的单位阶跃函数u(t)。其调用格式为:

stepfun(t,t0)

其中,t是以向量形式表示的变量,t0表示信号发生突变的时刻,在t0以前,函数值小于零,t0以后函数值大于零。有趣的是它同时还可以表示单位阶跃序列u(k),这只要将自变量以及取样间隔设定为整数即可。 符号函数

符号函数的定义为:sgn(t)???1??1t?0 t?0(t)和符号函数

在MATLAB中有专门用于表示符号函数的函数sign() ,由于单位阶跃信号

1两者之间存在以下关系:?(t)?1,因此,利用这个函数就可以很容易地生成单2?2sgn(t)位阶跃信号。

2.离散时间信号

离散时间信号又叫离散时间序列,一般用f(k) 表示,其中变量k为整数,代表离散的采样时间点(采样次数)。

在MATLAB中,离散信号的表示方法与连续信号不同,它无法用符号运算法来表示,而只能采用数值计算法表示,由于MATLAB中元素的个数是有限的,因此,MATLAB无法表示无限序列;另外,在绘制离散信号时必须使用专门绘制离散数据的命令,即stem()函数,而不能用plot()函数。 单位序列?(k)

单位序列?(k))的定义为?(k)??单位阶跃序列u(k)

?1?0k?0 k?0单位阶跃序列u(k)的定义为u(k)??

?1?0k?0 k?03.卷积积分

两个信号的卷积定义为:

y(t)?f1(t)?f2(t)?????f1(?)f2(t??)d?

MATLAB中是利用conv函数来实现卷积的。

功能:实现两个函数f1(t)和f2(t)的卷积。

格式:g=conv(f1,f2)

说明:f1=f1(t),f2=f2(t) 表示两个函数,g=g(t)表示两个函数的卷积结果。

三、实验内容

1.分别用MATLAB的向量表示法和符号运算功能,表示并绘出下列连续时间信号的波形: ⑴ f(t)?(2?e?2t)u(t) ⑵ f(t)?cos((1) t=-1:0.01:10;

?t2)?u(t)?u(t?4)?

t1=-1:0.01:-0.01; t2=0:0.01:10;

f1=[zeros(1,length(t1)),ones(1,length(t2))]; f=(2-exp(-2*t)).*f1; plot(t,f)

axis([-1,10,0,2.1])

syms t;

f=sym('(2-exp(-2*t))*heaviside(t)'); ezplot(f,[-1,10]);

(2)

t=-2:0.01:8;

f=0.*(t<0)+cos(pi*t/2).*(t>0&t<4)+0.*(t>4); plot(t,f)

syms t;

f=sym('cos(pi*t/2)*[heaviside(t)-heaviside(t-4)] '); ezplot(f,[-2,8]);

2.分别用MATLAB表示并绘出下列离散时间信号的波形: ⑵ f(t)?k?u(k)?u(k?8)? ⑶ f(k)?sin((2) t=0:8; t1=-10:15;

f=[zeros(1,10),t,zeros(1,7)]; stem(t1,f)

axis([-10,15,0,10]);

k?)u(k) 4