实验二:连续时间信号的频域分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验目的
1、掌握连续时间周期信号的傅里叶级数的物理意义和分析方法;
2、观察截短傅里叶级数而产生的“Gibbs 现象”,了解其特点以及产生的原因;
3、掌握连续时间傅里叶变换的分析方法及其物理意义;
4、学习利用MATLAB 语言编写计算CTFS 和CTFT 的仿真程序。
基本要求:掌握并深刻理傅里叶变换的物理意义,掌握信号的傅里叶变换的计算方法,掌握利用MATLAB 编程完成相关的傅里叶变换的计算。
二、实验原理及方法
1、连续时间周期信号的傅里叶级数CTFS 分析
任何一个周期为T 1的正弦周期信号,只要满足狄利克利条件,就可以展开成傅里叶级数。
其中三角傅里叶级数为:
∑∞
=++=1000)]sin()cos([)(k k k t k b t k a a t x ωω 9.1
或: ∑∞
=++
=1
00)cos()(k k k
t k c
a t x ϕω 9.2
其中1
02T π
ω=
,称为信号的基本频率,k k b a a ,和,0分别是信号)(t x 的直流分量、余弦分量幅度和正弦分量幅度,k k c ϕ、为合并同频率项之后各正弦谐波分量的幅度和初相位,它们都是频率0ωk 的函数,绘制出它们与0ωk 之间的图像,称为信号的频谱图(简称“频谱”),
k c -0ωk 图像为幅度谱,k ϕ-0ωk 图像为相位谱。
指数形式的傅里叶级数为:
∑∞
-∞
==
k t
jk k
e
a t x 0)(ω 9.3
其中,k a 为指数形式的傅里叶级数的系数,按如下公式计算:
⎰
--=
2
/2
/1
110)(1
T T t
jk k dt e t x T a ω 9.4 假设谐波项数为N ,则上面的和成式为:
∑-==
N
N
k t
jk k
e
a t x 0)(ω 9.5
显然,N 越大,所选项数越多,有限项级数合成的结果越逼近原信号x(t)。 2、连续时间信号傅里叶变换----CTFT
傅里叶变换在信号分析中具有非常重要的意义,它主要是用来进行信号的频谱分析的。傅里叶变换和其逆变换定义如下:
⎰∞
∞
--=
dt e
t x j X t
j ωω)()( 9.6
⎰
∞
∞
-=
ωωπ
ωd e j X t x t
j )(21
)( 9.7 连续时间傅里叶变换主要用来描述连续时间非周期信号的频谱。任意非周期信号,如果满足狄里克利条件,那么,它可以被看作是由无穷多个不同频率(这些频率都是非常的接近)的周期复指数信号e j ωt 的线性组合构成的,每个频率所对应的周期复指数信号e j ωt 称为频率分量其相对幅度为对应频率的|X(j ω)|之值,其相位为对应频率的X(j ω)的相位。
给定一个连续时间非周期信号x(t),它的频谱也是连续且非周期的。对于连续时间周期信号,也可以用傅里变换来表示其频谱,其特点是,连续时间周期信号的傅里叶变换时有冲激序列构成的,是离散的——这是连续时间周期信号的傅里叶变换的基本特征。 3、连续周期信号的傅里叶级数CTFS 的MATLAB 实现 3.1 傅里叶级数的MATLAB 计算
设周期信号x(t)的基本周期为T 1,且满足狄里克利条件,则其傅里叶级数的系数可由式9.4计算得到。式9.4重写如下:
⎰--=
2
/2
/1
110)(1T T t
jk k dt e
t x T a ω
基本频率为: 1
02T πω=
对周期信号进行分析时,我们往往只需对其在一个周期内进行分析即可,通常选择主周期。假定x 1(t)是x(t)中的主周期,则
⎰
--=
2
/2
/11
110)(1T T t
jk k dt e t x T a ω 计算机不能计算无穷多个系数,所以我们假设需要计算的谐波次数为N ,则总的系数个数为2N+1个。在确定了时间范围和时间变化的步长即T 1和dt 之后,对某一个系数,上述系数的积分公式可以近似为:
∑⎰---==n
t
jk n T T t jk k T dt e t x dt e t x T a 12
/2/11/)()(10110ωω 121/],,[)](),(),([0201
0T dt e e e
t x t x t x M t jk t jk t jk M ⋅⋅=---ωωωΛΛ
对于全部需要的2N+1个系数,上面的计算可以按照矩阵运算实现。MATLAB 实现系数计算的程序如下:
dt = 0.01;
T = 2; t = -T/2:dt:T/2; w0 = 2*pi/T;
x1 = in put(‘Type in the periodic signal x(t) over one period x1(t)=’); N = input(‘Type in the number N=’); k = -N:N; L = 2*N+1; ak = x1*exp(-j*k*w0*t’)*dt/T;
例1:给定一个周期为T 1 = 2s 的连续时间周期方波信号,如图所示,其一个周期内的数学表达式为:
⎩⎨
⎧<<≤≤=2
1,
010,
1)(1t t t x
% Program2_1
clear, close all T = 2; dt = 0.00001; t = -2:dt:2; x1 = u(t) - u(t-1-dt); x = 0;
for m = -1:1
x = x + u(t-m*T) - u(t-1-m*T-dt);
end
w0 = 2*pi/T;
N = 10; L = 2*N+1;
for k = -N: N;
ak(N+1+k) = (1/T)*x1*exp(-j*k*w0*t')*dt;
end
phi = anglel(ak); % Evaluate the phase of ak 执行程序Program2_1后,就完成了信号的傅里叶级数的系数的计算,在命令窗口键入
>> ak
图9.1 周期方波信号