信号与系统MATLAB实验 下载本文

[r,x]=lsim(A,B,C,D,E,t,x0); plot(t,r)

信号波形:

阶跃响应程序代码:

a=[1,-5/6,1/6];b=[1,0,-1]; k=0:20;

x=heaviside(k); y=filter(b,a,x)

subplot(2,1,1),stem(k,x) title('输入序列')

subplot(2,1,2),stem(k,y) title('输出序列') 运行结果截图:

④一带通滤波器可由下列差分方程描述:y(k)?0.81y(k?2)?f(k)?f(k?2),其中f(k)为系统输入, y(k)为系统输出。请求出当激励

f(k)??10?10cos(kn/2)?10cos(kn)??(k)(选取适当的n值)时滤波器的稳态输出。

a=[1,0,81/100]; b=[1,0,-1]; k=0:20;

x=(10+10.*cos(1/2.*k)+10.*cos(k)); y=filter(b,a,x)

subplot(3,1,1),impz(b,a,0:20), subplot(3,1,2),dstep(b,a,0:20), subplot(3,1,3),stem(k,y)

实验三?连续时间信号的频域分析

一、实验目的

1.熟悉傅里叶变换的性质 2.熟悉常见信号的傅里叶变换

3.了解傅里叶变换的MATLAB实现方法

二、实验原理

傅里叶变换是信号分析 的最重要的内容之一。从已知信号f(t)求出相应的频谱函数F(j?)的数学表示为:F(j?)?????f(t)e?j?tdt

f(t)的傅里叶变换存在的充分条件是f(t)在无限区间内绝对可积,即f(t)满足下式: ????f(t)dt??

但上式并非傅里叶变换存在的必要条件。在引入广义函数概念之后,使一些不满足绝对可积条件的函数也能进行傅里叶变换。

1?j?tF(j?)ed?。 ?傅里叶反变换的定义为:f(t)????2?在这一部分的学习中,大家都体会到了这种数学运算的麻烦。在MATLAB语言中有专门对信号进行正反傅里叶变换的语句,使得傅里叶变换很容易在MATLAB中实现。在MATLAB中实现傅里叶变换的方法有两种,一种是利用MATLAB中的Symbolic Math Toolbox提供的专用函数直接求解函数的傅里叶变换和傅里叶反变换,另一种是傅里叶变换的数值计算实现法。

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)

由于MATLAB中函数类型非常丰富,要想了解函数的意义和用法,可以用mhelp命令。如在命令窗口键入:mhelp fourier回车,则会得到fourier的意义和用法。 注意:

(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)是连续的,但却不能表示成符号表达式,此时只能应用下面介绍的数值计算法来进行傅氏变换了,当然,大多数情况下,用数值计算法所求的频谱函数只是一种近似值。

三、 实验内容

1.编程实现求下列信号的幅度频谱

(1)求出f1(t)??(2t?1)??(2t?1)的频谱函数F1(jω),请将它与上面门宽为2的门函数f(t)??(t?1)??(t?1)的频谱进行比较,观察两者的特点,说明两者的关系。

f1(t)函数程序代码: syms t w;

Gt=sym('Heaviside(2*t+1)-Heaviside(2*t-1)'); Fw=fourier(Gt,t,w);

FFw=maple('convert',Fw,'piecewise'); FFP=abs(FFw);

ezplot(FFP,[-10*pi 10*pi]);grid; axis([-10*pi 10*pi 0 2.2]); f1(t)函数图像: 门函数程序代码: syms t w;

Gt=sym('Heaviside(t+1)-Heaviside(t-1)'); Fw=fourier(Gt,t,w);

FFw=maple('convert',Fw,'piecewise'); FFP=abs(FFw);

ezplot(FFP,[-10*pi 10*pi]);grid; axis([-10*pi 10*pi 0 2.2]); 门函数图像:

?1?|t|(2) 三角脉冲?f2(t)???0|t|?1|t|?1

程序清单:

f2(t)函数程序代码: syms t w

Gt=sym('(1+t)*(Heaviside(t+1)-Heaviside(t))+(1-t)*(Heaviside(t)-Heaviside(t-1))');

Fw=fourier(Gt,t,w);

FFw=maple('convert',Fw,'piecewise'); FFP=abs(FFw);

ezplot(FFP,[-10*pi 10*pi]);grid; axis([-10*pi 10*pi 0 2.2]); f2(t)函数图像: (3) 单边指数信号 f3(t)?e?t?(t)

程序清单:

syms t w

Gt=sym('exp(-1*t)*heaviside(t)'); Fw=fourier(Gt,t,w);

FFw=maple('convert',Fw,'piecewise');

FFP=abs(FFw); ezplot(FFP,[-7*pi 7*pi]);grid; axis([-7*pi 7*pi 0 1.2]) 信号波形:

(4) 高斯信号f3(t)?e?t? 程序清单:

syms t w;Gt=exp(-t.^2); Fw=fourier(Gt,t,w) FFP=abs(Fw)

ezplot(Fw,[-30 30]);grid;axis([-30 30 0 2]) 信号波形:

2.利用ifourier( ) 函数求下列频谱函数的傅氏反变换

2?(1)F(j?)??j

16??2程序清单:

syms t w

Fw=sym('(-j*2*w)/(16+w^2)'); ft=ifourier (Fw) ft=ifourier(Fw,w,t);

运行结果:ft=-j*exp(-4*abs(x))*sign(x)*1i

(j?)2?5j??8(2)F(j?)? 2(j?)?6j??52 syms t w

Fw=sym('((j*w)^2+5*j*w-8)/((j*w)^2+6*j*w+5)'); ft=ifourier(Fw)

ft=ifourier(Fw,w,t);

运行结果:ft =(2*pi*dirac(x) +

(pi*exp(-(x*1i)/j)*sign(imag(1/j))*3i)/j - (pi*exp(-(x*5i)/j)*sign(imag(1/j))*2i)/j - (pi*exp(-(x*1i)/j)*sign(x)*3i)/j +

(pi*exp(-(x*5i)/j)*sign(x)*2i)/j)/(2*pi)

实验四? 离散信号与系统的时域分析

一、实验目的

1. 学会用MATLAB表示常用离散信号的方法; 2. 学会用MATLAB实现离散信号卷积的方法; 3. 学会用MATLAB求解离散系统的单位响应; 4. 学会用MATLAB求解离散系统的零状态响应;