文档详情

第九章信号与系统实验已完成.doc

发布:2018-02-05约3.34千字共5页下载文档
文本预览下载声明
信号与线性系统分析实验报告 任课教师: 实验名称: 年级、专业: 学 号: 姓 名: 日期: 2012 年 5 月 9 日 一、实验目的 1. 通过Matlab实现周期信号的傅里叶级数分解. 2. 理解各种形式的傅里叶级数分解. 二、实验内容 1. 周期信号的傅里叶级数. 2. 利用Matlab实现周期信号的频谱分析. 3. 典型周期信号的频谱分析及Matlab实现. 三、主要算法与程序 SolveFourier.m的M文件如下所示: function [an,bn,cn,phase]=SolveFourier(ft,T,Nf) syms t n k x Nn = 32; an = zeros(Nf+1,1); bn = zeros(Nf+1,1); phase = zeros(Nf+1,1); A0 =2*int(ft,t,-T/2,T/2)/T; As=2*int(ft*cos(2*pi*n*t/T),t,-T/2,T/2)/T; Bs=2*int(ft*sin(2*pi*n*t/T),t,-T/2,T/2)/T; an(1) = double(vpa(A0,Nn)); for k=1:Nf an(k+1)=double(vpa(subs(As,n,k+eps),Nn)); bn(k+1)=double(vpa(subs(Bs,n,k+eps),Nn)); end cn = sqrt(an.*an+bn.*bn); for i = 1:Nf if (an(i) 0bn(i)=0) phase(i) = -atan(bn(i)/an(i)); else if (an(i) 0bn(i)=0); phase(i) = pi-atan(bn(i)/an(i)); else if (an(i) = 0bn(i)0); phase(i) = pi-atan(bn(i)/an(i)); else phase(i) = -atan(bn(i)/an(i)); end end end end end 这个SolveFourier.m的M文件,其中ft为待分解的函数,T为周期,Nf为要分解的次数.然后返回的an为傅里叶系数,bn为傅里叶系数,cn为模值,phase为相位值. 9.1 (a) display(Please input the value of m (傅里叶级数展开的项数)); m = input(m = ); T = 2*pi; Nf = 5; t=-5*T:0.01:5*T; x=cos(t); d=-5*T:T:5*T; y=pulstran(t,d,rectpuls,T/2); f=x.*y; y = zeros(m+1,max(size(t))); y(m+2,:) = f; grid; %在图形中加入栅格 axis([-4 4 -1.5 1.5]); title(周期方波); xlabel(单位pi,Fontsize, 8); x = zeros(size(t)); x = 1/pi; y(1,:)=x; x=0.5.*sin(2*pi/T*(t+0.5.*pi))+x; y(2,:)=x; for k=2:2:2*m x = x-2/(k.^2-1).*cos(2*k*pi/T*(t+0.5.*pi)); y((k+4)/2,:) = 1/pi.*x; %计算各次谐波叠加和 grid; axis([-4 4 -1.5 1.5]); end hold on plot(t,y(1:m+2,:)); legend(直流分量,一次谐波,二次谐波,三次谐波,四次谐波,五次谐波,周期半波余弦信号); grid; axis([-4 4 -1.5 1.5]); title(各次谐波叠加波形); xlabel(单位pi,Fontsize, 8); hold off % End Please input the value of m (傅里叶级数展开的项数) m = 5 9.3 display(Please input the value of T, tao and Nf); T = input(T = ); tao = input(tao = ); Nf = input(Nf = ); syms t; s1 = Heaviside(t); s2 = strcat(Heaviside(t-,num2str(tao),));
显示全部
相似文档