
信号与系统_实验6.doc
6页实验六 利用MATLAB实现周期信号的分解与合成一、 实验目的1. 复习巩固信号与系统课程中关于周期信号展开成傅里叶级数等有关理论知识;2. 验证、设计并掌握利用MATLAB实现周期信号的分解与合成的方法二、 实验内容1.问题一周期方波信号如图所示,求出该信号的三角函数形式的傅里叶级数,并用MATLAB编程实现其各次谐 波叠加情况的观察与分析三角函数形式的傅里叶级数展开:2 t=—& f(t)cosnCD\tdt = 0T 2该信号的周期T=2 n ,基频为 = 11 T因为该方波信号为奇函数,所以=亍g f^)dt = 02 t 4 0 兀=2,4,6,•…而 = 7 /(Osin nco.tdt = y f sin nco.tdt =< _4_ ^ = 1,3,5,...2 [n/r •汁•…4 1 1所以 f(r) =—{sin r + - sin 3r + …+ sin[(2k 一 l)r] + ...} k = 1,2,3,...7t 3 2k -1程序代码:%观察周期方波信号的分解与合成%m:傅里叶级数展开的项数 display(Please input the value of m (傅里叶级数展开的项数)*);%在命令窗口中显示提示 m=input(,m=,); %键盘输入傅里叶级数展开的项数t=-2*pi:0.01:2*pi %时域波形的时间范围・2兀〜2 n ,采样间隔0.01n=round(length(t)/4); %根据周期方波信号的周期,计算1/2周期的数据点数f=[ones(n,l);-l *ones(n,l );ones(n,l);-1 *ones(n+1,1)];%构造周期方波信号y=zeros(m+l ,max(size(t))); y(m+l,:)=f;%绘制方波信号figure(l);plot(t/pi,y(m+l,:));执行结果:grid on; axis([-2 2 ・1.5 1.5]); titled周期方波工 xlabelC 单位: pi\Fontsize\8); x=zeros(size(t));kk=r;for k=l :2:2*m-lpause; x=x+sin(k*t)/k;y((k+l)/2,:)=4/pi*x; plot(t/pi,y(m+l,:));hold on;plot(t/pi,y((k+l)/2,:));hold off;grid;axis([-2 2 ・1.5 1.5]); title(strca* 第;kk,次谐波叠加)); xlabelC 单位: pi,Fontsize,8);kk=strcat(kk,\ ,num2str(k+2));endpause;plot(t/pi,y(l:m+l,:))grid;%循环显示谐波叠加图形%计算各次谐波叠加和%绘制谐波叠加信号周朗方液阳位:P■位:PIaxis([-2 2-1.5 1.5]); tideC各次谐波叠加波形匕 xlabel(‘ 单位: piVFontsize\8); %end观察实验结果,理解:“当所包含的谐波分最越多时,合成波形越接近于原来的周期信号”。
结合实验 过程,理解上述程序中的命令和相应显示结果的对应关系2 •问题二求下图所示矩形脉冲信号f(t)的傅里叶级数表示式,并用MATLAB方法求出N=7和N=21时的合成图傅里叶级数展开:信号f(t)的离散频谱函数(复傅里叶系数)Fn = 0.556z(—) (参考教材97页式4—8)2得傅里叶级数表达式/(/)= 代"则= 0.5Sa(—)ejn7n二0.5 + Sa(也)cos/?加”=_8 n=—co 2 n=l 2即f(t)的前N项合成表达式为程序代码:f(t)N=71 -A=2:0.001:2;N=inp ut(N=);F0=0.5;fN=F()*ones( 1 ,length(t));for n=l :2:NfN=fN+cos(pi*n*t)*sinc(n/2); end plot(t,fN);title([N=* num2str(N)]) axis([-2 2 -0.2 1.2]);执行结果:3. 设计信号f(t)如图所示,设T=2s> A=l,试求其 复指数形式的傅里叶级数,设计一个MATLAB程序, 通过运行程序观察此信号的分解与介成三、作业1. 进一步理解周期信号分解为傅里叶级数的理论;2. 完成问题二中f⑴的前N项合成表达式的详细推导。
附加说明◊关于dsolve函数调用格式yp二dsolve(方程],方程2,・・・,,条件1,条件2, •・•,,变量J简要说明(1) 函数返回微分方程1 (或方程1、方程2、…构成的微分方程组)的解;(2) 各个微分方程中的一阶导数符号用D表示,D2、D3、…Dn分别表示二阶、三阶、・・・n阶导数;(3) 各个微分方程中的白变量默认为 十,否则,可用格式小的’变量’重新指明;(4) 各个,条件,项可用于指明初始条件若不指明或指明不全,则函数的返回值中可能出现Cl、C2、…等 待定常数O关于tf函数tf函数根据描述系统的微分方程的系数生成系统函数对象(TF对象)调用格式sys=tf(b,a)简要说明输入参量a —微分方程左边多项式系数= 构成的行向罐;输入参屋b -微分方程右边多项式系数勺(= 0,1,2,…加)构成的行向量;输出参量sys —系统函数对彖n m对一般形式的系统微分方程: 为勺产匕)=工/和⑴⑴ 或;=() /=0色))⑴+ ⑴+ ・・・ + d』a)+ a()y(r)= b』m(r) + n』g)(r) + ・・・ + b/(r) + b()/(r)a 和 b 应分别定义成:a = [an an^ ... ax d()]、b = [bm bm^ ... bx bQ] □命令为例如,对由微分方程y\t) + 3y(t) + 2y(t)= -厂(f) + 2f(t)描述的系统,由tf函数牛成其系统对象sys的a=[l 3 2];b=[-l 2];sys=tf(b,a) %调用tf函数生成系统函数对象sys上述命令运行结果为Transfer function:-s+2sA2+3s+2调用tf函数生成系统函数对象sys,并用向量f和t定义了系统激励信号后,即可调用lsim函数对连 续系统的响应进行仿真。
O关于lsim函数调用格式lsim函数的一种调用格式为: lsim(sys,f,t)简要说明这种调用格式对向最t定义的时间范围内的系统响应进行仿真,即绘制LTT连续系统的响应的时域波 形,同时还绘出系统的激励信号对应的时域波形在这种调用格式中,输入参量f和t是两个表示输入信号的行向量,其中t为表示输入信号时间范围 的向量,f则是输入信号在向量t定义的时间点上的采样值例如,命令 皆0:0. 01:5; f二cos(2*t);就定义了 0—5秒时间范围内的余弦输入信号cos(2*t)(采 样时间间隔为0.01秒)输入参量sys是由tf函数根据描述系统的微分方程的系数生成的系统函数对彖◊ 关于impulse函数Impulse函数主要川于求连续系统冲激响应并绘制其时域波形调用格式(1) impulse(b,a) (2) impulse(b,a,t) (3) impulse(b,a,tl:ts:t2) (4) y=impulse(b,a,tl:ts:t2)简要说明(1) 该调用格式以默认的方式绘制由向最a和b定义的LTI连续系统的冲激响应时域波形,并提供交互 式功能查看任意时刻冲激响应的信号样值。
具中输入参量a和b分别是描述系统的微分方程左边和右边系 数构成的行向量例如,对由微分方程y \t) + 2y⑴+ 4y(f) = -f⑴+ 6/⑴描述的系统,则定义该系统的向量a和b 应使用命令: a=|10 24]; b=|・161;2) 该调川格式绘制由向量a和b定义的连续系统在时间参数t所指定的0〜t时间范围内系统冲激响应 的时域波形3) 该调用格式绘制山向量a和b定义的连续系统在吋间范围tl〜t2内,且以时间间隔ts均匀采样的 系统冲激响应的吋域波形4) 该调用格式并不绘制系统冲激响应的波形,而是求出由向最a和b定义的连续系统在时间范围tl〜 t2内,且以时间间隔ts均匀采样的系统冲激响应的数值解◊关于step函数调用格式(1) step(b,a) (2) step (b,a,t) (3) step (b,a,tl:ts:t2) (4) y= step (b,a,tl:ts:t2)上述4种调用格式的使用方法和调用过程与impulse函数完全相同,只是该函数绘制的是系统阶跃响应 的时域波形而不是冲激响应波形。












