资源描述:
《基于matlab的信号分解与合成》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第24卷第1期徐州师范大学学报(自然科学版)Vol.24,No.12006年3月J.ofXuzhouNormalUniv.(NaturalScienceEdition)Mar.,2006基于MATLAB的信号分解与合成游春霞(中国矿业大学信电学院,江苏徐州221008;徐州师范大学物理系,江苏徐州221116)摘要:MATLAB软件在通信电子类课程中应用越来越广泛,本文利用MATLAB软件编程工具对信号与线性系统中信号的分解与合成进行了仿真,分析了合成信号的误差,重现了在信号合成过程中的Gibbs现象.关键词:MATLAB;信号的分解与合成;
2、Gibbs现象中图分类号:TN911.7文献标识码:A文章编号:100726573(2006)0120076203信号与线性系统是通信工程、电子工程、电气自动化等专业的基础课程,学好这一课程对后续专业课程的学习有着至关重要的作用.信号的分解与合成是本课程的重点内容之一,信号分解的方式一般有3种:1)用数学方式推导;2)用实验的方法实现;3)用软件仿真实现.比较而言,数学推导步骤繁琐,难以形象直观;硬件实验由于实验仪器本身的局限性对实验现象和实验结论的得出都会有一定的影响,且实际实验教学中周期信号的分解一般只能观测直流分量和前几次谐波分量,同时
3、对周期信号的频率亦有一定的限制,在测量中由于波形和数据较复杂,学生眼睛易疲劳,难以进行误差分析;使用MATLAB软件仿真可以克服这些缺点,形象直观的显示信号分解与合成的过程,定量分析其中的误差程度.由TheMathsWorks开发的MATLAB软件是集数值分析、矩阵运算、信号处理和图形显示于一体的可视化软件,本文应用MATLAB强大的数值分析和图形功能分析信号分解与合成.1信号分解与合成的原理[1]周期为T的信号f(t)可用三角函数表示:∞2πf(t)=a0+∑(ancosnωt+bnsinnωt),ω=,(1)n=1T函数中各系数见文献[1
4、],式(1)表示周期信号可以分解成直流分量a0和各次谐波分量ancosnωt+bnsinnωt的叠加.用直流分量和各次谐波分量的叠加代替原来的周期信号,原则上应该是无穷多项的叠加,实际应用中只取其中的前N项,产生的误差函数用εN(t)来表示.NεN(t)=f(t)-a0+∑(ancosnωt+bnsinnωt)=f(t)-fN(t).n=1另一个衡量误差大小的函数为方均误差T212EN=εN(t)=εN(t)dt.T∫02MATLAB的仿真研究现以周期为T=2的方波信号为例(见图1),说明MATLAB在信号分解与合成中的应用.由式(1),信号
5、f(t)可分解为图1周期T=2的方波信号N41Fig.1RectangularsignalfN(t)=sin(2i-1)πt.πi∑=12i-1withfundamentalperiodT=2收稿日期:2005204208作者简介:游春霞(1979-),女,江苏姜堰人,助教,硕士生,主要从事信号和信息处理方面的研究.第1期游春霞:基于MATLAB的信号分解与合成77211方波信号的频谱及合成信号的误差分析编写MATLAB程序,完成如下功能:绘出周期信号的频谱图,观察对比合成信号的波形与方波信号的波形,进行误差分析,分析其近似程度.程序如下:C
6、lear;a(i)=1;N=input(′N=′);%输入取分解信号的前几项end;n=1:N;fori=1:1999fori=1:Nb(i)=-1;A(i)=4/(pi3(23i-1));end;end;f=[0,a,0,b,0];figure(1);figure(2);stem(n,A);%分解信号的频谱图subplot(2,1,1),plot(t,f);xlabel(′w′);subplot(2,2,2),plot(t,ft);%绘出合成后信号的波ylabel(′An′);形title(′周期信号的频谱图′);gridon;t=0:01
7、0005:2;%信号合成ent=f-ft;%误差分析ft=zeros(1,length(t));en=(f-ft).3(f-ft);a=length(t);En=0;fori=1:Nfori=1:4001ft=ft+43sin((23i-1)3pi3t)/((23i-1)En=En+en(i);3pi);end;end;En=0100053En/2;%方均误差fori=1:1999图2是周期信号前7项的频谱图.图3为原始的方波图形及前3项、前7项的信号合成波形.对比两个合成波形可以发现,N=7比N=3在幅值1和-1的附近振荡更加频繁,更接近原
8、始的方波.理论上分解后的信号要与原始信号完全一样,N应该取无穷多项,实际研究中我们只取其中的有限项,其中的误差用MATLAB程序定量计算,取前N项时合成信号的误差见