北京理工大学信号与系统实验报告3 信号的频域分析 联系客服

发布时间 : 星期五 文章北京理工大学信号与系统实验报告3 信号的频域分析更新完毕开始阅读c88a94564b35eefdc8d333cb

实验3 信号的频域分析

(综合型实验)

一、实验目的

1)深入理解信号频谱的概念,掌握信号的频域分析方法。 2)观察典型周期信号和非周期信号的频谱,掌握其频谱特性。 二、实验原理与方法

1.连续周期信号的频谱分析

如果周期信号满足Dirichlet条件,就可展开为傅里叶级数的形式,即

x(t)?k????cek??jk?0t(1)

ck?1?jk?0tx(t)edt(2) ?T0T0其中T0表示基波周期,?0?2?/T0为基波频率,(...)表示任一个基波周期内的积分。

T0?上面两式为周期信号复指数形式的傅里叶级数,系数ck成为x(t)的傅里叶系数。周期信号的傅里叶级数还可由三角函数的线性组合来表示,即

x(t)?a0??akcosk?0t??bksink?0t(3)

k?1k?1????其中a0?122x(t)dt,a?x(t)cosk?tdt,b?x(t)sink?0tdt(4) k0k???T0TTT0T00T00??(3)式中同频率的正弦、余弦项合并可以得到三角函数形式的傅里叶级数,即

x(t)?A0??Akcos(k?0t??k) (5)

k?1其中A0?a0,Ak?2ak?bk2,?k??arctanbk (6) ak任何满足Dirichlet条件的周期信号都可以表示成一组谐波关系的复指数函数或三角函数的叠加。周期信号表示为傅里叶级数时需要无限多项才能完全逼近原信号,但在实际应用中常采用有限项级数代替,所选级数项越多就越接近原信号。 2.连续非周期信号的频谱分析

对于非周期连续时间信号,信号的傅里叶变换和傅里叶逆变换定义为

??X(?)????x(t)e?j?tdt (7)

1x(t)?2??????X(?)ej?td? (8)

以上两式把信号的时频特性联系起来,确立了非周期信号x(t)和频谱X(?)之间的关系。 利用MATLAB可以方便地求出非周期连续时间信号的傅里叶变换,几种常见方法如下: 1) 符号运算法

MATLAB的符号数学工具箱提供了直接求解傅里叶变换和反变换的函数,fourier函数和ifourier函数,基本调用格式为

X?fourier(x)

默认的时域变量为t,频域变量为?。

x?ifourier(X)

例:求x(t)?e?2|t|的傅里叶变换,代码及运行结果如下: >> syms t

>> x=exp(-2*abs(t)); >> X=fourier(x) X =

4/(w^2 + 4)

所以傅里叶变换结果为X(?)?4

4??22)

也可利用int 函数直接根据式(7)求傅里叶变换。

数值积分法

除了采用符号运算的方法外,还可以采用MATLAB的quad函数,采用数值积分的方法来进行连续信号的频谱分析。quad函数是一个用来计算数值积分的函数。利用quad函数可以计算非周期连续时间信号的频谱。Quad函数的一般调用格式为: y=quad(fun,a,b)

y=quad(fun,a,b,TOL,TRACE,p1,p2,...)

其中fun指定被积函数,可以用inline命令来创建,也可通过传递函数句柄的形式来指定,a、b表示定积分的上下限,TOL表示允许的相对或绝对积分误差,TRACE表示以被积函数的点绘图形式来跟踪该函数的返回值,如果TOL和TRACE为空矩阵,则使用缺省值,“p1,p2,...”表示被积函数除时间t之外所需的其他额外输入参数。

3)

数值近似法

还可以利用MATLAB的数值计算的方法近似计算连续时间傅里叶变换。傅里叶变换X(?)可以由(9)式近似计算

??X(?)????x(t)e?j?tdt?lim?x(k?)e?j?k?? (9)

??0k?????当x(t)为时限信号,且?足够小,则(9)可以演变成

X(?)???x(k?)e?jk?? (10)

k?ab(10)中求和部分又可以表示成一个行向量和一个列向量的乘积

?x(k?)ek?ab?jk???e?ja?????j(a?1)???e? (11) ?[x(a?),x((a?1)?),...,x(b?)]???...????jb?????e?上式可以很方便地利用MATLAB实现。

3.离散周期信号的分频域分析

基波周期为N的周期序列x(n)可以用N个成谐波关系的复指数序列的加权和表示,即

x(n)?k??N??ckejk(2?/N)n (12)

这里k=表示求和仅需包括一个周期内的N项,周期序列在一个周期内的求和与起点无关。将周期序列表示成式(12)的形式,称为离散傅里叶级数,而系数ck则称为傅里叶系数。离散傅里叶系数ck可由(13)式确定。

ck?1Nk??N??x(n)e?jk(2?/N)n (13)

傅里叶系数ck也称为x(n)的频谱系数,而且可以证明ck是以N为周期的离散频率序列。这说明了周期的离散时间函数对应于频域为周期的离散频率。

这里,我们用周期N与傅里叶系数ck的乘积来表示周期离散时间信号的频谱,即

X(k)?N?ck?k??N??x(n)e?jk(2?/N)n (14)

X(k)可以利用MATLAB提供的函数fft用来计算,调用格式为 X=fft(x)

该函数返回X(k)一个周期内的值,其中x表示x(n)一个周期内的样本值。

4. 离散非周期信号的频域分析

非周期序列x(n)可以表示成一组复指数序列的连续和

1x(n)?2?2??X(ej?)ej?nd? (15)

其中X(ej?)?n????x(n)e???j?n (16)

式(16)成为x(n)的离散时间傅里叶变换,式(15)和(16)确立了非周期离散时间信号x(n)及其离散时间傅里叶变换X(e)之间的变换。X(e)是连续频率?的函数,称为频谱函数,且X(e)是周期的连续频率函数,其周期为2?。可见,非周期离散时间函数对应于频域中是一个连续的周期频率函数。

对于有限长的离散时间序列,(16)可以表示为

j?j?j?

X(e)??x(n)e?j?nj?n?n1nN?e?jn1????jn2??e? (17)

?[x(n1),x(n2),...,x(nN)]???...????jnN????e?上式可以方便地利用MATLAB实现。

三、实验内容

(1)已知x(t)是如下图所示的周期矩形脉冲信号。

x(t)A......-T-c/2c/2T

1)计算该信号的傅里叶级数;

a0??TA,ak?2A?sin(k?),bk?0 k?T得傅里叶级数为:

2A???2?ktx(t)?A?sin(k?)??cos()Tk?Tk?1T

2)利用MATLAB绘出由前N次谐波合成的信号波形,观察随着N的变化合成信号波形的变

化规律;

用MATLAB编写代码如下:

N=input('N='); A=input('A='); c=input('c='); T=input('T='); t=-1.5:0.001:1.5; x=A*c*ones(size(t))/T; for n=1:N

x=x+(2*A/(n*pi))*sin(n*pi*c/T)*cos(2*pi*n*t/T); end plot(t,x);

xlabel('Time(sec)') title(['N=' num2str(n)])

?

在命令窗口输入以下语句: