信号与系统 上机实验题 全解 下载本文

但上式并非傅里叶变换存在的必要条件。在引入广义函数概念之后,使一些不满足绝对可积条件的函数也能进行傅里叶变换。 傅里叶反变换的定义为:f(t)?12?????F(j?)ej?td?。

在这一部分的学习中,大家都体会到了这种数学运算的麻烦。在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)是连续的,但却不能表示成符号表达式,此时只能应用下面介绍的数值计算法来进行傅氏变换了,当然,大多数情况下,用数值计算法所求的频谱函数只是一种近似值。 2、傅里叶变换的数值计算实现法

严格说来,如果不使用symbolic工具箱,是不能分析连续时间信号的。采用数值计算方法实现连续时间信号的傅里叶变换,实质上只是借助于MATLAB的强大数值计算功能,特别是其强大的矩阵运算能力而进行的一种近似计算。傅里叶变换的数值计算实现法的原理如下:

对于连续时间信号f(t),其傅里叶变换为:

F(j?)?????f(t)e?j?tdt?lim??0n?????f(n?)e?j?n??

其中η为取样间隔,如果f(t)是时限信号,或者当|t|大于某个给定值时,f(t)的值已经衰减得很厉害,可以近似地看成是时限信号,则上式中的n取值就是有限的,假定为N,有: F(j?)???f(n?)e?j?n?

n?0N?1若对频率变量ω进行取样,得:

F(k)?F(j?k)???f(n?)e?j?kn?n?0N?10?k?M

通常取:?k??0Mk?2?k,其中?0是要取的频率范围,或信号的频带M?宽度。采用MATLAB实现上式时,其要点是要生成f(t)的N个样本值

f(n?)的向量,以及向量e?j?kn?,两向量的内积(即两矩阵的乘积),

结果即完成上式的傅里叶变换的数值计算。

注意:时间取样间隔η的确定,其依据是η必须小于奈奎斯特(Nyquist)取样间隔。如果f(t)不是严格的带限信号,则可以根据实际计算的精度要求来确定一个适当的频率?0为信号的带宽。

三、抄写实验内容,写出程序清单

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

(1)求出f1(t)??(2t?1)??(2t?1)的频谱函数F1(jω),请将它与上面2

的门函数f(t)??(t?1)??(t?1)的频谱进行比较,观察两者的特点,说明两者的关系。 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]); (2)三角脉冲f2(t)???1?|t|?0|t|?1 |t|?1 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]); (3)单边指数信号f3(t)?e?t?(t) syms t w

Gt=sym('exp(-t)*Heaviside(t)'); 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]); (4)高斯信号f3(t)?e

?t2