周期信号频域分析
期信号频域分析 (3-5) 连续时间周期信号的傅立叶综合 任何满足狄里赫利条件的周期信号,可以表示成式(3-1)或(3-5)的和式 形式,式(3-1)或(3-5)成为连续时间周期信号(CTFS)综合公式。 一般说来,傅立叶级数系数有无限个非零值,即任何具有有限个间断点的周 期信号都-定有一个无限项非零系数的傅立叶级数表示。但对于数值计算来说, 这是无法实现的。在实际应用中,可以用有限项傅立叶级数求和来逼近。即: (3-7) 当值取得较大时,上式就是原周期信号的一•个很好近似。式(3-7)常称做 的截断傅立叶级数表示。 MATLAB的符号积分函数int()可以用来求解连续时间周期信号的截断傅立 叶级数及傅立叶表示。 求积函数int()的具体使用格式如下: a. intf=int(f,v);给出符号表达式f对指定变量v的(不带积分常数) 不定积分; b. intf=int(f,v,a,b);给出符号表达式f对指定变量v的定积分; 1、利用MATLAB实现周期信号的傅立叶级数分解与综合 (1)利用MATLAB求解周期矩形脉冲傅立叶级数,并绘制出各次谐波叠加的 傅立叶综合波形图。 周期矩形脉冲为,式中。 采用三角形式傅立叶级数分解与综合形式,用式(3-2)〜(3-4)求出傅立 叶级数分解系数,运用MATLAB的符号运算功能,用式(3-7)实现信号的综合, 谐波的阶数。 (a) 实现流程 利用MATLAB实现上述分析过程的流程如下: •编写子函数x=time_fun_x(t),用符号表达式表示出周期信号在第一个周期 内的符号表达式,并赋值返回给符号变量x; •编写子函数y=time_fun_e(t),求出该周期信号在绘图区间内的信号样值, 并赋值给返庖变量y; •编写求解信号傅立叶系数及绘制合成波形图的通用CTFShchsym.m,该函 数流程如下: 1. 调用函数time_fun_x⑴,获取周期信号的符号表达式; 2. 求出信号的傅立叶系数; 3. 求出各次谐波; 4. 绘制各次谐波叠加波形图; 5. 调用函数time_fun_e(t),绘制原信号波形图。 (b) MATLAB算法提示及说明 •采用符号积分int求一个周期内时间函数的三角级数展开系数:,,,即 计算式(3-2)〜(3-4)的值; •用循环语句for.end求出三角级数展开系数,的数值,分别为A_sym, B_sym; •用disp()语句输出三角级数展开系数A_sym, B_sym; •用傅立叶三角级数展开式(3-7)合成连续时间信号; •化简表达式,据函数奇偶性可知,若为奇函数,贝土若为偶函数,贝耽 (c) 源程序 编写函数文件CTFShchsym.m,这是一•个计算连续时间周期信号的三角级数前 6次展开系数,再用这6次谐波合成原连续时间周期信号的程序,如下所示。 function [A_sym,B_sym]=CTFShchsym %采用符号计算求一个周期内连续时间函数f的三角级数展开系数,再用这些 %展开系数合成连续时间函数f.傅立叶级数 %函数的输入输出都是数值量 % Nf=6谐波的阶数 %Nn输出数据的准确位数 % A_sym第1元素是直流项,其后元素依次是1,2,3…次谐波cos项展开系数 % B_sym第2,3,4,…元素依次是1,2,3…次谐波sin项展开系数 % tao=l tao/T=0.2 syms t n k x T=5;tao=0.2*T;a=0.5; if nargin<4;Nf=6;end if nargin<5;Nn=32;end x=time_fun_x(t); AO=int(x,tra,T-a)/T; %求出三角函数展开系数AO As=int(2*x*cos(2*pi*n*t/T)/T,t,-a,T・a); %求出三角函数展开系数As Bs=int(2*x*sin(2*pi*n*t/T)/T,t,・a,T・a); %求出三角函数展开系数Bs A_sym( 1 )=double(vpa(AO,Nn));值数组 %获取冷数组A0所对应的ASC2码数 for k=l:Nf A_sym(k+ l)=double(vpa(subs(As,n,k),Nn));ASC2码数值数组 %获取冷数组A所对应的 B_sym(k+1 )=double(vpa(subs(Bs,n,k),Nn));码系值数组 %获取申数组B所对应的ASC2 end if nargout==0 c=A_sym;disp(c) %输出c为三角级数展开系数:第1元素是直流项,其后元素 依次是1,2,3…次谐波 cos项展开系数 d=B_sym;disp(d) %输出d为三角级数展开系数: 次谐波sin项展开系数 第2,3,4,.元素依次是1,2,3… t=-8*a:0.01:T-a; f 1 =c( 1 )+c(2).*cos(2*pi* 1 *t/5)+O.*sin(2*pi* 1 *t/5);; %基波 f2=c(3).*cos(2*pi*2*t/5)+0.*sin(2*pi*2*t/5);; % 2次谐波 f3=c(4).*cos(2*pi*3*t/5)+0.*sin(2*pi*3*t/5); % 3次谐波 f4=c(5).*cos(2*pi*4*t/5)+0.*sin(2*pi*4*t/5);; % 4次谐波 f5=c(6).*cos(2*pi*6*t/5)+0.*sin(2*pi*6*t/5); % 6次谐波 f6=fl+f2;%基波+2次谐波f7=f6+f3;%基波+2次谐波+3次谐波 f8=f7+f4+f5; 基波+2次谐波+3次谐波+4次谐波+6次谐波 5 , ■ 4=1 subplot(2,2,l) plot(t,fl),hold on %调用连续时•间函数-周期矩形脉冲 y=time_fun_e(t) plot(t,y,T: ) titled周期矩形波的形成一基波+直流) axis([-4,4.5,-0.5,1.5]) subplot(2,2,2) plot(t,f6),hold on y=time_fun_e(t) plot(t,y,T:‘) titled周期矩形波的形成一基波+2次谐波) axis([-4,4.5,-0.5,1.5]) subplot(2,2,3) plot(t,f7),hold on y=time_fun_e(t) plot(t,y,T「) title(基波+2次谐波+3次谐波) axis([-4,4.5,-0.5,l.5]) subplot(2,2,4) plot(t,f8),hold on y=time_fun_e(t) plot(t,y,T: ) title(基波+2次谐波+3次谐波+4次谐波+6次谐波) axis([-4,4.5,-0.5,1.5]) end % function x=time_fun_x(t) %该函数是CTFShchsym.m的子函数。它由符