z =
1 3 6 10 10 9 7 4 波形如图所示:
109876543210012345673.实验内容
⑴ 运行以上五个例题程序,掌握求解系统响应的MATLAB分析方法;改变模型参数,考察系统响应的变化特点与规律。 ⑵ 设离散系统可由下列差分方程表示:
y[k]-y[k-1]+0.9y[k-2]?f[k]
计算k?[?20:100]时的系统冲激响应。
⑶ 设h[k]?(0.9)ku(k),输入f[k]?u[k]?u[k?10],求系统输出y[k]?f[k]?h[k]。 (取k?[?10:50]) ⑷ 已知滤波器的传递函数:
H(z)?0.22
1?0.8z?1输入信号为f(t)?2sin(0.05?t)??(t),?(t)为随机信号。试绘出滤波器的输出信号波形。(取t?[0:100])
20
实验四 周期信号的频域分析
1.实验目的
? 掌握周期信号傅立叶级数分解与合成的计算公式
? 掌握利用MATLAB实现周期信号傅立叶级数分解与综合方法 ? 理解并掌握周期信号频谱特点 2.实验原理
1、连续时间周期信号的分解
设有周期信号f(t),周期为T1,角频率?1?2?f1?2?,且满足狄里赫利条件,T1则该周期信号可以展开成傅立叶级数,即可表示为一系列不同频率的正弦或复指数信号之和。傅立叶级数有三角形式和指数形式两种: 1)三角形式傅立叶级数
三角形式傅立叶级数为
f(t)?a0?a1co?s1t?b1sin?1t?a2co?s2t?b2sin?2t?..?.anco?snt?bnsin?nt?...?a0??ancosn(?1t)??bnsinn(?1t)n?1n?1?? (4-1)
式中系数按如下公式求解
1a0?T1?T12T?12f(t)dt (4-2)
2T21an???T1f(t)cosn?1tdt
T12 (4-3)
2bn?T1?T12T?12f(t)sinn?1tdt
(4-4)
2)指数形式傅立叶级数
指数形式的傅立叶级数表达式为:
f(t)??Fnen?????jn?1t,n?0,?1,?2,?3,? (4-5)
式中Fn称为傅立叶复系数,可由下式求得
21
1Fn?T1?T12T?12f(t)e?jn?1tdt (4-6)
傅立叶级数的指数形式和三角形式是等价的,其系数可相互转换,具体参见《信号与系统》教科书。
2、连续时间周期信号的傅立叶综合
任何满足狄里赫利条件的周期信号,可以表示成式(4-1)或(4-5)的和式形式,式(4-1)或(4-5)成为连续时间周期信号(CTFS)综合公式。
一般说来,傅立叶级数系数有无限个非零值,即任何具有有限个间断点的周期信号都一定有一个无限项非零系数的傅立叶级数表示。但对于数值计算来说,这是无法实现的。在实际应用中,可以用有限项傅立叶级数求和来逼近。即:
f(t)?n??N?FenNjn?1t?a0??ancos(n?1t)??bnsin(n?1t) (4-7)
n?1n?1NN当N值取得较大时,上式就是原周期信号f(t)的一个很好近似。式(4-7)常称做f(t)的截断傅立叶级数表示。
MATLAB的符号积分函数int()可以用来求解连续时间周期信号的截断傅立叶级数及傅立叶表示。
求积函数int()的具体使用格式如下:
(a) intf=int(f,v); 给出符号表达式f对指定变量v的(不带积分常数)不
定积分;
(b) intf=int(f,v,a,b); 给出符号表达式f对指定变量v的定积分; 3、利用MATLAB实现周期信号的傅立叶级数分解与综合
(1)利用MATLAB求解周期矩形脉冲傅立叶级数,并绘制出各次谐波叠加的傅立叶综合波形图。
周期矩形脉冲为f(t)??G?(t?nT),式中??1,T?5。
n????采用三角形式傅立叶级数分解与综合形式,用式(4-2)~(4-4)求出傅立叶级数分解系数,运用MATLAB的符号运算功能,用式(4-7)实现信号的综合,谐波的阶数Nf?6。
(a)实现流程
利用MATLAB实现上述分析过程的流程如下:
? 编写子函数x=time_fun_x(t),用符号表达式表示出周期信号在第一个周
期内的符号表达式,并赋值返回给符号变量x; ? 编写子函数y=time_fun_e(t),求出该周期信号在绘图区间内的信号样值,
并赋值给返回变量y;
? 编写求解信号傅立叶系数及绘制合成波形图的通用CTFShchsym.m,该
函数流程如下:
① 调用函数time_fun_x(t),获取周期信号的符号表达式; ② 求出信号的傅立叶系数; ③ 求出各次谐波;
④ 绘制各次谐波叠加波形图;
22
⑤ 调用函数time_fun_e(t),绘制原信号波形图。
(b)MATLAB算法提示及说明
? 采用符号积分int求一个周期内时间函数的三角级数展开系数:a0?A0,
an?As,bn?Bs,即计算式(4-2)~(4-4)的值;
? 用循环语句for…end求出三角级数展开系数an,bn的数值,分别为A_sym,B_sym;
? 用disp()语句输出三角级数展开系数A_sym,B_sym; ? 用傅立叶三角级数展开式(4-7)合成连续时间信号;
? 化简表达式,据函数奇偶性可知,若f(t)为奇函数,则an?0;若f(t)为
偶函数,则bn?0。
(c)源程序
编写函数文件CTFShchsym.m,这是一个计算连续时间周期信号的三角级数前6次展开系数,再用这6次谐波合成原连续时间周期信号的程序,如下所示。 function [A_sym,B_sym]=CTFShchsym
% 采用符号计算求一个周期内连续时间函数f的三角级数展开系数,再用这些 % 展开系数合成连续时间函数f.傅立叶级数 % 函数的输入输出都是数值量 % Nf=6 谐波的阶数 % Nn 输出数据的准确位数
% A_sym 第1元素是直流项,其后元素依次是1,2,3...次谐波cos项展开系数 % B_sym 第2,3,4,...元素依次是1,2,3...次谐波sin项展开系数 % tao=1 tao/T=0.2 syms t n k x T=5;tao=0.2*T;a=0.5; if nargin<4;Nf=6;end if nargin<5;Nn=32;end x=time_fun_x(t);
A0=int(x,t,-a,T-a)/T; %求出三角函数展开系数A0
As=int(2*x*cos(2*pi*n*t/T)/T,t,-a,T-a); %求出三角函数展开系数As Bs=int(2*x*sin(2*pi*n*t/T)/T,t,-a,T-a); %求出三角函数展开系数Bs
A_sym(1)=double(vpa(A0,Nn)); %获取串数组A0所对应的ASC2码数值数组 for k=1:Nf
A_sym(k+1)=double(vpa(subs(As,n,k),Nn)); %获取串数组A所对应的ASC2码数值数组
B_sym(k+1)=double(vpa(subs(Bs,n,k),Nn)); %获取串数组B所对应的ASC2码数值数组 end
23
if nargout==0
c=A_sym;disp(c) %输出c为三角级数展开系数:第1元素是直流项,其后元素依次是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); ; % 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); ; % 4次谐波 f5=c(6).*cos(2*pi*6*t/5)+0.*sin(2*pi*6*t/5); % 6次谐波 f6=f1+f2; % 基波+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) %调用连续时间函数-周期矩形脉冲 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]) subplot(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次谐波') axis([-4,4.5,-0.5,1.5]) end
%------------------------------------------- function x=time_fun_x(t)
% 该函数是CTFShchsym.m的子函数。它由符号变量和表达式写成。 h=1;
24