周期信号频域分析_第1页
周期信号频域分析_第2页
周期信号频域分析_第3页
周期信号频域分析_第4页
周期信号频域分析_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、周期信号频域分析                          (3-5)连续时间周期信号的傅立叶综合    任何满足狄里赫利条件的周期信号,可以表示成式(3-1)或(3-5)的和式形式,式(3-1)或(3-5)成为连续时间周期信号(CTFS)综合公式。    一般

2、说来,傅立叶级数系数有无限个非零值,即任何具有有限个间断点的周期信号都一定有一个无限项非零系数的傅立叶级数表示。但对于数值计算来说,这是无法实现的。在实际应用中,可以用有限项傅立叶级数求和来逼近。即:            (3-7)    当值取得较大时,上式就是原周期信号的一个很好近似。式(3-7)常称做的截断傅立叶级数表示。    MATLAB的符号积分函数int()可以用来求解连续时间周期信号的截断

3、傅立叶级数及傅立叶表示。    求积函数int()的具体使用格式如下:a. intf=int(f,v); 给出符号表达式f对指定变量v的(不带积分常数)不定积分; b. intf=int(f,v,a,b); 给出符号表达式f对指定变量v的定积分; 1、利用MATLAB实现周期信号的傅立叶级数分解与综合(1)利用MATLAB求解周期矩形脉冲傅立叶级数,并绘制出各次谐波叠加的傅立叶综合波形图。    周期矩形脉冲为,式中。    采用三角形式傅立叶级数分解与综合形式,用式(3-2

4、)(3-4)求出傅立叶级数分解系数,运用MATLAB的符号运算功能,用式(3-7)实现信号的综合,谐波的阶数。(a)实现流程    利用MATLAB实现上述分析过程的流程如下:· 编写子函数x=time_fun_x(t),用符号表达式表示出周期信号在第一个周期内的符号表达式,并赋值返回给符号变量x; · 编写子函数y=time_fun_e(t),求出该周期信号在绘图区间内的信号样值,并赋值给返回变量y; · 编写求解信号傅立叶系数及绘制合成波形图的通用CTFShchsym.m,该函数流程如下: 1. 调用函数time_fun

5、_x(t),获取周期信号的符号表达式; 2. 求出信号的傅立叶系数; 3. 求出各次谐波; 4. 绘制各次谐波叠加波形图; 5. 调用函数time_fun_e(t),绘制原信号波形图。 (b)MATLAB算法提示及说明· 采用符号积分int求一个周期内时间函数的三角级数展开系数:,即计算式(3-2)(3-4)的值; · 用循环语句forend求出三角级数展开系数,的数值,分别为A_sym,B_sym; · 用disp()语句输出三角级数展开系数A_sym,B_sym; · 用傅立叶三角级数展开式(3-7)合成连续时间信号; · 化简表达式,据函

6、数奇偶性可知,若为奇函数,则;若为偶函数,则。 (c)源程序    编写函数文件CTFShchsym.m,这是一个计算连续时间周期信号的三角级数前6次展开系数,再用这6次谐波合成原连续时间周期信号的程序,如下所示。function A_sym,B_sym=CTFShchsym% 采用符号计算求一个周期内连续时间函数f的三角级数展开系数,再用这些%  展开系数合成连续时间函数f.傅立叶级数% 函数的输入输出都是数值量%  Nf=6 谐波的阶数% Nn  输出数据的准确位数% A_sym&

7、#160;第1元素是直流项,其后元素依次是1,2,3.次谐波cos项展开系数% B_sym 第2,3,4,.元素依次是1,2,3.次谐波sin项展开系数%   tao=1   tao/T=0.2syms t  n   k  x T=5;tao=0.2*T;a=0.5;if nargin<4;Nf=6;endif nargin<5;Nn=32;endx=time_fun_x(t);A0=int(x,t,-a,T-a)/T;     &#

8、160;                                  %求出三角函数展开系数A0As=int(2*x*cos(2*pi*n*t/T)/T,t,-a,T-a);     %求出三角函数展开系数AsBs=int(

9、2*x*sin(2*pi*n*t/T)/T,t,-a,T-a);       %求出三角函数展开系数BsA_sym(1)=double(vpa(A0,Nn);                    %获取串数组A0所对应的ASC2码数值数组for k=1:Nf   A_sym(k+1)=double(vpa(subs(As,n,

10、k),Nn);        %获取串数组A所对应的ASC2码数值数组   B_sym(k+1)=double(vpa(subs(Bs,n,k),Nn);        %获取串数组B所对应的ASC2码数值数组end       if nargout=0   c=A_sym;disp(c)   %输出c为三角级数展开系数:第1元素是直流项,其后元素

11、依次是1,2,3.次谐波cos项展开系数  d=B_sym;disp(d)   %输出d为三角级数展开系数:  第2,3,4,.元素依次是1,2,3.次谐波sin项展开系数      t=-8*a:0.01:T-a;  f1=c(1)+c(2).*cos(2*pi*1*t/5)+0.*sin(2*pi*1*t/5); ;      % 基波  f2=c(3).*cos(2*pi*2*t/5)+0.*sin(2*pi*2*t/5); ; 

12、                % 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

13、); ;               % 4次谐波  f5=c(6).*cos(2*pi*6*t/5)+0.*sin(2*pi*6*t/5);                % 6次谐波  f6=f1+f2;       

14、;    % 基波+2次谐波  f7=f6+f3;          % 基波+2次谐波+3次谐波  f8=f7+f4+f5;     % 基波+2次谐波+3次谐波+4次谐波+6次谐波   subplot(2,2,1)  plot(t,f1),hold on  y=time_fun_e(t)        &

15、#160;   %调用连续时间函数-周期矩形脉冲  plot(t,y,'r:')  title('周期矩形波的形成基波+直流')  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,'r:')  title('周期矩形波的形成基波+2次谐波')  axis(-4,4.5,-0.5,1.5)  s

16、ubplot(2,2,3)  plot(t,f7),hold on  y=time_fun_e(t)  plot(t,y,'r:')  title('基波+2次谐波+3次谐波')  axis(-4,4.5,-0.5,1.5)  subplot(2,2,4)  plot(t,f8),hold on  y=time_fun_e(t)  plot(t,y,'r:')  title('基波+2次谐波+3次谐波+4次谐波+6次谐波')

17、0; axis(-4,4.5,-0.5,1.5)end %-function x=time_fun_x(t)% 该函数是CTFShchsym.m的子函数。它由符号变量和表达式写成。h=1;  x1=sym('Heaviside(t+0.5)')*h;x=x1-sym('Heaviside(t-0.5)')*h; %-function y=time_fun_e(t)% 该函数是CTFShchsym.m的子函它由符号函数和表达式写成a=0.5;T=5;h=1;tao=0.2*T;t=-8*a:0.01:T-a;e1=1/2+1/2.*s

18、ign(t+tao/2);e2=1/2+1/2.*sign(t-tao/2);y=h.*(e1-e2);      %连续时间函数-周期矩形脉冲(d)程序运行结果    在MATLAB命令窗口键入CTFShchsym,并按回车键,即可绘制出周期矩形波形各次谐波合成波形      执行如下命令就可以得到三角级数展开系数:    A_sym,B_sym=CTFShchsym   &

19、#160;结果为    A_sym =        0.2000    0.3742    0.3027    0.2018    0.0935    0.0000   -0.0624    B_sym =      

20、   0     0     0     0     0     0     0(2)实验内容       要求:       (a)首先,推导出求解,的公式,计算出前10次系数;   (b

21、)利用MATLAB求解,的值,其中,求解前10次系数,并给出利用这些系数合成的信号波形。三、周期信号频谱分析1、周期信号频谱    对周期为 的信号进行傅立叶级数展开可得到 .如果求出和,根据以下两式可以画出周期信号的幅度谱和相位谱。                          &#

22、160;    2、MATLAB实现    由上述分析可知,只要求出了周期信号的傅立叶级数幅度和相位,就可以根据和随频率的变化关系画出幅度谱和相位谱。    现仍以周期矩形脉冲为,()为例,来说明如何用MATLAB绘制周期信号的频谱图,并对周期信号的频谱特性进行分析。    由于绘制频谱图的前提是必须先求出周期信号的傅立叶级数系数,因此只需对上述给出的求周期信号傅立叶级数的函数CTFShchsym.m进行适当修改,即可编写出绘制周期信号

23、频谱的通用函数。    需注意的是,由于周期信号的频谱是离散的,故在绘制频谱时,采用的是stem命令而不是plot命令,下面给出实现上述通用程序CTFStpshsym.m的过程。(1)实现流程     此处采用三角形式傅立叶级数分解,求出分解系数和,再利用式(3-8)求出傅立叶复指数系数,画出的幅度谱。谐波的阶数可任意指定,此处指定。(a)实现流程如下:· 编写子函数y=time_fun_s(t),用符号表达式表示出周期信号在第一个周期内的符号表达式,并赋值返回给符号变量y; · 编写

24、子函数x=time_fun_e(t),求出该周期信号在绘图区间内的信号样值,并赋值给返回变量x; · 编写求解信号傅立叶复指数系数的通用函数,该函数流程如下: 1. 调用函数time_fun_s(t),获取周期信号的符号表达式; 2. 求出信号的三角形式的傅立叶系数和; 3. 求出信号的傅立复指数系数; 4. 绘制的幅度频谱图; 5. 调用函数time_fun_e(t)绘制信号波形。 (b)算法提示· 采用符号积分int求0,T内时间信号的三角级数展开系数:,; · 用循环语句forend求出三角级数展开系数和的数值,并赋值给变量A_sym(k+1), B_sym

25、(k+1);    · 从三角级数展开系数和得到复指数展开系数:可以根据式(3-8)求出,需要注意的是、和的自变量取值情况,、的变量的取值范围为,而的变量的取值范围为,为了从和得到,需要用到MATLAB的反折函数fliplr来实现频谱的反折;例如已知一个序列a=5 4 3 2 1,采样位置为:0,1,2,3,4。要组成员序列反折后再叠加原序列的一个新序列(采样位置:-4,-3,-2,-1,0,1,2,3,4)。程序如下:n=0:4;           a

26、=5 4 3 2 1;           subplot(2,1,1);stem(n,a);          b=fliplr(a);          k=-4:4;          c=b,

27、a(2:end);          subplot(2,1,2);stem(k,c);(c)源程序代码    编写函数文件CTFStpshsym.m,如下所示:    CTFStpshsym.m    function A_sym,B_sym=CTFSshbpsym(T,Nf)    % 采用符号计算求0,T内时间函数的三角级数展开系数

28、。    %    函数的输入输出都是数值量    % Nn  输出数据的准确位数    % A_sym 第1元素是直流项,其后元素依次是1,2,3.次谐波cos项展开系数    % B_sym 第2,3,4,.元素依次是1,2,3.次谐波sin项展开系数    %  T

29、0;      T=m*tao,   信号周期    %  Nf  谐波的阶数    % Nn  输出数据的准确位数    %  m (m=T/tao)周期与脉冲宽度之比,如m=4,8,16,100等    %  tao    脉宽:tao=T/m 

30、        syms t  n  y     if nargin<3;Nf=input('please Input 所需展开的最高谐波次数:Nf=');end     T=input('please Input 信号的周期T=');    if nargin<5;Nn=32;end    y

31、=time_fun_s(t);    A0=2*int(y,t,0,T)/T;    As=int(2*y*cos(2*pi*n*t/T)/T,t,0,T);    Bs=int(2*y*sin(2*pi*n*t/T)/T,t,0,T);    A_sym(1)=double(vpa(A0,Nn);    for k=1:Nf      

32、 A_sym(k+1)=double(vpa(subs(As,n,k),Nn);       B_sym(k+1)=double(vpa(subs(Bs,n,k),Nn);     end    if nargout=0           S1=fliplr(A_sym);        

33、;                  %对A_sym阵左右对称交换            S1(1,k+1)=A_sym(1);   %A_sym的1*k阵扩展为1*(k+1)阵          S2=fliplr(1

34、/2*S1);        %对扩展后的S1阵左右对称交换回原位置        S3=fliplr(1/2*B_sym);      %对B_sym阵左右对称交换          S3(1,k+1)=0;        %B_sym的1*k阵扩展为1*(

35、k+1)阵        S4=fliplr(S3);        %对扩展后的S3阵左右对称交换回原位置        S5=S2-i*S4;    % 用三角函数展开系数A、B值合成付里叶指数系数        S6=fliplr(S5);   

36、0;    N=Nf*2*pi/T;        k2=-N:2*pi/T:N;        S7=S6,S5(2:end);        subplot(3,3,3)        x=time_fun_e(t)      % 调用

37、连续时间函数-周期矩形脉冲     subplot(2,1,1)     stem(k2,abs(S7);  %画出周期矩形脉冲的频谱(T=M*tao)     title('连续时间函数周期矩形脉冲的双边幅度谱')      axis(-80,80,0,0.12)      line(-80,80,0,0)    

38、60; line(0,0,0,0.12)    end      %-    function y=time_fun_s(t)    % 该函数是CTFSshbpsym.m的子函数。它由符号变量和表达式写成。    syms a a1    T=input('please Input 信号的周期T=');  &#

39、160; M=input('周期与脉冲宽度之比M=');    A=1;tao=T/M;a=tao/2;    y1=sym('Heaviside(t+a1)')*A;    y=y1-sym('Heaviside(t-a1)')*A;    y=subs(y,a1,a);    y=simple(y);   

40、  %-    function x=time_fun_e(t)    % 该函数是CTFSshbpsym.m的子函数。它由符号变量和表达式写成。    % t  是时间数组    % T  是周期   duty=tao/T=0.2    T=5;t=-2*T:0.01:2*T;tao=T/5; 

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论