周期信号的频谱分析——傅里叶级数
- 格式:ppt
- 大小:1.06 MB
- 文档页数:21
第9章周期信号的傅里叶级数分析9.1已知周期半波余弦信号和周期全波余弦信号的波形分别如图所示,用MATLAB编程求出它们的傅里叶系数,绘出其直流,一次,二次,三次,四次及五次谐波叠加后的波形图,并将其与原周期信号的时域波形进行比较,观察周期信号的分解与合成过程。
实验代码如下:% 观察周期余弦半波信号的分解和合成% m:傅立叶级数展开的项数display('Please input the value of m (傅立叶级数展开的项数)');m=input('m = ');t=-2.5*pi:0.01:2.5*pi;t1=-0.5*pi:0.01:0.5*pi;n=round(length(t)/5);f=[cos(t1)';zeros(n-1,1);cos(t1)';eros(n-1,1);cos(t1)'];y=zeros(m+1,max(size(t)));y(m+1,:)=f';subplot((m+2),1,1)plot(t/pi,y(m+1,:));grid;axis([-2.5 2.5 -0.5 1.5]);title('期半波余弦信号'); xlabel('t/pi','Fontsize', 8);x=zeros(size(t)); kk='1';%计算系数syms tx nT=2*pi;fx=sym('cos(tx)');Nn=30;an=zeros(m+1,1);bn=zeros(m+1,1);A0=2*int(fx,tx,-T/4,T/4)/T;An=2*int(fx*cos(2*pi*(n+eps/2)*tx/T),tx,-T/4,T/4)/T;Bn=2*int(fx*sin(2*pi*(n+eps/2)*tx/T),tx,-T/4,T/4)/T;an(1)=double(vpa(A0,Nn)); an(2)=0.5;for k=2:man(k+1)=double(vpa(subs(An,n,k),Nn));bn(k+1)=double(vpa(subs(Bn,n,k),Nn));end%计算直流分量pause;x=an(1)*cos(0*t)/2;plot(t/pi,y(m+1,:));hold on;plot(t/pi,x);grid;hold off;axis([-2.5 2.5 -0.5 1.5]);title('直流分量');xlabel('t/pi','Fontsize', 8);%各次谐波叠加for k=1:mpause;x=x+an(k+1).*cos(k*t);y(k,:)=x;subplot((m+2),1,k+1);plot(t/pi,y(m+1,:));hold on;plot(t/pi,y(k,:));hold off;grid;axis([-2.5 2.5 -0.5 1.5]);title(strcat('第',kk,'次谐波叠加'));xlabel('t/pi','Fontsize', 8);kk=strcat(kk,'、',num2str(k+1));end pause;subplot((m+2),1,m+2)plot(t/pi,y(1:m+1,:));grid;axis([-2.5 2.5 -0.5 1.5]);title('各次谐波叠加波形');xlabel('t/pi','Fontsize', 8);% End% 观察周期余弦全波信号的分解和合成% m:傅立叶级数展开的项数display('Please input the value of m (傅立叶级数展开的项数);t = -2.5*pi:0.01:2.5*pi;t1=-0.5*pi:0.01:0.5*pi-0.01;n = round(length(t)/5);f = [cos(t1)';cos(t1)';cos(t1)';cos(t1)';cos(t1)';0];y = zeros(m+1,max(size(t)));y(m+1,:)=f';subplot(m+2,1,1)plot(t/pi,y(m+1,:));grid on;axis([-2.5 2.5 -0.2 1.2]);title('周期全波余弦信号');xlabel('t/pi','Fontsize', 8);x=zeros(size(t));kk = '1';%计算系数syms tx nT=pi;fx=sym('cos(tx)');Nn=32;an=zeros(m+1,1);bn=zeros(m+1,1);A0=2*int(fx,tx,-T/2,T/2)/T;An=2*int(fx*cos(2*pi*(n+eps/2)*tx/T),tx,-T/2,T/2)/T;Bn=2*int(fx*sin(2*pi*(n+eps/2)*tx/T),tx,-T/2,T/2)/T;an(1) = double(vpa(A0,Nn));for k=1:man(k+1)=double(vpa(subs(An,n,k),Nn));bn(k+1)=double(vpa(subs(Bn,n,k),Nn));End%求直流信号pause;x=an(1)*cos(0*t)/2;subplot(m+2,1,1)plot(t/pi,y(m+1,:));hold on;plot(t/pi,x);grid on;hold off;axis([-2.5 2.5 -0.2 1.2]);title('周期全波余弦信号');xlabel('t/pi','Fontsize', 8);%各次谐波叠加for k=1:mpause;x=x+an(k+1).*cos(2*k*t);y(k,:) = x;subplot(m+2,1,k+1) plot(t/pi,y(m+1,:));hold on;plot(t/pi,y(k,:));hold off;grid on;axis([-2.5 2.5 -0.2 1.2]);title(strcat('第',kk,'次谐波叠加')); xlabel('t/pi','Fontsize', 8);kk = strcat(kk,'、',num2str(k+1)); end pause;subplot(m+2,1,m+2)plot(t/pi,y(1:m+1,:));grid on;axis([-2.5 2.5 -0.2 1.2]);title('各次次谐波叠加波形'); xlabel('t/pi','Fontsize', 8);% End实验截图如下:9.2试用MATLAB编程出题9.1中所示周期信号的幅度频谱,要求交互输入信号周期观察分析周期信号与频谱的关系。
实验四、周期信号的傅里叶级数和频谱分析1实验目的1)学会利用MATLAB 分析傅里叶级数展开,并理解傅里叶级数的物理含义; 2)学会利用MATLAB 分析周期信号的频谱特性。
2实验原理及实例分析2.1 周期信号的傅里叶级数(基本原理请参阅教材第四章的4.1节和4.2节。
)例1:周期方波信号)(t f 如图1所示,试求出该信号的傅里叶级数,利用MATLAB 编程实现其各次谐波的叠加,并验证Gibbs 现象。
f(t)t(sec)图1 周期方波信号)(t f 的波形图解:从理论分析可知,周期方波信号)(t f 的傅里叶级数展开式为)9sin 917sin 715sin 513sin 31(sin 4)(00000 +++++=t t t t t t f ωωωωωπ其中,ππω220==T。
则可分别求出1、3、5、9、19、39、79、159项傅里叶级数求和的结果,其MATLAB 程序如下,产生的图形如图2所示。
close all;clear all; clct = -2:0.0001:2; omega = 2 * pi;y = square(2 * pi * t,50); n_max = [1 3 5 9 19 39 79 159]; N = length(n_max); for k = 1:Nfk = zeros(1,length(t)); for n = 1:2:n_max(k) bn = 4 / (pi * n);fk = fk + bn * sin(n * omega * t); endfigure; plot(t,y,t,fk,'Linewidth',2); xlabel('t(sec)');ylabel('部分和的波形'); String = ['最大谐波数=',num2str(n_max(k))];axis([-2 2 -3 3]);grid; title(String);disp([String,'时,在信号跳变点附近的过冲幅度(%)']);f_max = (max(fk) - max(y)) / (max(y) - min(y)) * 100 endt(sec)部分和的波形最大谐波数=1t(sec)部分和的波形最大谐波数=3t(sec)部分和的波形最大谐波数=5t(sec)部分和的波形最大谐波数=9t(sec)部分和的波形最大谐波数=19t(sec)部分和的波形最大谐波数=39t(sec)部分和的波形最大谐波数=79t(sec)部分和的波形最大谐波数=159图2 例1程序产生的图形程序输出的用于验证Gibbs 现象的数值分别为:13.6620 10.0211 9.4178 9.1164 8.9907 8.9594 8.9484 8.94642.2周期信号的频谱分析(基本原理请参阅教材第四章的4.3节。