实验二:连续时间信号的频域分析
一、实验目的
1、掌握连续时间周期信号的傅里叶级数的物理意义和分析方法;
2、观察截短傅里叶级数而产生的“Gibbs现象”,了解其特点以及产生的原因;
3、掌握连续时间傅里叶变换的分析方法及其物理意义;
4、学习利用MATLAB语言编写计算CTFS和CTFT的仿真程序。
基本要求:掌握并深刻理傅里叶变换的物理意义,掌握信号的傅里叶变换的计算方法,掌握利用MATLAB编程完成相关的傅里叶变换的计算。
二、实验原理及方法
1、连续时间周期信号的傅里叶级数CTFS分析
任何一个周期为T1的正弦周期信号,只要满足狄利克利条件,就可以展开成傅里叶级数。
其中三角傅里叶级数为:
9.1
或: 9.2
其中,称为信号的基本频率(Fundamental frequency),分别是信号的直流分量、余弦分量幅度和正弦分量幅度,傅里叶变换公式原理为合并同频率项之后各正弦谐波分量的幅度和初相位,它们都是频率的函数,绘制出它们与之间的图像,称为信号的频谱图(简称“频谱”),-图像为幅度谱,-图像为相位谱。
三角形式傅里叶级数表明,如果一个周期信号x(t),满足狄里克利条件,那么,它就可以被看作是由很多不同频率的互为谐波关系(harmonically related)的正弦信号所组成,其中每一个不同频率的正弦信号称为正弦谐波分量 (Sinusoid component),其幅度(amplitude)为。也可以反过来理解三角傅里叶级数:用无限多个正弦谐波分量可以合成一个任意的非正弦周期信号。
指数形式的傅里叶级数为:
9.3
其中,为指数形式的傅里叶级数的系数,按如下公式计算:
9.4
指数形式的傅里叶级数告诉我们,如果一个周期信号x(t),满足狄里克利条件,那么,它就可以被看作是由很多不同频率的互为谐波关系(harmonically related)的周期复指数信号所组成,其中每一个不同频率的周期复指数信号称为基本频率分量,其复幅度(complex amplitude)为。这里“复幅度(complex amplitude)”指的是通常是复数。
上面的傅里叶级数的合成式说明,我们可以用无穷多个不同频率的周期复指数信号来合成任意一个周期信号。然而,用计算机(或任何其它设备)合成一个周期信号,显然不可能做到用无限多个谐波来合成,只能取这些有限个谐波分量来近似合成。
假设谐波项数为N,则上面的和成式为:
9.5
显然,N越大,所选项数越多,有限项级数合成的结果越逼近原信号x(t)。本实验可以比较直观地了解傅里叶级数的物理意义,并观察到级数中各频率分量对波形的影响包括“Gibbs”现象:即信号在不连续点附近存在一个幅度大约为9%的过冲,且所选谐波次数越多,过冲点越向不连续点靠近。这一现象在观察周期矩形波信号和周期锯齿波信号时可以看得很清楚。
2、连续时间信号傅里叶变换----CTFT
傅里叶变换在信号分析中具有非常重要的意义,它主要是用来进行信号的频谱分析的。傅里叶变换和其逆变换定义如下:
9.6
9.7
连续时间傅里叶变换主要用来描述连续时间非周期信号的频谱。任意非周期信号,如果满
足狄里克利条件,那么,它可以被看作是由无穷多个不同频率(这些频率都是非常的接近)的周期复指数信号ej t的线性组合构成的,每个频率所对应的周期复指数信号ej t称为频率分量(frequency component),其相对幅度为对应频率的|X(j )|之值,其相位为对应频率的X(j )的相位。
X(j )通常为关于的复函数,可以按照复数的极坐标表示方法表示为:
X(j )=| X(j )|ej X(j )
其中,| X(j )|称为x(t)的幅度谱,而 X(j )则称为x(t)的相位谱。
给定一个连续时间非周期信号x(t),它的频谱也是连续且非周期的。对于连续时间周期信号,也可以用傅里变换来表示其频谱,其特点是,连续时间周期信号的傅里叶变换时有冲激序列构成的,是离散的——这是连续时间周期信号的傅里叶变换的基本特征。
3、连续周期信号的傅里叶级数CTFS的MATLAB实现
3.1 傅里叶级数的MATLAB计算
设周期信号x(t)的基本周期为T1,且满足狄里克利条件,则其傅里叶级数的系数可由式9.4计算得到。式9.4重写如下:
基本频率为:
对周期信号进行分析时,我们往往只需对其在一个周期内进行分析即可,通常选择主周期(Principle period)。假定x1(t)是x(t)中的主周期,则
计算机不能计算无穷多个系数,所以我们假设需要计算的谐波次数为N,则总的系数个数为2N+1个。在确定了时间范围和时间变化的步长即T1和dt之后,对某一个系数,上述系数的积分公式可以近似为:
对于全部需要的2N+1个系数,上面的计算可以按照矩阵运算实现。MATLAB实现系数计算的程序如下:
dt = 0.01;
T = 2; t = -T/2:dt:T/2; w0 = 2*pi/T;
x1 = input(‘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;
需要强调的是,时间变量的变化步长dt的大小对傅里叶级数系数的计算精度的影响非常大,dt越小,精度越高,但是,计算机计算所花的时间越长。
例1:给定一个周期为T1 = 2s的连续时间周期方波信号,如图所示,其一个周期内的数学表达式为:
解:首先,我们根据前面所给出的公式,计算该信号的傅里叶级数的系数。
因为: 0 = 2π/T1 = π,代入上式得到:
在MATLAB命令窗口,依次键入:
>> k = -10:10;
>> ak = ((-j).^k).* (sin((k+eps)*pi/2)./((k+eps)*pi)) % The expression of ak
ak =
Columns 1 through 4
-0.0000 0 + 0.0354i -0.0000 0 + 0.0455i
Columns 5 through 8
-0.0000 0 + 0.0637i -0.0000 0 + 0.1061i
Columns 9 through 12
-0.0000 0 + 0.3183i 0.5000 0 - 0.3183i
Columns 13 through 16
-0.0000 0 - 0.1061i -0.0000 0 - 0.0637i
Columns 17 through 20
-0.0000 0 - 0.0455i -0.0000 0 - 0.0354i
Column 21
-0.0000
从MATLAB命令窗口,我们得到了该周期信号从到共21个系数。
紧接着再键入以下命令:
>> subplot(221)
>> stem(k,abs(ak),'k.')
>> title('The Fourier series coefficients')
>> xlabel('Frequency index k')
就得到一幅如右图所示的描述与k之间的关系的图形。
以上是通过手工计算得到的这个周期信号的傅里叶级数表达式及其频谱图,下面给出完成傅里叶级数系数计算的相应MATLAB范例程序。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论