APP下载

周期信号双边频谱图的Matlab实现

2021-12-17王波

电脑知识与技术 2021年33期

王波

摘要:选择一个特定的周期锯齿波信号,求出其离散频谱函数及其幅度频谱和相位频谱,编制程序绘制其双边频谱图,探讨利用Matlab辅助教学手段,使周期信号复傅里叶级数及相关理论教学过程直观、可视化的一般方法。

关键词:周期信号;傅里叶级数;离散频谱函数;幅度频谱;相位频谱;Matlab

中图分类号:G642        文献标识码:A

文章编号:1009-3044(2021)33-0118-02

开放科学(资源服务)标识码(OSID):

1 引言

非正弦周期信号分解为傅里叶级数的理论是具有惊人洞察力的法国科学家傅里叶(J.Fourier)在1807年提出,并于1822年公之于世的[1]。其后,泊松(Poisson)、高斯(Gauss)等人将这一成果应用到电学中,经过近两个世纪时间的发展,如今傅里叶分析法已广泛成熟地应用于众多的科学技术领域[2]。

在诸如信号与系统、数字信号处理等众多的高等学校理工科专业基础课的课程体系中,傅里叶级数理论是系统分析由时域转向频域的重要关节点,起着承前启后的重要作用。在依托传统教学手段的基础上,借助Matlab软件使傅里叶级数及相关理论脱离抽象,可在一定程度上降低教学难度,取得更好的教学效果。以下,将以一个特定的周期锯齿波信号的双边频谱图的Matlab实现过程为例对此进行说明。

2周期信号的复傅里叶级数及相关理论

2.1复傅里叶级数

狄里赫利(P.Dirichlet)严格证明了傅里叶级数理论,当周期信号满足狄里赫利条件时,可将其展开成傅里叶级数,傅里叶级数分为三角形式傅里叶级数和复指数形式傅里叶级数两种[3]。三角形式的傅里叶级数表明周期信号由直流成分及众多的正弦、余弦函数形式的谐波分量叠加组成,而复指数级数形式的傅里叶级数简称为复傅里叶级数,其理论的核心内容体现在以下一對数学变换式中[4]。

[ft=n=-∞∞Fnejnω1t                           (1)Fn=1T-T2T2f(t)e-jnω1tdt                 (2)]

式(1)给出周期为T的连续时间信号f(t)的复傅里叶级数表示,其物理意义非常明确,意味着f(t)可分解为直流及无穷多个指数形式的谐波分量[Fnejnω1t],其中的[ω1=2πT]称为基波角频率,而[nω1]则为f(t)中的n次谐波角频率。

2.2离散频谱函数及周期信号的双边频谱

式(1)中各个谐波分量的复傅里叶系数[Fn]是实现周期信号复傅里叶级数表示的关键,可依据式(2)所示的积分变换求出[Fn]。

一般情况下,[Fn]为以各次谐波角频率[nω1]为自变量的复函数,其极坐标形式为[Fn=Fnejφn],[Fn]的模[|Fn|]称为幅度频谱,[Fn]的辐角[φn]则称为相位频谱,它们分别反映了组成周期信号的各个谐波分量的幅度和相位随[nω1]的变化关系。因为整数n的取值范围为[-∞~+∞],所以幅度频谱和相位频谱均为双边频谱,在对应的频谱图上,谱线都是仅出现在基波角频率[ω1]整数倍即[nω1]处,故[Fn]亦称为信号f(t)的离散频谱函数。

3周期信号双边频谱图的实现

3.1实例时间信号

选择一个周期T=2秒,峰值为1且位于每个周期最左侧的周期锯齿波信号f(t),在以t=0为奇函数对称中心的周期内,其可以用函数[ft=-2Tt=-t]加以描述,以此实例信号探讨利用Matlab实现周期信号双边频谱图的方法。

3.2实例信号的频谱

实例信号f(t)的基波角频率为[ω1=2π2=π(rad/s)],利用式(2)求对应的离散频谱函数。

[Fn=1T-T2T2f(t)e-jnω1tdt=12-11(-t)e-jnπtdt]

可知[F0=0],即f(t)中不存在直流分量,而对于f(t)中的各交流谐波分量,则有

[Fn=-j1nπcosnπ=j(-1)n+11nπ(n=±1,±2,±3…)]

其中的幅度频谱为

[Fn=1nπ=1nπ       (n=+1,+2,+3,…)-1nπ   (n=-1,-2,-3,…)     (3)]

相位频谱为[φn=π2     (n=+1,+3,+5,…)-π2   (n=-1,-3,-5,…)-π2   (n=+2,+4,+6,…)π2     (n=-2,-4,-6,…)      (4)]

3.3双边频谱图的实现

根据上述讨论内容编制本文后续3.4部分给出的Matlab程序,通过其中代码的顺序执行,可完成以下4步操作。

(1)以交互方式输入一个数值,后续代码将依据此值设定频谱图中绘制的最高次谐波谱线的谐波次数;

(2)依次以[pi*t-1、0]为两个实参调用sawtooth函数,生成并存储实例周期锯齿波信号f(t)的相关数据;

(3)根据式(3)、式(4)分别计算并存储幅度频谱[|Fn|]和相位频谱[φn]的相关数据;

(4)在图形窗口中,利用从上到下排列的(a)、(b)和(c)三个子窗口依次绘制f(t)的波形及其对应的双边幅度频谱图和双边相位频谱图。

设定最高次谐波次数为15时,运行程序将得到如图1所示的图形窗口,周期信号的复傅里叶级数分解的思想得以形象、直观地图示,复杂理论的教学过程变得相对简单、方便。

可以借助图1说明周期信号幅度频谱的谐波性(谱线只能在基波角频率[ω1]的整数倍即谐波角频率[nω1]处出现)、离散性(频谱图由频率离散的谱线组成,每根谱线代表一个谐波分量,两根相邻谱线之间的角频率间隔为[ω1])和收敛性(各谱线的高度即各谐波分量的幅度随着谐波次数增高而逐渐减小并直至趋于无穷小)。另外,幅度频谱[|Fn|]是谐波角频率[nω1]的偶函数,相位频谱[φn]则是[nω1]的奇函数的特征在图1中也是显而易见的。

3.4 程序代码

display('请输入最高次谐波次数Nmax');

Nmax=input('Nmax= ');

t=-5:0.0001:5;

f=sawtooth(pi*(t-1),0);

AbsFn=zeros(2*Nmax+1,1);Phase=AbsFn;

fori=(Nmax+2):(2*Nmax+1)

AbsFn(i)=1/(i-(Nmax+1))/pi;

AbsFn(2*Nmax+2-i)=AbsFn(i);

end

fori=(Nmax+2):2:(2*Nmax+1)

Phase(i)=pi/2;

Phase(2*(Nmax+1)-i)=-pi/2;

end

fori=(Nmax+3):2:(2*Nmax+1)

Phase(i)=-pi/2;

Phase(2*(Nmax+1)-i)=pi/2;

end

subplot(311);plot(t,f,'linewidth',1.5);

axis([-4.8 4.8 -1.1 1.1]);

xlabel('\itt      \rm單位:s','Fontsize',9);

ylabel('(a)  周期锯齿信号 f(t)','Fontsize',9);

k=-Nmax:Nmax;

subplot(312);stem(k,AbsFn,'filled');

axis([-NmaxNmax 0 0.34]);

xlabel('n\omega_1      单位:rad/s','Fontsize',9);

ylabel('(b)  幅度频谱 |F_n|','Fontsize',9);

subplot(313);stem(k,Phase,'filled');

axis([-NmaxNmax -1.8 1.8]);

xlabel('n\omega_1      单位:rad/s','Fontsize',9);

ylabel('(c)  相位频谱 \phi_n','Fontsize',9);

4结束语

不限于实例锯齿波信号,只要按照上述说明的方法、步骤,将信号的函数表达式代入式(2)求出其对应的离散频谱函数[Fn],并根据[Fn]的具体形式计算出[|Fn|]和[φn]的相关数据,对Matlab程序中的相关代码加以有针对性地简单修改,此程序即可以应用于诸如周期性三角波、周期性方波等许多一般周期信号的双边频谱图的绘制。

本文所叙述的工作,仅仅是Matlab实际应用的一个简单的尝试探索。由于在数值计算处理、数据可视化分析和系统直观描述等方面具有强大的能力,Matlab一定会在高等学校众多课程的理论和实践教学过程中得到更广泛的应用。选择恰当的知识点,适时使用Matlab辅助教学手段,一定会取得较之传统教学手段更好的教学效果。

参考文献:

[1] 燕庆明.信号与系统教程[M].北京:高等教育出版社,2013:86.

[2] 马金龙.信号与系统[M].北京:科学出版社,2010:114.

[3] 王明泉.信号与系统[M].北京:科学出版社,2008:79.

[4] 沈元隆.信号与系统[M].北京:人民邮电出版社,2003:71.

【通联编辑:王力】