实验3 傅里叶变换及其性质
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验3 傅里叶变换及其性质
1. 实验目的
学会运用MATLAB 求连续时间信号的傅里叶(Fourier )变换;学会运用MATLAB 求连续时间信号的频谱图;学会运用MATLAB 分析连续时间信号的傅里叶变换的性质。
2. 实验原理及实例分析
傅里叶变换的实现
信号()f t 的傅里叶变换定义为: ()[()]()j t F F f t f t e dt ωω∞--∞==⎰
, 傅里叶反变换定义为:11()[()]()2j t f t F F f e d ωωωωπ
∞--∞==⎰。 信号的傅里叶变换主要包括MATLAB 符号运算和MATLAB 数值分析两种方 法,下面分别加以探讨。同时,学习连续时间信号的频谱图。
MATLAB 符号运算求解法
MATLAB 符号数学工具箱提供了直接求解傅里叶变换与傅里叶反变换的函 数fourier( )和ifourier( )。Fourier 变换的语句格式分为三种。
(1) F=fourier(f):它是符号函数f 的Fourier 变换,默认返回是关于ω的函数。
(2) F=fourier(f,v):它返回函数F 是关于符号对象v 的函数,而不是默认的ω,
即()()jvt F v f t e dt ∞
--∞=⎰。
(3) F=fourier(f,u,v):是对关于u 的函数f 进行变换,返回函数F 是关于v 的
函数,即()()jvu F v f t e du ∞
--∞=⎰。
傅里叶反变换的语句格式也分为三种。
(1) f=ifourier(F):它是符号函数F 的Fourier 反变换,独立变量默认为ω,默
认返回是关于x 的函数。
(2) f=ifourier(F,u):它返回函数f 是u 的函数,而不是默认的x 。
(3) f=ifourier(F,u,v):是对关于v 的函数F 进行反变换,返回关于u 的函数f 。 值得注意的是,函数fourier( )和ifourier( )都是接受由sym 函数所定义的符号 变量或者符号表达式。
例1 用MATLAB 符号运算求解法求单边指数信号2()()t f t e u t -=的傅里叶变换。 解:MATLAB 源程序为:
ft = sym('exp(-2*t)*Heaviside(t)');
Fw = fourier(ft)
运行结果为:Fw = 1/(2+i*w)
例2 用MATLAB 符号运算法求21()1F ωω=
+的傅里叶逆变换()f t 解:MATLAB 源程序为:
ft = sym('exp(-2*t)*Heaviside(t)');
Fw = fourier(ft)
运行结果为:ft = 1/2*exp(-t)*heaviside(t)+1/2*exp(t)*heaviside(-t)
连续时间信号的频谱图
信号()f t 的傅里叶变换()F ω表达了信号在ω处的频谱密度分布情况,这就 是信号的傅里叶变换的物理含义。()F ω一般是复函数,可以表示成 ()()()j F F e ϕωωω=。()~F ωω与()~ϕωω曲线分别称为非周期信号的幅度频谱与相位频谱,它们都是频率ω的连续函数,在形状上与相应的周期信号频谱包络线相同。非周期信号的频谱有两个特点,密度谱和连续谱。要注意到,采用fourier()和ifourier() 得到的返回函数,仍然是符号表达式。若需对返回函数作图,则需应用ezplot()绘图命令。
例3 用MATLAB 命令绘出例1中单边指数信号的幅度谱和相位谱。 解:MATLAB 源程序为
ft = sym('exp(-2*t)*Heaviside(t)');
Fw = fourier(ft);
subplot(211)
ezplot(abs(Fw));grid on
title('幅度谱')
phase = atan(imag(Fw)/real(Fw));
subplot(212)
ezplot(phase);grid on
title('相位谱')
图1 单边指数信号的幅度谱和相位谱
MATLAB 数值计算求解法
fourier( )和ifourier( )函数的一个局限性是,如果返回函数中有诸如单位冲激函数()t δ等项,则用ezplot()函数无法作图。对某些信号求变换时,其返回函数可能包含一些不能直接用符号表达的式子,因此不能对返回函数作图。此外,在很多实际情况中,尽管信号()f t 是连续的,但经过抽样所获得的信号则是多组离散的数值量()f n ,因此无法表示成符号表达式,此时不能应用fourier()函数对f(n)进行处理,而只能用数值计算方法来近似求解。
从傅里叶变换定义出发有0()()lim ()j t j n F f t e dt f n e ωωω∞
∞
-∞∆→-∞--∆==∆∆∑⎰, 当∆足够小时,上式的近似情况可以满足实际需要。对于时限信号()f t ,或者在所研究的时间范围内让()f t 衰减到足够小,从而近似地看成时限信号,则对于上式可以考虑有限n 的取值。假设是因果信号,则有
10()(),
01M n j n F f n e n M ωω-=-∆=∆∆≤≤-∑
傅里叶变换后在ω域用MATLAB 进行求解,对上式的角频率ω进行离散化。假设离散化后得到N 个样值,即 2,0k k k N N πω=
≤≤∆-1, 因此有 10()(),01M n k j n F k f n e
k N ω-=-∆=∆∆≤≤-∑。采用行向量,用矩阵表示为
1*1**[()][()][]k j n T T T N M M N F k f n e
ω-∆=∆∆。其要点是要正确生成()f t 的M 个样本向量[()]f n ∆与向量[]j n k e ω-∆。当∆足够小时,上式的内积运算(即相乘求和运算)结果即为所求的连续时间信号傅里叶变换的数值解。
例4 用MATLAB 数值计算法求三角脉冲幅度谱。三角脉冲的数学表达式如下:
12,402()12,042
t t f t t t ⎧+-≤≤⎪⎪=⎨⎪-+≤≤⎪⎩ 解:MATLAB 源程序为:
dt = 0.01;
t = -4:dt:4;
ft = (t+4 )/2.*uCT(t+4)-t.*uCT(t)+(t-4)/2.*uCT(t-4);
N = 2000;
k = -N:N;
W = 2*pi*k/((2*N+1)*dt);