实验四连续信号的傅立叶变换
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验4非周期信号的傅立叶变换分析
一、实验目的
(1)熟悉连续非周期信号频谱特点及其分析方法;
(2)掌握用MATLAB 实现傅立叶变换的两种方法;
(3)了解常用傅立叶变换性质的MATLAB 实现方法;
二、实验原理
1、傅里叶变换和其逆变换定义如下:
⎰∞
∞--=
dt e t x j X t j ωω)()( 4.1⎰∞∞-=ωωπωd e j X t x t j )(1)( 4.2
连续时间傅里叶变换主要用来描述连续时间非周期信号的频谱。按照教材中的说法,任意非周期信号,如果满足狄里克利条件,那么,它可以被看作是由无穷多个不同频率(这些频率都是非常的接近)的周期复指数信号e j ωt 的线性组合构成的,每个频率所对应的周期复指数信号e j ωt 称为频率分量(frequency component),其相对幅度为对应频率的|X(j ω)|之值,其相位为对应频率的X(j ω)的相位。
X(j ω)通常为复函数,可以按照复数的极坐标表示方法表示为:
X(j ω)=|X(j ω)|e j ∠X(j ω)
其中,|X(j ω)|称为x(t)的幅度谱,而∠X(j ω)则称为x(t)的相位谱。
给定一个连续时间非周期信号x(t),它的频谱也是连续且非周期的。
2、用MATLAB 实现方法
MATLAB 进行傅里叶变换有两种方法,一种利用符号运算的方法计算,另一种是数值计算。
2.1采用数值计算的方法来进行傅里叶变换的计算
严格来说,用数值计算的方法计算连续时间信号的傅里叶变换需要有个限定条件,即信号是时限信号(Time limited signal),也就是当时间|t|大于某个给定时间时其值衰减为零或接近于零,这个条件与前面提到的为什么不能用无限多个谐波分量来合成周期信号的道理是一样的。计算机只能处理有限大小和有限数量的数。
采用数值计算算法的理论依据是:
()()j t X j x t e dt ωω∞
--∞=
⎰∑∞-∞=-→=k T jk T T
e kT x ω)(lim 0
若信号为时限信号,当时间间隔T 取得足够小时,上式可演变为:
∑-=-=N N k T
jk e kT x T
j X ωω)()(T
e e e t x t x t x N t j t j t j N ],,,[)](,),(),([12211221+---+⋅=ωωω 上式用MATLAB 表示为:
X=x*exp(-j*t’*w)*T
其中X 为信号x(t)的傅里叶变换,w 为频率,T 为取样间隔。
相应的MATLAB 程序:
T =0.01;dw =0.1;
%时间和频率变化的步长t =-10:T:10;
w =-4*pi:dw:4*pi;
X(j ω)可以按照下面的矩阵运算来进行:
X=x*exp(-j*t’*ω)*T;
%傅里叶变换X1=abs(X);
%计算幅度谱phai=angle(X);%计算相位谱
为了使计算结果能够直观地表现出来,还需要用绘图函数将时间信号x(t),信号的幅度谱|X(j ω)|和相位谱∠X(j ω)分别以图形的方式表现出来,并对图形加以适当的标注。这里还需要注意,由于在MATLAB 运算中,必须对连续信号()x t 进行取样,为了不丢失原信号()x t 的信息,即反变换后能不失真地恢复原来信号()x t ,取样间隔T 的确定必须满足取样定理的要求,即取样间隔T 必须小于奈奎斯特频率。
2.1.1用MATLAB 实现傅里叶逆变换
连续时间傅里叶逆变换可用式4.2进行计算。式4.2重写如下:
⎰∞∞-=ω
ωπωd e j X t x t j )(21)(从定义式可看出,其计算方法与傅里叶变换是一样的,因此可以采用同样的矩阵运算的方法来计算,即
x(t)=X(j ω)*exp(j ω’*t)*d ω
具体的MATLAB 函数如下:
t =-5:0.01;5;%指定信号的时间范围,此范围应根据信号的持续时间确定。dw =0.1;w =-4*pi:d ω:4*pi;
X =input(‘Type in the expression of X(jw)’);
x =X*exp(jw’*t)*dw;
然后用绘图函数就可以绘制出逆变换得到的时域信号波形图。
2.2符号运算的计算方法
MATLAB 提供了两个函数fourier()和ifourier(),它们可分别用来计算傅立叶正变换和反变换,这是计算傅立叶变换的符号计算方法。
(1)傅里叶变换
在Matlab 中,傅里变换变换由函数fourier()实现。fourier()有三种调用格式:
①F=fourier(f )
求时间函数f (t)的傅里叶变换,返回函数F 的自变量默认为w ,即)]([)(t f j F F =ω;②F=fourier(f ,v )
求时间函数f (t)的傅里叶变换,返回函数F 的自变量为v ,即)]([)(t f jv F F =;
③F=fourier(f ,u ,v )
对自变量为u 的函数f (u )求傅里叶变换,返回函数F 的自变量为v ,即)]([)(u f jv F F =。
(2)傅里叶逆变换
在Matlab 中,傅里变换逆变换由函数ifourier()实现。与函数fourier()相类似,ifourier()也有三种调用格式:
①f=ifourier(F )
求函数F (j ω)的傅里叶逆变换,返回函数f 的自变量默认为x ,即)]([)(1ωj F x f -=F ;②f=ifourier(F ,u )
求函数F (j ω)的傅里叶逆变换,返回函数f 的自变量为u ,即)]([)(1ωj F u f -=F 。③f=ifourier(F ,v ,u )
求函数F (j v )的傅里叶逆变换,返回函数f 的自变量为u ,即)]
([)(1
jv F u f -=F 这里要注意的是,在调用上述两个函数之前,先要用syms 命令对所用到的变量(如t 、u 、v 、w)等进行说明,也就是要将这些变量说明成符号变量。对于fourier()中的函数f 或ifourier()中的F ,也要用syms 将f 或F 说明成为符号表达式。另外,在采用fourier()及ifourier()得到的返回函数,仍然是符号表达式。若需要对返回函数作图时,只能用ezplot()绘图命令,而不能用plot()命令。如果返回函数中含有δ(ω)等项,用ezplot()也无法作图。
fourier()函数的局限性:用fourier()对某些信号求反变换时,其返回函数可能会包含一些不能直接表达的式子,甚至可能会出现一些屏幕提示为“未被定义的函数或变量”的项;另外,在许多情况下,信号)(t f 尽管是连续的,但却不可能表示成符号表达式;函数fourier()也不可能对离散信号)(n f 进行处理。
例1.求单边指数函数2()()t f t e u t -=的傅里叶变换,画出其幅频特性和相频特性图。