1、 第2部分 信号与系统实验 实验1 连续时间信号的产生与运算 一、实验目的 (1) 熟悉 MATLAB 软件的使用。 (2) 掌握连续时间信号表示方法与基本运算的实现。 (3) 掌握用 MATLAB 常用函数来产生信号并实现信号的可视化方法。 二、实验原理 时域信号是指将信号表示成时间的函数 () f t ,信号的时间特性是指信号的波形出现的 先后、持续时间的长短、随时间变化的快慢等。 信号按照特性的不同,分为确定信号、周期信号、能量信号等。 常用的连续信号有直流信号、正弦信号、单位阶跃信号、单位门信号、单位冲激信号、 符号函数、单位斜坡函数、单边衰减指数信号、采样信号、随机信号等。 信号的运
2、算包括:信号的基本运算,包括加、减、乘、除等;信号的时域变换,包括 信号的平移、翻转、尺度变换等;两个信号的卷积运算等。 三、实验内容与方法 从严格意义上讲,MATLAB 并不能处理连续信号。在 MATLAB 中是用连续信号在等 间隔时间的样值来近似表示连续信号的。当取样时间间隔足够小时,这些离散的样点就能 够很好地近似出连续信号。 MATLAB 提供了许多函数用于常用函数的产生,如阶跃信号、脉冲信号、指数信号、 正弦信号和周期方波等,这些函数都是信号处理的基础。 1. 连续信号的生成与可视化 1) 直流信号f(t)=A MATLAB 程序如下: t=-10:0.01:10; %样本的时间间隔
3、为0.01 a1=6; plot(t,a1,b); %绘制二维蓝色曲线 title(直流信号); xlabel(时间(t); ylabel(幅度(f); 信号处理MATLAB 实验教程 34 34 生成的直流信号如图 2.1.1 所示。 图2.1.1 生成 的直流信号 2) 正弦交流信号 () s i n ( ) ft t =+ 实现 () s i n ( 2 ) ftt = ,MATLAB 程序如下: t=-0:0.001:1; y=sin(2*pi*t); plot(t,y,k); xlabel(时间(t); ylabel(幅值(f); title(正弦交流信号); 生成的正弦交流信号如图
4、 2.1.2 所示。 图2.1.2 生成 的正弦交流信号 3) 单位阶跃信号 () () ftt = MATLAB 程序如下: t=-2:0.01:6; u=(t=0); plot(t,u); axis(-2,6,0,1.2); xlabel(时间(t); ylabel(幅值(f); title(单位阶跃信号); 生成的单位阶跃信号如图 2.1.3 所示。 第2部分 信号与系统实验 35 35图2.1.3 生成 的单位阶跃信号 4) 单位冲激信号 () () ftt = MATLAB 程序如下: Function chongji t0=0;t1=-1;t2=3;dt=0.001; t=t1:d
5、t:t2; n=length(t); % 时间样本的长度 k1=floor(t0-t1)/dt); % 浮点数表示k1 x=zeros(1,n); % 各样本点信号的赋值为零 x(k1)=1/dt; % 在第k1点给出的样本值赋为1/dt,近似于无穷大的表示 stairs(t,x); % 绘图 axis(-1,3,0,22); xlabel(时间(t); ylabel(幅值(f); title(单位冲激信号); 生成的单位冲激信号如图 2.1.4 所示。 图2.1.4 生成 的单位冲激信号 信号处理MATLAB 实验教程 36 36 5) 符号信号 () s ign () ftt = MATL
6、AB 程序如下: clear; t1=-1;t2=5;dt=0.01; %可将精度调高,即d=0.01 或0.001 t=t1:dt:t2; n=sign(t); % 直接调用符号函数 plot(t,n); axis(t1,t2,-1.5,1.5 ); xlabel(时间(t);ylabel(幅值(f); title(符号信号); 生成的符号函数信号如图 2.1.5 所示。 图2.1.5 生成 的符号函数信号 6) 斜坡信号 () () fttt = MATLAB 程序如下: clear; t1=0;t2=5;dt=0.1; t=t1:dt:t2; n=2* t; plot(t,n); axi
7、s(t1,t2,-1.5,12 ); %横坐标及纵坐标的范围 xlabel(时间(t);ylabel(幅值(f); title(斜坡信号); 生成的斜坡信号如图 2.1.6 所示。 7) 单边衰减指数信号 () e () t ftt = MATLAB 程序如下: clear; t1=-1;t2=10;dt=0.1; t=t1:dt:t2; A1=1; %斜率 a1=0.5; %斜率 n=A1*exp(-a1*t); plot(t,n); 第2部分 信号与系统实验 37 37 axis(t1,t2,-1,2 ); xlabel(时间(t);ylabel(幅值(f); title(单边衰减指数信号
8、); 图2.1.6 生成 的斜坡信号 生成的单边衰减指数信号如图 2.1.7所示。 图2.1.7 生成 的单边衰减指数信号 8) 复指数信号 (j) () e t ft + = 用数值法生成单边复指数信号f(t)=e 34 j tt + 。 MATLAB 程序如下: t=0:0.01:3 a=-3;b=4; z=exp(a+i*b)*t); %调用复指数信号函数 subplot(2,2,1) %画4个子图 plot(t,imag(z), title(实部); xlabel(时间); ylabel(幅值); subplot(2,2,2) plot(t,real(z), title(虚部); xl
9、abel(时间); ylabel(幅值); subplot(2,2,3) 信号处理MATLAB 实验教程 38 38 plot(t,abs(z), title(模); xlabel(时间); ylabel(幅值); subplot(2,2,4) plot(t,angle(z), title(相角); xlabel(时间); ylabel(幅值); 生成的复指数信号如图 2.1.8 所示。 图2.1.8 生成 的复指数信号 9) sinc(x)函数 MATLAB 程序如下: clear; t=(0:0.001:2.5) ; x=linspace(-5,5); y=sinc(x) ; plot(x
10、,y); title(sinc(x)函数); xlabel(时间(t); ylabel(幅值(f); 生成的 sinc(x)函数信号如图 2.1.9 所示。 图2.1.9 生成 的 sinc(x) 函数 信号 第2部分 信号与系统实验 39 39 2. 连续时间信号的基本运算 1) 加(减)、乘运算 实现两个信号的加法和乘法运算:要求两个信号运算的时间序列长度相同。 MATLAB 程序如下: t=0:0.01:2; f1=exp(-3*t); f2=0.2*sin(4*pi*t); f3=f1+f2; f4=f1.*f2; %数组乘的运算符为“.*” subplot(2,2,1); plot(
11、t,f1); title(f1(t); subplot(2,2,2); plot(t,f2); title(f2(t); subplot(2,2,3); plot(t,f3); title(f1+f2); subplot(2,2,4); plot(t,f4); title(f1*f2); 程序运行的结果如图 2.1.10 所示。 图2.1.10 时 间信号的基本运算 2) 信号的反褶、移位、尺度变换 由f(t)到f(-at+b) (a0)步骤: () ( ) ( ) ( ) ft ftb fa tb fa tb + + + 移位 尺度 反褶【例 2-1-1】 已知f(t)=sin(t)/t。试
12、通过反褶、移位、尺度变换由f(t)的波形得到f(-2t+3) 的波形。 MATLAB 程序如下: syms t; f=sym(sin(t)/t); %定义符号函数f(t)=sin(t)/t f1=subs(f,t,t+3); %对f进行移位 f2=subs(f1,t,2*t); %对f1进行尺度变换 f3=subs(f2,t,-t); %对f2进行反褶 subplot(2,2,1); ezplot(f,-8,8); grid on; % ezplot 是符号函数绘图命令 subplot(2,2,2); ezplot(f1,-8,8); grid on; 信号处理MATLAB 实验教程 40 4
13、0 subplot(2,2,3); ezplot(f2,-8,8); grid on; subplot(2,2,4); ezplot(f3,-8,8); grid on; 执行的结果如图 2.1.11所示。 图2.1.11 连 续信号的反褶、移位、尺度变换 3) 连续信号的卷积运算 y=conv(x,h)用于实现 x、h 两个序列的卷积,假定都是从 n=0开始。y序列的长度为 x、 h 序列的长度之和再减 1。 【例 2-1-2】 求两个方波信号的卷积。 MATLAB 程序如下: y1=ones(1,20),zeros(1,20); y2=ones(1,10),zeros(1,20); y=c
14、onv(y1,y2); n1=1:length(y1); n2=1:length(y2); L=length(y) subplot(3,1,1);plot(n1,y1);axis(1,L,0,2); subplot(3,1,2);plot(n2,y2);axis(1,L,0,2); n=1:L; subplot(3,1,3);plot(n,y);axis(1,L,0,20); 执行的结果如图 2.1.12所示。 【例 2-1-3】 求两个指数信号的卷积。 MATLAB 程序如下: t=0:0.01:1; y1=exp(-6*t); y2=exp(-3*t); y=conv(y1,y2); 第2
15、部分 信号与系统实验 41 41 l1=length(y1) l2=length(y2) l=length(y) subplot(3,1,1);plot(t,y1); subplot(3,1,2);plot(t,y2); t1=0:0.01:2; subplot(3,1,3);plot(t1,y); 图2.1.12 两 个方波的卷积 执行结果如图 2.1.13 所示。 图2.1.13 两 个指数信号的卷积 四、程序设计实验 (1) 编制程序,生成如下连续信号:(3 ) c o s 3s i n 2 tt +t ,。 (2) 设计一个程序,选择一个信号 () f t ,完成信号 () f t 到
16、 (2 2) ft + 的转化。 (3) 若 123 ( )s i n ( )( )( )( )( )(4 ) ft tft tft t t = , , ,证明卷积满足: 1 () f t 23 () () ftft + 1213 () () () () ftftftft =+ 信号处理MATLAB 实验教程 42 42 五、实验预习要求 (1) 预习实验原理。 (2) 熟悉实验程序。 (3) 思考程序设计实验部分程序的编写。 六、实验报告要求 (1) 在 MATLAB 中输入程序,验证实验结果,并将实验结果存入指定存储区域。 (2) 对于程序设计实验,要求通过对验证性实验的练习,自行编制完整
17、的实验程序, 实现对信号的模拟,并得出实验结果。 (3) 在实验报告中写出完整的自编程序,并给出实验结果。 七、思考题 (1) 冲激信号与阶跃信号各有什么特性,在本实验的程序中是如何实现冲激信号的特 性的? (2) 书中实现 sinc(x)函数的程序是调用 MATLAB 中的 sinc(x)函数, 如果用正弦函数实 现,sinc(x)=sin(x)/x,程序如何编写? (3) conv 函数没有任何时间信息, 如何利用卷积函数编写一个可以得到时间信息的改进 函数? 实验2 离散时间信号的产生与运算 一、实验目的 (1) 了解离散时间信号的特点。 (2) 掌握离散时间信号表示与基本运算方法。 (
18、3) 掌握信号的分解和用单位脉冲信号表示的方法。 二、实验原理 信号是随时间变化的物理量。离散信号是只在某些不连续的时间上有信号值,而在其 他时间点上信号没有定义的一类信号。 离散信号一般可以利用模数转换由连续信号来得到。 计算机所能处理的只是离散信号。 常用的离散信号有正弦信号序列、单位阶跃序列、单位门序列、单位冲激信号、单位 斜坡序列、单位衰减指数序列、随机序列等。 离散信号的基本运算包括信号的加、减、乘、除。离散信号的时域变换包括信号的平 移、翻转、尺度变换等。 离散卷积积分是一种特殊的函数运算,是信号与系统分析的基本手段,用于求解系统 的零状态响应。离散卷积积分的基础是信号的分解,即信
19、号分解为单位脉冲信号的线性 组合。 第2部分 信号与系统实验 43 43 三、实验内容与方法 1. 离散信号的生成与可视化 参考给出的程序,产生信号并观察信号的波形,通过改变相关参数(例如:频率、周期、 幅值、相位、显示时间段、步长、加噪等),进一步熟悉这些在工程实际与理论研究中常用 的信号。 1) 基本离散时间信号 MATLAB 程序如下: k1=-3;k2=3; k=k1:k2; f=1, 3 , -3 , 2 , 3 , -4 ,1; Stem( k , f,fill); axis(-4,4,-5,5); title(离散时间信号) xlabel(时间(k); ylabel(幅值f(k)
20、 生成的离散时间信号如图 2.2.1 所示。 图2.2.1 生成 的离散时间信号 2) 单位脉冲序列 MATLAB 程序如下: k1=-3;k2=6;k=k1:k2; n=3; %单位脉冲出现的位置 f=(k-n)=0; stem(k,f,filled);title(单位脉冲序列) xlabel(时间(k);ylabel(幅值f(k); 生成的单位脉冲序列如图 2.2.2 所示。 信号处理MATLAB 实验教程 44 44 图2.2.2 生成 的单位脉冲序列 3) 单位阶跃序列 MATLAB 程序如下: k0=0; %单位阶跃开始出现的位置 k1=-3;k2=6;k=k1:k0-1; n=le
21、ngth(k); k3=-k0:k2; n3= length(k3); u=zeros(1,n); u3=ones(1,n3); stem(k,u,filled); hold on; stem(k3,u3,filled); hold off; axis(k1,k2,-0.2,1.5); title(单位阶跃序列); xlabel(时间(k); ylabel(幅值f(k); 生成的单位阶跃序列如图 2.2.3 所示。 4) 复指数序列 MATLAB 程序如下: clf; c=-(1/12)+(pi/6)*i; K=2; n=0:40; x=K*exp(c*n); subplot(2,1,1);
22、stem(n,real(x); ylabel(幅值f(k); title(实部); subplot(2,1,2); stem(n,imag (x); xlabel(时间(k);ylabel(幅值f(k);title(虚部); 第2部分 信号与系统实验 45 45图2.2.3 生成 的单位阶跃序列 生成的复指数序列如图 2.2.4 所示。 图2.2.4 生成 的复指数序列 5) 正弦序列 MATLAB 程序如下: clf; k1=-20;k2=20; k=k1:k2; f=sin(k*pi/6); stem(k,f,filled); title(正弦序列); xlabel(时间(k); ylab
23、el(幅值f(k); 生成的正弦序列如图 2.2.5 所示。 信号处理MATLAB 实验教程 46 46 图2.2.5 生成 的正弦序列 6) 随机序列 MATLAB 程序如下: clf; R=51; d=0.8*(rand(R,1) -0.5); m=0:R-1; stem(m,d,b); title(随机序列); xlabel(时间(k);ylabel(幅值f(k); 生成的随机序列如图 2.2.6 所示。 图2.2.6 生成 的随机序列 2. 离散时间信号的基本运算 1) 加(减)、乘运算 MATLAB 程序如下: 第2部分 信号与系统实验 47 47x1=1,5,-4,2,5,-1,5
24、;%序列X1 x2=1,2,3,4,5,6,7;%序列X2 n=1:length(x1); subplot(2,2,1);stem(n,x1); subplot(2,2,2);stem(n,x2); subplot(2,2,3);stem(n,x1+x2);%序列X1,X2 的和 subplot(2,2,4);stem(n,x1.*x2);%序列X1,X2 的积 结果如图 2.2.7 所示。 图2.2.7 序列 的加法和乘法 四、程序设计实验 (1) 编制程序,生成如下连续信号: sqrt( ) ( 3) ( + 5) akuk k -, 。 (2) 设计一个程序,选择一个信号 () f k
25、,完成信号 () f k 到 (2 2) fk + 的转化。 (3) 若 123 () () () () () () ( 4 ) fk kfku kfku ku k = + , , ,证明卷积满足: 1 () f k 23 () () fkfk + 1213 () () () () fkfkfkfk =+ 五、实验预习要求 (1) 预习实验原理。 (2) 熟悉实验程序。 (3) 思考程序设计实验部分程序的编写。 六、实验报告要求 (1) 在 MATLAB 中输入程序,验证实验结果,并将实验结果存入指定存储区域。 (2) 对于程序设计实验,要求通过对验证性实验的练习,自行编制完整的实验程序, 实
26、现对信号的模拟,并得出实验结果。 (3) 在实验报告中写出完整的自编程序,并给出实验结果。 信号处理MATLAB 实验教程 48 48 七、思考题 (1) 冲激序列信号与阶跃序列信号各有什么特性? (2) 冲激序列和阶跃序列关系? (3) 如何利用基本信号进行卷积,构建卷积的图示? 实验3 连续 LTI 系统的时域分析 一、实验目的 (1) 熟悉连续 LTI 系统在典型激励信号下的响应及其特征。 (2) 掌握连续 LTI 系统单位冲激响应的求解方法。 (3) 重点掌握用卷积法计算连续时间系统的零状态响应。 (4) 熟悉 MATLAB 相关函数的调用格式及作用。 (5) 会用 MATLAB 对系
27、统进行时域分析。 二、实验原理 连续时间线性非时变系统(LTI)可以用如下的线性常系数微分方程来描述: () ( 1 ) 110 () 10 () () () () () () () nn nn m m aytayt a ytay t bf t bft bft + + = + + +其中,nm ,系统的初始条件为 (1 ) (0 ) (0 ) (0 ) (0 ) n yyy y , , 。 系统的响应一般包括两个部分,即由当前输入所产生的响应(零状态响应)和由历史输 入(初始状态)所产生的响应(零输入响应)。对于低阶系统,一般可以通过解析的方法得到响 应。但对于高阶系统,手工计算就比较困难,这
28、时 MATLAB 强大的计算功能就能比较容 易地确定系统的各种响应,如冲激响应、阶跃响应、零输入响应、零状态响应、全响应等。 1. 直接求解法 在 MATLAB 中,要求以系数向量的形式输入系统的微分方程。因此,在使用前必须 对系统的微分方程进行变换,得到其传递函数。其分别用向量 a 和 b 表示分母多项式和分 子多项式的系数(按照 s 的降幂排列)。涉及到的 MATLAB 函数有:impulse (冲激响应)、 step(阶跃响应)、 roots(零输入响应)、lsim(零状态响应)等。 2. 卷积计算法 根据系统的单位冲激响应,利用卷积计算的方法,也可以计算任意输入状态下系统的 零状态响应
29、。设一个线性零状态系统,已知系统的单位冲激响应为 () ht ,当系统的激励信号 为 () f t 时,系统的零状态响应为: zs () ()( ) d ( )() d yt fht ft h = = 也可简单记为 zs () () () ytftht = 由于计算机采用的是数值计算,因此系统的零状态响应也可用离散序列卷积和来近 第2部分 信号与系统实验 49 49 似为: zs () () ( ) () () n yk fn hknT fk hk = = = 式中 zs () yk 、 () f k 和 () hk分别对应以 为时间间隔对连续时间信号 zs () yt 、 () f t 和
30、() ht 进行采样所得到的离散序列。 三、实验内容与方法 【 例 2-3-1】 求系统 () 6 () 8() 3 () 9() yt yt yt xt xt +=+ 的冲激响应和阶跃响应。 (1) 系统的冲激响应的 MATLAB 程序如下: b=3,9;a=1,6,8; sys=tf(b,a); t=0:0.1:10; y=impulse(sys,t); plot(t,y); xlabel(时间(t);ylabel (y(t) ; title (单位冲激响应); 系统的冲激响应曲线如图 2.3.1 所示。 图2.3.1 系统 的冲激响应曲线 (2) 系统的阶跃响应的 MATLAB 程序如下
31、: b=3,9;a=1,6,8; sys=tf(b,a); t=0:0.1:10; y=step(sys,t); plot(t,y); xlabel(时间);ylabel (y(t) ; title (单位阶跃响应); 系统的阶跃响应曲线如图 2.3.2 所示。 信号处理MATLAB 实验教程 50 50 图2.3.2 系统 的阶跃响应曲线 【 例 2-3-2】 求系统 () () c o s () , ( 0) ( 0) 0 yt yt ty y + += = 的全响应。 (1) 系统在正弦激励下的零状态响应。 MATLAB 程序如下: b=1;a=1,0,1; sys=tf(b,a); t
32、=0:0.1:10; x=cos(t) y=lsim(sys,x,t); plot(t,y); xlabel(时间);ylabel (y(t) ; title (零状态响应); 系统的零状态响应曲线如图 2.3.3 所示。 图2.3.3 系统 的零状态响应曲线 第2部分 信号与系统实验 51 51 (2) 系统的全响应。 MATLAB 程序如下: b=1;a=1 0 1; A B C D=tf2ss(b,a); sys=ss(A,B,C,D); t=0:0.1:10; x=cos(t);zi=-10; y=lsim(sys,x,t,zi); plot(t,y); xlabel(时间);ylab
33、el (y(t) ; title (系统的响应); 系统的全响应曲线如图 2.3.4 所示。 图2.3.4 系统 的全响应曲线 【 例 2-3-3】 已知某 LTI系统的激励为 () s i n () ftt t = , 单位冲激响应为 2 () e () t ht t t = , 试画出激励信号 () f t ,单位冲激响应 () ht ,系统零状态响应 () f y t 的图形。 MATLAB 程序如下: T=0.1 t=0:T:10; f=3.*t.*sin(t); h=t.*exp(-2*t); Lf=length(f); Lh=length(h) for k=1:Lf+Lh-1 y(
34、k)=0; for i=max(1,k-(Lh-1):min(k,Lf) y(k)=y(k)+f(i)*h(k-i+1); end yzsappr(k)=T*y(k); end subplot(3,1,1) ; %f(t)的波形 plot(t,f);title(f(t); 信号处理MATLAB 实验教程 52 52 subplot(3,1,2); %h(t)的波形 plot(t,h);title(h(t); subplot(3,1,3); %零状态响应近似结果的波形 plot(t,yzsappr(1:length(t);title(零状态响应近似结果);xlabel(时间); 系统的响应曲线如
35、图 2.3.5 所示。 图2.3.5 系统 的响应曲线 四、程序设计实验 (1) 计算下述系统在指数函数激励下的零状态响应。 432 65432 1.65 0.331 576 90.6 19080 () 0.996 463 97.8 12131 8.11 ssss Hs s sssss + = +(2) 计算下述系统在冲激、阶跃、斜坡和正弦激励下的零状态响应。 (4) (3) (2) (1) (3) (2) (1) ( ) 0.6363 ( ) 0.9396 ( ) 0.5123 ( ) 0.0037 ( ) 0.475 ( ) 0.248 ( ) 0.1189 0.0564 ( ) yt y
36、t yt yt y t ft ft f ft + = (3) 已知某线性时不变系统的动态方程式为: () 4 ( 4() 2 () 3 () , 0 yt yt yt ft ftt +=+ ) 系统的初始状态为 (0) 2 (0) 1 yy =, ,求系统的零输入响应 x () yt。 五、实验预习要求 (1) 预习实验原理。 (2) 熟悉实验程序。 (3) 思考程序设计实验部分程序的编写。 第2部分 信号与系统实验 53 53 六、实验报告要求 (1) 在 MATLAB 中输入程序,验证实验结果,并将实验结果存入指定存储区域中。 (2) 对于程序设计实验,要求通过对验证性实验的练习,自行编制
37、完整的实验程序, 实现对信号的模拟,并得出实验结果。 (3) 在实验报告中写出完整的自编程序,并给出实验结果。 七、思考题 (1) 连续时间系统的数学模型有哪些? (2) 线性时不变系统的零状态响应是输入信号与冲激响应的卷积,其根据是什么? (3) 为什么说系统的冲激响应 h(t)既可以认为是零状态响应,也可以认为是零输入 响应? (4) 使用计算机分析连续系统,需要解决连续系统离散化的问题,怎样解决? 实验4 离散 LTI 系统的时域分析 一、实验目的 (1) 熟悉离散时间序列卷积和、离散系统单位序列响应的 MATLAB 实现方法。 (2) 熟悉差分方程迭代解法的 MATLAB 实现方法。
38、(3) 通过该实验,掌握离散 LTI使用的时域基本分析方法及编程思想。 二、实验原理 1. 离散系统的时域分析 离散时间系统的时域分析与连续时间系统的时域分析方法相同,只是描述系统使用的 数学工具不同,可以采用与连续系统对比的方法学习。 线性时不变离散时间系统的数学模型为 n 阶常系统差分方程。已知激励信号和系统的 初始状态,可以采用迭代法或直接求解差分方程的经典法得到系统的输出响应,这两种方 法都不作为时域分析的重点。课程中重点研究仅由系统初始状态产生的零输入响应和仅由 激励信号产生的零状态响应。对于零输入响应,激励信号为零,且描述系统的差分方程为 齐次方程,求解齐次方程即可得到零输入响应。
39、 2. 零状态响应的求解 零状态响应的求解是以激励信号的时域分解和系统的时不变特性为前提展开的。单位 脉冲信号作用在系统上的零状态响应称为单位脉冲响应。如果已知单位脉冲响应序列作用 在系统的响应,利用卷积和即可求得任意信号作用在离散 LTI 系统上的零状态响应。可见 系统的单位脉冲响应的求解和卷积和的计算是求解零状态响应的关键。 信号处理MATLAB 实验教程 54 54 3. 离散卷积 离散卷积可以表示为: 1212 () () ()( ) fkfk fmfkm = ,其中-k 因此也称作卷积和。 三、实验内容与方法 (1) 序列的卷积和。 MATLAB 的 conv()函数可以帮助用户快速
40、求出两个序列的卷积和。conv()的调用格式 为 f=conv(f1,f2)。其 中 f1 为包含 f1(k)的非零样值点的行向量, f2 为包含 f2(k)的非零样值点 的行向量,向量 f则返回卷积和的所有卷积样值点的行向量。 【 例 2-4-1】 采用函数 conv 编程,实现离散时间序列的卷积和运算(或系统的零状态 响应),完成两序列的卷积和,其中 1 () f k =1,2,1,对应的 1 k =-1,0,1; 2 () f k =1,1,1,1,1, 对应的 2 k =-2,-1,0,1,2。 MATLAB 程序如下: clear f1=1,2,1; f2=1,1,1,1,1; 序列
41、和序列 k1=-1,0,1; k2=-2,-1,0,1,2; 序列的论域 y=conv(f1,f2); n1=k1(1)+k2(1); n2= k1(length(f1)+k2(length(f2); %求卷积的起点和终点 ny=n1:n2; %卷积的论域 stem(ny,y); xlabel(ny);ylabel(y); title(离散信号的卷积) 卷积的结果如图 2.4.1 所示。 图2.4.1 两个 序列的卷积和 第2部分 信号与系统实验 55 55 (2) 采用差分方程的迭代解法,求解离散时间系统的全响应。 【 例 2-4-2】已知离散 LTI系统的差分方程为: 6()5( 1 )
42、( 2 ) c o s ( /4 )() yk yk yk k k += ,初始条件为 (0) 0, (1) 1 yy = = ,试画出该系 统的全响应 () yk的波形。 MATLAB 程序如下: y0=0; y(1)=1; y(2)=5/6 * y(1)-1/6 * y0 + cos (2* pi / 4)/6; for k= 3 :20 ; y(k)=5/6 * y(k-1)-1/6 * y(k-2) + cos (k * pi / 4) / 6 ; end yy = y0 y(1:20); k =1:21; stem(k-1,yy); grid on ;xlabel (k);ylabe
43、l (y (k);title (系统全响应); 所得的波形如图 2.4.2 所示。 图2.4.2 用迭 代法求出的系统全响应 (3) 采用函数 impz 编程,求解离散时间系统的单位序列响应。 impz函数的功能是求解离散系统单位序列响应,并绘制其时域波形。其调用格式为: impz(b,a), 以默认方式绘出向量 a、 b定义的离散系统的单位序列响应的离散时域波形。 【 例 2-4-3】 某离散 LTI系统的差分方程为 () ( 1 )0.9( 2) () yk yk yk fk + = ,则对 应的向量为a=1,-1,0.9,b=1。试画出该系统的单位序列响应 () hk的波形。 MATLA
44、B 程序如下: a = 1,-1,0.9 ; b = 1 ; impz ( b,a ); 离散系统的单位序列响应如图 2.4.3所示。 信号处理MATLAB 实验教程 56 56 图2.4.3 离散 系统的单位序列响应 四、程序设计实验 要求写出下列各实验内容的完整程序。 (1) 已知离散 LTI系统,激励 () 3 () fkkk = ,单位序列响应 () 2 () k hk k = ,试画出该系 统的零状态响应 f () yk在有限区间的波形。(有限区间自行设定) (2) 已知离散序列 1 21 4 () 0 kk fk others = 2 21 5 () 0 k k fk others
45、 = 试画出两序列的卷积和波形。 (3) 描述 LTI 离散系统的差分方程如下,绘出该系统在 050 单位时间范围内单位序 列响应的波形,并求出其数值解。 2 ( ) 2 ( 1) ( 2) ( ) 3 ( 1) 2 ( 2) yk yk yk fk fk fk +=+ + 。 五、实验预习要求 (1) 预习实验原理。 (2) 熟悉实验程序。 (3) 思考程序设计实验部分程序的编写。 六、实验报告要求 (1) 在 MATLAB 中输入程序,验证实验结果,并将实验结果存入指定存储区域。 (2) 对于程序设计实验,要求通过对验证性实验的练习,自行编制完整的实验程序, 实现对信号的模拟,并得出实验结
46、果。 (3) 在实验报告中写出完整的自编程序,并给出实验结果。 七、思考题 (1) 离散系统的数学模型有哪些? (2) 线性时不变离散系统的零状态响应是输入信号与冲激响应的卷积,其根据是什么? 第2部分 信号与系统实验 57 57 (3) 为什么说系统的冲激响应h(k)既可以认为是零状态响应,也可以认为是零输入响应? (4) 差分方程的特征根在什么条件下,自由响应会随k 的增大而趋近于零。 实验5 连续系统的频域分析 一、实验目的 (1) 掌握连续时间信号的傅里叶变换和傅里叶逆变换的实现方法。 (2) 掌握傅里叶变换的数值计算方法和绘制信号频谱的方法。 二、实验原理 1. 周期信号的分解 根据
47、傅里叶级数的原理, 任何周期信号都可以分解为三角级数的组合称为f(t)的傅 里叶级数。在误差确定的前提下,可以由一组三角函数的有限项叠加而得到。 例如一个方波信号可以分解为: 1111 4111 ( ) (sin sin3 sin5 sin7 ) 357 E ft t t t t + = 合成波形所包含的谐波分量越多,除间断点附近外,它越接近于原波形,在间断点附 近,即使合成的波形所含谐波次数足够多,也仍存在约 9的偏差,这就是吉布斯现象 (Gibbs)。 2. 连续时间信号傅里叶变换的数值计算 由傅里叶变换的公式: j j 0 (j ) ( )e d lim ( ) t n n Ff ttf n e = = 当 () f t 为时限信号时,上式中的n 取值可以认为是有限项N,则有: 1 j 0 2 () ( )e 0 k N n k n Fk fn k N k N = = 其 中 , = 3. 系统的频率特性 连续 LTI 系统的频率特性称为频率响应特性,是指在