信号与系统实验教程(MATLAB) 联系客服

发布时间 : 星期日 文章信号与系统实验教程(MATLAB)更新完毕开始阅读

1 ak?T1T1/2?T1/2?jk?0tx(t)edt 2.4 ?指数形式的傅里叶级数告诉我们,如果一个周期信号x(t),满足狄里克利条件,那么,它

就可以被看作是由很多不同频率的互为谐波关系(harmonically related)的周期复指数信号所组成,其中每一个不同频率的周期复指数信号称为基本频率分量,其复幅度(complex amplitude)为ak。这里“复幅度(complex amplitude)”指的是ak通常是复数。

上面的傅里叶级数的合成式说明,我们可以用无穷多个不同频率的周期复指数信号来合成任意一个周期信号。然而,用计算机(或任何其它设备)合成一个周期信号,显然不可能做到用无限多个谐波来合成,只能取这些有限个谐波分量来近似合成。

假设谐波项数为N,则上面的和成式为:

x(t)?k??N?aekNjk?0t 2.5

显然,N越大,所选项数越多,有限项级数合成的结果越逼近原信号x(t)。本实验可以比较直观地了解傅里叶级数的物理意义,并观察到级数中各频率分量对波形的影响包括“Gibbs”现象:即信号在不连续点附近存在一个幅度大约为9%的过冲,且所选谐波次数越多,过冲点越向不连续点靠近。这一现象在观察周期矩形波信号和周期锯齿波信号时可以看得很清楚。

2、连续时间信号傅里叶变换----CTFT

傅里叶变换在信号分析中具有非常重要的意义,它主要是用来进行信号的频谱分析的。傅

里叶变换和其逆变换定义如下:

? X(j?)????j?tx(t)edt 2.6 ?1x(t)?2??j?tX(j?)ed? 2.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、离散时间序列的傅里叶变换---DTFT

29

给定一个非周期离散时间序列x[n],它的傅里叶变换定义为 X(ej?)?n????j?n 2.8 x[n]e??1其反变换定义为 x[n]?2??j?j?nX(e)ed? 2.9 ??? 式2.8称为离散时间傅里叶正变换,式2.9称为离散时间傅里叶反变换。由式2.9可以看出,

一个非周期离散时间序列,总是可以被看作是由无穷多个不同频率的加权的基本频率分量ejωn组合而成的。对序列中的频率为ω的频率分量来说,其权为X(ejω),通常是复数,也可以将它表示为

X(ejω) = | X(ejω)|ej?X(ejω)

|X(ejω)|称为序列的幅度谱,而?X(ejω)称为序列的相位谱,它们都是频率ω的周期函数。

4、连续周期信号的傅里叶级数CTFS的MATLAB实现 4.1 傅里叶级数的MATLAB计算

设周期信号x(t)的基本周期为T1,且满足狄里克利条件,则其傅里叶级数的系数可由式2.4计算得到。式2.4重写如下:

1ak?T1基本频率为: ?0?T1/2?T1/2?jk?0tx(t)edt ?2? T1对周期信号进行分析时,我们往往只需对其在一个周期内进行分析即可,通常选择主周期(Principle period)。假定x1(t)是x(t)中的主周期,则

1ak?T1T1/2?T1/2?jk?0tx(t)edt 1?计算机不能计算无穷多个系数,所以我们假设需要计算的谐波次数为N,则总的系数个数

为2N+1个。在确定了时间范围和时间变化的步长即T1和dt之后,对某一个系数,上述系数的积分公式可以近似为:

11ak?x1(t)e?jk?0tdt??x(tn)e?jk?0tdt/T1 ?T1?T1/2n ?[x(t1),x(t2),?x(tM)]?[e?jk?0t1T/2,e?jk?0t2,?e?jk?0tM]?dt/T1

对于全部需要的2N+1个系数,上面的计算可以按照矩阵运算实现。MATLAB实现系数计

算的程序如下:

dt = 0.01;

T = 2; t = -T/2:dt:T/2; w0 = 2*pi/T;

30

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越小,精度越高,但是,计算机计算所花的时间越长。

例题2-1:给定一个周期为T1 = 2s的连续时间周期方波信号,如图所示,其一个周期内的数

学表达式为:

x1(t)???1,?0,0?t?1

1?t?2-2 -1 1 x(t) 0 1 2 t 解:首先,我们根据前面所给出的公式,计算该信号的傅里叶级数的系数。

T1/21图2.1 周期方波信号

10?jk?t1e1?jk?t1100?jk?t?jk?t?ed(?jk?t)?edt?ak?x(t)edt01?j2k?0?2??j2k?0T1?T?/200001?e?1?e?j2k?0?jk?0k?j?02ek?j?02?e?j2k?0kj?02ksin(?0)?jk?02?e2 k?0sin(因为:?0 = 2π/T1 = π,代入上式得到:ak?(?j)kk?k?)2

在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

31

从MATLAB命令窗口,我们得到了该周期信号从a?10到a10共21个系数。 紧接着再键入以下命令:

>> subplot(221)

>> stem(k,abs(ak),'k.')

>> title('The Fourier series coefficients') >> xlabel('Frequency index k')

就得到一幅如右图所示的描述ak与k之间的关系的

图形。

以上是我们通过手工计算得到的这个周期信号的傅里叶级数表达式及其频谱图,下面给出完成傅里叶级数系数计算的相应MATLAB范例程序。

% Program2_1

% This program is used to evaluate the Fourier series coefficients ak of a periodic square

wave

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 % Periodically extend x1(t) to form a periodic signal x = x + u(t-m*T) - u(t-1-m*T-dt); end

w0 = 2*pi/T;

N = 10; % The number of the harmonic components L = 2*N+1;

for k = -N: N; % Evaluate the Fourier series coefficients ak 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

命令窗口就可以显示傅里叶级数的21个系数:

ak =

Columns 1 through 4

0.0000 + 0.0000i 0.0000 + 0.0354i 0.0000 - 0.0000i 0.0000 + 0.0455i Columns 5 through 8

0.0000 - 0.0000i 0.0000 + 0.0637i 0.0000 - 0.0000i 0.0000 + 0.1061i Columns 9 through 12

0.0000 - 0.0000i 0.0000 + 0.3183i 0.5000 0.0000 - 0.3183i Columns 13 through 16

0.0000 + 0.0000i 0.0000 - 0.1061i 0.0000 + 0.0000i 0.0000 - 0.0637i Columns 17 through 20

32