当前位置:文档之家› 信号与系统实验报告汇总

信号与系统实验报告汇总

实验三 常见信号的MATLAB 表示及运算一、实验目的1.熟悉常见信号的意义、特性及波形2.学会使用MATLAB 表示信号的方法并绘制信号波形 3. 掌握使用MATLAB 进行信号基本运算的指令 4. 熟悉用MATLAB 实现卷积积分的方法二、实验原理根据MATLAB 的数值计算功能和符号运算功能,在MA TLAB 中,信号有两种表示方法,一种是用向量来表示,另一种则是用符号运算的方法。

在采用适当的MA TLAB 语句表示出信号后,就可以利用MA TLAB 中的绘图命令绘制出直观的信号波形了。

1.连续时间信号从严格意义上讲,MATLAB 并不能处理连续信号。

在MATLAB 中,是用连续信号在等时间间隔点上的样值来近似表示的,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号。

在MATLAB 中连续信号可用向量或符号运算功能来表示。

⑴ 向量表示法对于连续时间信号()f t ,可以用两个行向量f 和t 来表示,其中向量t 是用形如12::t t p t =的命令定义的时间范围向量,其中,1t 为信号起始时间,2t 为终止时间,p 为时间间隔。

向量f 为连续信号()f t 在向量t 所定义的时间点上的样值。

⑵ 符号运算表示法如果一个信号或函数可以用符号表达式来表示,那么我们就可以用前面介绍的符号函数专用绘图命令ezplot()等函数来绘出信号的波形。

⑶ 常见信号的MATLAB 表示 单位阶跃信号单位阶跃信号的定义为:10()0t u t t >⎧=⎨<⎩方法一: 调用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 ,这只要将自变量以及取样间隔设定为整数即可。

符号函数符号函数的定义为:10sgn()1t t t >⎧=⎨-<⎩在MA TLAB 中有专门用于表示符号函数的函数sign() ,由于单位阶跃信号 (t)和符号函数两者之间存在以下关系:1122()sgn()t t ε=+,因此,利用这个函数就可以很容易地生成单位阶跃信号。

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

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

单位序列()k δ单位序列()k δ)的定义为10()0k k k δ=⎧=⎨≠⎩单位阶跃序列()u k单位阶跃序列()u k 的定义为10()0k u k k ≥⎧=⎨<⎩3.卷积积分两个信号的卷积定义为:1212()()()()()y t f t f t f f t d τττ∞-∞=*∆-⎰MATLAB 中是利用conv 函数来实现卷积的。

功能:实现两个函数1()f t 和2()f t 的卷积。

格式:g=conv(f1,f2)说明:f1=f 1(t),f2=f 2(t) 表示两个函数,g=g(t)表示两个函数的卷积结果。

三、实验内容1.分别用MATLAB 的向量表示法和符号运算功能,表示并绘出下列连续时间信号的波形: ⑴ 2()(2)()tf t e u t -=- ⑵ []()cos()()(4)2tf t u t u t π=--(1) t=-1:0.01:10;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 表示并绘出下列离散时间信号的波形: ⑵ []()()(8)f t k u k u k =-- ⑶ ()sin()()4k f k u k π= (2) t=0:8; t1=-10:15;f=[zeros(1,10),t,zeros(1,7)]; stem(t1,f)axis([-10,15,0,10]);(3) t=0:50;t1=-10:50;f=[zeros(1,10),sin(t*pi/4)]; stem(t1,f)axis([-10,50,-2,2])3.已知两信号1()(1)()f t u t u t =+-,2()()(1)f t u t u t =--,求卷积积分12()()()g t f t f t =*,并与例题比较。

t1=-1:0.01:0; t2=0:0.01:1; t3=-1:0.01:1; f1=ones(size(t1)); f2=ones(size(t2)); g=conv(f1,f2);subplot(3,1,1),plot(t1,f1); subplot(3,1,2),plot(t2,f2); subplot(3,1,3),plot(t3,g);与例题相比较,g(t)的定义域不同,最大值对应的横坐标也不同。

4.已知{}{}12()1,1,1,2,()1,2,3,4,5f k f k ==,求两序列的卷积和 。

N=4; M=5;L=N+M-1; f1=[1,1,1,2]; f2=[1,2,3,4,5]; g=conv(f1,f2); kf1=0:N-1; kf2=0:M-1; kg=0:L-1;subplot(1,3,1),stem(kf1,f1,'*k');xlabel('k'); ylabel('f1(k)');grid onsubplot(1,3,2),stem(kf2,f2,'*k');xlabel('k'); ylabel('f2(k)');grid onsubplot(1,3,3);stem(kg,g,'*k');xlabel('k'); ylabel('g(k)');grid on实验心得:第一次接触Mutlab 这个绘图软件,觉得挺新奇的,同时 ,由于之前不太学信号与系统遇到一些不懂的问题,结合这些图对信号与系统有更好的了解。

实验四 连续时间信号的频域分析一、 实验目的1.熟悉傅里叶变换的性质 2.熟悉常见信号的傅里叶变换3.了解傅里叶变换的MATLAB 实现方法二、 实验原理从已知信号()f t 求出相应的频谱函数()F j ω的数学表示为:()F j ω()j t f t e dt ω∞--∞=⎰傅里叶反变换的定义为:1()()2j t f t F j e d ωωωπ∞-∞=⎰在MA TLAB 中实现傅里叶变换的方法有两种,一种是利用MATLAB 中的Symbolic MathToolbox 提供的专用函数直接求解函数的傅里叶变换和傅里叶反变换,另一种是傅里叶变换的数值计算实现法。

1.直接调用专用函数法①在MATLAB 中实现傅里叶变换的函数为:F=fourier( f ) 对f(t)进行傅里叶变换,其结果为F(w) F =fourier(f,v) 对f(t)进行傅里叶变换,其结果为F(v) F=fourier( f,u,v ) 对f(u)进行傅里叶变换,其结果为F(v) ②傅里叶反变换f=ifourier( F ) 对F(w)进行傅里叶反变换,其结果为f(x) f=ifourier(F,U) 对F(w)进行傅里叶反变换,其结果为f(u) f=ifourier( F,v,u ) 对F(v)进行傅里叶反变换,其结果为f(u) 注意: (1)在调用函数fourier( )及ifourier( )之前,要用syms 命令对所有需要用到的变量(如t,u,v,w )等进行说明,即要将这些变量说明成符号变量。

对fourier( )中的f 及ifourier( )中的F 也要用符号定义符sym 将其说明为符号表达式。

(2)采用fourier( )及fourier( )得到的返回函数,仍然为符号表达式。

在对其作图时要用ezplot( )函数,而不能用plot()函数。

(3)fourier( )及fourier( )函数的应用有很多局限性,如果在返回函数中含有δ(ω)等函数,则ezplot( )函数也无法作出图来。

另外,在用fourier( )函数对某些信号进行变换时,其返回函数如果包含一些不能直接表达的式子,则此时当然也就无法作图了。

这是fourier( )函数的一个局限。

另一个局限是在很多场合,尽管原时间信号f (t )是连续的,但却不能表示成符号表达式,此时只能应用下面介绍的数值计算法来进行傅氏变换了,当然,大多数情况下,用数值计算法所求的频谱函数只是一种近似值。

2、傅里叶变换的数值计算实现法严格说来,如果不使用symbolic 工具箱,是不能分析连续时间信号的。

采用数值计算方法实现连续时间信号的傅里叶变换,实质上只是借助于MATLAB 的强大数值计算功能,特别是其强大的矩阵运算能力而进行的一种近似计算。

傅里叶变换的数值计算实现法的原理如下:对于连续时间信号f(t),其傅里叶变换为: ()F j ω0()lim()j tj n n f t edt f n e ωωττττ∞∞---∞→=-∞==∑⎰其中τ为取样间隔,如果f(t)是时限信号,或者当|t|大于某个给定值时,f(t)的值已经衰减得很厉害,可以近似地看成是时限信号,则上式中的n 取值就是有限的,假定为N ,有: ()F j ω1()N j n n f n eωτττ--==∑若对频率变量ω进行取样,得:()()k F k F j ω=1()0k N j n n f n e k M ωτττ--==<<∑通常取:02k k k MM ωπωτ==,其中0ω是要取的频率范围,或信号的频带宽度。

相关主题