《信号与系统》实验指导书.doc
《《信号与系统》实验指导书.doc》由会员分享,可在线阅读,更多相关《《信号与系统》实验指导书.doc(40页珍藏版)》请在装配图网上搜索。
《信号与系统》实验指导书 黄剑航 编 莆田学院机电工程学院 2015年3月 目录 实验1 MATLAB在信号处理中的应用基础.................................1 实验2 连续时间信号在MATLAB中的表示 ..............................6 实验3 连续时间信号在MATLAB中的运算 .............................12 实验4 傅里叶变换及其性质.........................................................18 实验5 信号抽样及抽样定理………………….............................24 实验6 连续时间LTI系统的时域分析 .......................................30 前言 MATLAB是矩阵实验室(Matrix Laboratory)的简称,它是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。 MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MathWorks公司也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB在信号与系统中的应用主要包括符号运算和数值计算仿真分析。由于信号与系统课程的许多内容都是基于公式演算,而MATLAB借助符号数学工具箱提供的符号运算功能,能基本满足信号与系统课程的需要。例如解微分方程、傅立叶正反变换、拉普拉斯正反变换和Z正反变换等。MATLAB在信号与系统中的另一主要应用是数值计算与仿真分析,主要包括函数波形绘制、函数运算、冲激响应仿真分析、信号的时域分析、信号的频谱分析等内容。数值计算仿真分析可以帮助学生更深入地理解信号与系统的理论知识,并为将来使用MATLAB进行信号处理领域的各种分析和实际应用打下基础。 实验报告要求如下: 1. 具体格式参照“莆田学院机电工程学院实验报告”格式。 2. 注意实验报告要求分析组织有条理,截图美观,结论正确。 实验1 MATLAB在信号处理中的应用基础 1. 实验目的 熟悉MATLAB工作环境和基本操作;熟悉MATLAB数组及矩阵运算;学习函数的编制,掌握MATLAB的编程应用。通过不同的程序结构和不同的实际编程问题,掌握MATLAB的编程方法。 2. 实验内容 2.1假设x=3,y=4。利用MTLAB 计算下列表达式:, 要求: (1)在命令窗口直接输入,得到运算结果; (2)编写M文档并在命令窗口执行,然后用工作空间平台查看有哪些变量在当前工作区。 2.2 一小球从空中下落的位移公式为: ,利用MATLAB 计算小球在t=5s 时的位置,已知:. 2.3计算函数在为如下取值时候的函数值,取4.9, 3.2, 100, 1.5, 9.75, 2.56,16, 4.9, 10。 2.4 确定下列数组的大小,通过whos 或工作空间窗口(The workspace browser)检查你的答案。注意在本练习中后面的数组可能要用到前面数组的定义。 (1) u=[10, 20, 10+20] (2) v=[-1;20;3] (3) w=[1 0 -9;2 -2 0;1 2 3] (4) x=[u v] (5) y(3,3)=-7 (6) z=[zeros(4,1) ones(4,1) zeros(1,4)] (7) v(4)=x(2,1) 2.5 执行完2.4的所有题目后,w(2,1)的值是多少? x(2,1)的值是多少?y(2,1)的值是多少? 2.6 c 数组的定义如下,写出下面子数组的内容。 c = 1.1000 -3.2000 3.4000 0.6000 0.6000 1.1000 -0.6000 3.1000 1.3000 0.6000 5.5000 0 (1) c(2,:) (2) c(:,end) (3) c(1:2,2:end) (4) c(6) (5) c(4:end) (6) c(1:2,2:4) (7) c([1 4],2) (8) c([2 2],[3 3]) 2.7 当赋值语句执行后,下列数组的内容是多少? (1) a=[1 2 3; 4 5 6; 7 8 9]; a([3 1],:)=a([1 3],:); (2) a=[1 2 3; 4 5 6; 7 8 9]; a([1 3],:)=a([2 2],:); (3) a=[1 2 3; 4 5 6; 7 8 9]; a=a([2 2],:); 2.8 假设a,b,c 和d 的定义如下: 分别运行出下列表达式的运算结果,并思考点乘和乘法的不同。 (1) a + b (2) a .* c (3) a * b (4) a * c (5) a + c (6) a + d (7) a .* d (8) a * d 2.9一个程序实例学习: (温度转换)设计一个MATLAB 程序,读取一个华氏温度的输入,输出开尔文温度。 华氏温度和开尔文温度的转换关系式可在物理学课本中找到。其关系式为: 在物理学参考书中举了一些例子,我们可以用来检验我们程序是否正确。例如 我们设计程序的步骤如下 : (1)提示用户键入华氏温度值 (2)读取输入值 (3)通过关系式转换为开氏温度 (4)输出结果,结束 我们将会用input 函数输入华氏温度,用fprintf 函数输出结果。 % Script file:temp_conversion.m % % Purpose: % To convert an input temperature from degrees Fahrenheit to % an output temperature in kelvins. % % Record of revisions: % Date Programmer Description of change % ==== ========= ================ % 12/01/97 S.J.Chapman Original code % %Define variables: % temp_f --Temperature in degrees Fahrenheit % temp_k --Temperature in kelvins %Prompt the user for the input temperature. temp_f=input(Enter the temperature in degrees Fahrenheit:); %Converttokelvins. temp_k=(5/9)*(temp_f-32)+273.15; %Writeouttheresult. fprintf(%6.2f degrees Fahrenheit = %6.2f kelvins.\n,... temp_f,temp_k); 我们输入上面的例子中的华氏温度值,以检测程序的正确性。注意用户的输入值已用黑 体字标出。 >> temp_conversion Enter the temperature in degrees Fahrenheit:212 212.00 degrees Fahrenheit = 373.15 kelvins. >> temp_conversion Enter the temperature in degrees Fahrenheit:-110 -110.00 degrees Fahrenheit = 194.26 kelvins. 这个结果和物理教科书的结果相同。 2.10编写一个程序,计算出坐标系中用户指定两点(X1,Y1)和(X2,Y2)之间的距离。要求有输入、输出及其相关提示。 2.11双曲余弦的定义如下:, 编写一个程序,计算出用户指定的x 的值对应的双曲余弦值。用这个程序计算双曲余弦值的若干值,并和MATLAB 中的内建函数cosh(x)得到的值比较看看是否完全相同。并用MATLAB 打印出这个函数的图象。 2.12 电子工程:负载的最大输出功率一个内阻Rs=50Ω,电动势V=120V 的电源驱动一个负载RL。当RL 为多少时,RL 的功率最大?在这种情况下,功率为多少?画以RL 为自变量的RL 功率图。 2.13利用公式求的近似值,直到最后一项的绝对值小于为止。 2.14 Fibonacci(斐波纳契)序列的元素满足Fibonacci 规则: 且;现要求该序列中第一个大于20000 的元素,并指明该元素是序列的第几项。 2.15在田径比赛中,一个身高为一米八零的铅球运动员,大概以多大的角度(和水平方向夹角)推铅球,才能使铅球推得最远,并求出最远距离。不计空气阻力,假设铅球出手点和运动员高度相等,且铅球出手瞬间初始速度大小为14m/s,重力加速度取g=10m/s2。 2.16 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如153是一个水仙花数,满足153=1^3+5^3+3^3。 2.17 有一个函数: ,写一程序,输入x,输出y值。 2.18 输入3个整数,要求按大小输出。 2.19 编写一个MATLAB 程序,要求输入圆柱体的半径和高,然后输出体积。 3. 思考 3.1 MATLAB 的命令窗口的作用是什么? 3.2 列出几种不同的得到MATLAB 帮助的方法。 3.3 什么是工作区?在同一工作区内,你如何决定它里面存储了什么? 3.4 你怎样清空MATLAB 工作区内的内容? 3.5 数组,矩阵,向量有什么区别? 3.6 回答关于下列矩阵的有关问题 (1)C 的大小是多少? (2)C(2,3)的值是多少? (3)列出值为0.6 的元素的下标 3.7 脚本文件和函数文件的区别是什么? 实验2 连续时间信号在MATLAB中的表示 1. 实验目的 学会运用MATLAB表示常用连续时间信号的方法;观察并熟悉这些信号的波形和特性。 2. 实验原理 在某一时间区间内,除若干个不连续点外,如果任意时刻都可以给出确定的函数值,则称该信号为连续时间信号,简称为连续信号。从严格意义上讲,MATLAB数值计算的方法并不能处理连续时间信号。然而,可利用连续信号在等时间间隔点的取样值来近似表示连续信号,即当取样时间间隔足够小时,这些离散样值能够被MATLAB处理,并且能较好地近似表示连续信号。 MATLAB提供了大量生成基本信号的函数。比如常用的指数信号、正余弦信号等都是MATLAB的内部函数。为了表示连续时间信号,需定义某一时间或自变量的范围和取样时间间隔,然后调用该函数计算这些点的函数值,最后画出其波形图。 3. 实例分析 3.1 典型信号的MATLAB表示 (1)实指数信号 实指数信号的基本形式为。式中,为实数。当时,实指数信号随时间按指数式增长;当时,实指数信号随时间按指数式衰减;当时候,则转化为直流信号。MATLAB中用exp函数来表示实指数信号,其语句格式为: 例1 用MATLAB命令产生单边衰减指数信号,并绘出时间的波形图。 解:MATLAB源程序为: clear;clc; K = 2; a = -1.5; t = 0:0.01:3; ft = K*exp(a*t); plot(t,ft);grid on axis([0,3,0,2.2]); title(单边指数衰减信号); (2)正弦信号 正弦信号的基本形式为或者。其中K 是振幅;是角频率;是初相位。这三个参数称为正弦信号的三要素。MATLAB中可用sin或者cos函数来表示正弦信号,其语句格式为: 例2 用MATLAB命令产生正弦信号,并绘出时间的波形图。 解:MATLAB源程序为: clear;clc; K = 2; w = 2*pi; phi = pi/4; t = 0:0.01:3; ft = K*sin(w*t+phi); plot(t,ft);grid on axis([0,3,-2.2,2.2]); title(正弦信号); 图1 单边指数衰减信号 图2 正弦信号 (3)抽样信号 抽样信号的基本形式为,在MATLAB中用与类似的函数表示,定义为。 可以看出,函数与没有本质的区别,只是在时间尺度上不同而已。 例3 用MATLAB命令产生抽样信号,并绘出时间为的波形图。 解:MATLAB源程序为: clear;clc; t = -6*pi: pi/100: 6*pi; ft = sinc(t/pi); plot(t,ft);grid on axis([-20,20,-0.5,1.2]); title(抽样信号); 图3 抽样信号 (4)矩形脉冲信号 矩形脉冲信号在MATLAB中可用rectpuls函数产生,其语句格式为: 该函数用于产生一个幅度为1、宽度为width,且以t=0为对称轴的矩形脉冲信号,width的默认值为1。 例4 用MATLAB命令画出下列矩形脉冲信号的波形图。 解:根据所定义的矩形脉冲信号,定义的矩形脉冲宽度为1,脉冲的中心位置相对于纵轴向右移动了0.5。因此,其MATLAB源程序为: clear;clc; t = -0.5: 0.01: 3; t0 = 0.5; width = 1; ft = 2* rectpuls(t-t0, width); plot(t,ft);grid on axis([-0.5,3,-0.2,2.2]); title(矩形脉冲信号); 图4 矩形脉冲信号 周期性矩形波信号或方波在MATLAB中可用square函数产生,其语句格式为: y=square(t,DUTY) 该函数用于产生一个周期为,幅值为的周期性方波信号,其中,DUTY参数用来表示信号的占空比DUTY%,即在一个周期内脉冲宽度(正值部分)与脉冲周期比值。占空比默认值为0.5。 例5 用MATLAB命令产生频率为10Hz,占空比为30%的周期方波信号。 解:MATLAB源程序为: clear;clc; t = 0: 0.001: 0.3; y = square(2*pi*10*t, 30); plot(t,y);grid on axis([0,0.3,-1.2,1.2]); title(周期方波信号); 图5 周期方波信号 还有非周期的三角波脉冲可以用tripuls函数,周期三角波(锯齿波)可以用sawtooth函数实现。同学们可以通过MATLAB help自学,或者上网搜索及其他途径学习。 3.2 单位阶跃信号的MATLAB表示 单位阶跃信号是信号分析中的基本信号之一,在信号与系统分析中有着十分重要的意义,常用于简化信号的时域数学表示。例如,表示分段函数信号、时限信号和因果信号等。单位阶跃信号用符号表示,定义为: 例6 用MATLAB命令产生单位阶跃信号。 解:MATLAB源程序为: clear;clc; t = -1: 0.01: 5; ft = (t >=0 ); plot(t,ft);grid on axis([-1,5,-0.5,1.5]); title(单位阶跃信号); 图6 单位阶跃信号 此外,也可以在MATLAB的工作目录下创建uCT的M文件,其MATLAB源文件为: function f = uCT(t) f = (t>=0); 保存后,就可调用该函数,并运用plot命令来绘制单位阶跃信号的波形。例如,图6中波形也可以用如下代码实现: clear;clc; t = -1: 0.01: 5; ft = uCT(t); plot(t,ft);grid on axis([-1,5,-0.5,1.5]); title(单位阶跃信号); 注意,在此定义的uCT函数是阶跃信号数值表示方法,因此在数值计算机中我们将调用uCT函数。而在MATLAB的MAPLE内核中,将Heaviside函数定义为阶跃信号符号表达式,在符号运算过程中,若要调用它必须用sym定义后,才能实现。例如,还可用下面的命令会出阶跃信号,即: clear;clc; y=sym(Heaviside(t)); % 定义符号表达式 ezplot(y,[-1,5]).grid on 在表示分段函数信号、时限信号时,经常用到延时的单位阶跃信号,对于延时T的单位阶跃信号,可以用 uCT(t-T)来表示。 例7 用MATLAB命令实现幅度为1、宽度为1的门函数。 解:MATLAB源程序为: clear;clc; t = -1: 0.01: 1; ft = uCT(t+0.5)-uCT(t-0.5); plot(t,ft);grid on axis([-1,1 -0.2,1.2]); title(门函数); 图 图7 门函数波形 4. 实验内容 4.1 利用MATLAB命令画出下列连续信号的波形图。 (1) (2) (3) (4) 4.2 利用MATLAB命令产生幅度为1、周期为1、占空比为0.5的一个周期矩形脉冲信号。T=1;f=1/T=1 4.3 利用MATLAB命令画出如下信号的实部、虚部、模和幅角。 cos(pi/4*t)+jsin(pi/4*t) 5. 问题与思考 阶跃信号函数中语句ft = (t >=0 )的含义。 实验3 连续时间信号在MATLAB中的运算 1. 实验目的 学会运用MATLAB进行连续信号的时移、反折和尺度变换;学会运用MATLAB进行连续信号的相加、相乘运算;学会运用MATLAB数值计算方法求连续信号的卷积。 2. 实验原理 2.1信号的时移、反折和尺度变换 信号的时移、反折和尺度变换是针对自变量时间而言的,其数学表达式与波形变换之间存在一定的变换规律。 信号的时移就是将信号数学表达式中的用替换,其中为正实数。因此,波形的时移变换是将原来的波形在时间轴上向左或者向右移动。为波形向左移动;为波形向右移动。信号的反折就是将表达式中的自变量用替换,即变换后的波形是原波形的y轴镜像。信号的尺度变换就是将表达式中的自变量用替换,其中,为正实数。对应于波形的变换,则是将原来的的波形以原点为基准压缩()至原来的,或者扩展()至原来的。 上述可以推广到的情况。 2.2 MATLAB数值计算法求连续时间信号的卷积 用MATLAB分析连续时间信号,可以通过时间间隔取足够小的离散时间信号的数值计算方法来实现。可调用MATLAB中的conv( )函数近似地数值求解连续信号的卷积积分。如果对连续时间信号和进行等时间间隔(足够小)均匀抽样,则和分别变为离散序列和。其中为整数。当足够小时,和即为连续时间信号和。因此连续信号的卷积积分运算转化为: 采用数值计算法,只求当时卷积积分的值,其中,为整数,即 其中,实际就是离散序列和的卷积和。当足够小时,就是卷积积分的结果,从而连续时间信号 上式表明通过MATLAB实现连续信号和的卷积,可以利用各自抽样后的离散时间序列的卷积再乘上抽样间隔。抽样间隔越小,误差也就越小。 3. 实例分析 例1 已知信号,试用MATLAB命令画出、、、的波形图。 解:根据已知信号,先建立函数文件,即在MATLAB的工作目录下创建funct1.m文件,MATLAB源程序为: function f = funct1(t) f=uCT(t+2)-uCT(t)+(-t+1).*(uCT(t)-uCT(t-1)); 然后,可以调用上述函数来绘制所求的信号波形。程序运行完,产生如图1所示的波形。MATLAB源程序为: clear;clc; t = -2:0.01:4; ft1 = funct1(t-2); ft2 = funct1(3*t); ft3 = funct1(-t); ft4 = funct1(-3*t-2); subplot(221) plot(t,ft1);grid on title(f(t-2)); axis([-2 4 -0.5 2]); subplot(222) plot(t,ft2);grid on title(f(3t)); axis([-2 4 -0.5 2]); subplot(223) plot(t,ft3);grid on title(f(-t)); axis([-2 4 -0.5 2]); subplot(224) plot(t,ft4);grid on title(f(-3t-2)); axis([-2 4 -0.5 2]); 图1 f(t-2),f(3t),f(-t),f(-3t-2)波形图 例2 用MATLAB数值计算分析法求信号与的卷积积分。 解:因为是一个持续时间无限长的信号,而计算机数值计算不可能计算真正的无限长时间信号,所以在进行的抽样离散化时,所取的时间范围让衰减到足够小就可以了,本例中取。MATLAB源程序为: clear;clc; dt = 0.01; t = -1:dt:2.5; f1 = uCT(t)- uCT(t-2); f2 = exp(-3*t).*uCT(t); f = conv(f1,f2)*dt; n =length(f); tt = (0:n-1)*dt-2;(tt从-2开始) subplot(221), plot(t,f1),grid on; axis([-1, 2.5, -0.2,1.2]); title(f1(t)); xlabel(t); subplot(222), plot(t,f2),grid on; axis([-1, 2.5, -0.2,1.2]); title(f2(t)); xlabel(t); subplot(212), plot(tt,f),grid on; title(f(t)=f1(t)*f2(t)); xlabel(t); 程序运行后,产生如图2所示的波形。 图2 例2的卷积结果 由于和的时间范围都是从开始,所以卷积结果的时间范围从开始,增量还是取样间隔,这就是上面MATLAB语句tt = (0:n-1)*dt-2的由来。 对于时限信号的卷积运算,还可以利用MATLAB中的function命令建立一个实用函数来求卷积。例如,可以建立连续时间信号卷积运算的函数ctsconv.m,其MATLAB源程序为: function [f,t] = ctsconv(f1,f2,t1,t2,dt) f = conv(f1,f2); f = f*dt; ts = min(t1) +min(t2); te = max(t1)+max(t2); t = ts:dt:te; subplot(221) plot(t1,f1); grid on axis([ min(t1), max(t1), min(f1)-abs(min(f1)*0.2), max(f1)+abs(max(f1)*0.2) ]) title(f1(t));xlabel(t); subplot(222) plot(t2,f2); grid on axis([ min(t2), max(t2), min(f2)-abs(min(f2)*0.2), max(f2)+abs(max(f2)*0.2) ]) title(f2(t));xlabel(t); subplot(212) plot(t,f); grid on axis([ min(t), max(t), min(f)-abs(min(f)*0.2), max(f)+abs(max(f)*0.2) ]) title(f(t)=f1(t)*f2(t));xlabel(t); 对于例2,可以用上面定义的ctsconv函数求的,MATLAB源程序为: clear;clc; dt = 0.01; t1 = -1:dt:2.5; f1 = uCT(t1)- uCT(t1-2); t2 = t1; f2 = exp(-3*t2).*uCT(t2); [t,f] = ctsconv(f1,f2,t1,t2,dt); 程序运行后,可获得和例2相同的波形结果。 4. 实验内容 4.1 试用MATLAB命令绘制信号的波形图。 4.2 已知信号,画出、、、的波形。 4.3 求信号与 的卷积结果,并画出和的波形。 4.4 求信号与自身的卷积结果,并画出和的波形。 5. 问题与思考 MATLAB运算符中 .*和 * 的区别?可结合例子说明。(实验1和实验2都有碰到的) 实验4 傅里叶变换及其性质 1. 实验目的 学会运用MATLAB求连续时间信号的傅里叶(Fourier)变换;学会运用MATLAB求连续时间信号的频谱图;学会运用MATLAB分析连续时间信号的傅里叶变换的性质。 2. 实验原理及实例分析 2.1 傅里叶变换的实现 信号的傅里叶变换定义为: , 傅里叶反变换定义为:。 信号的傅里叶变换主要包括MATLAB符号运算和MATLAB数值分析两种方 法,下面分别加以探讨。同时,学习连续时间信号的频谱图。 2.1.1 MATLAB符号运算求解法 MATLAB符号数学工具箱提供了直接求解傅里叶变换与傅里叶反变换的函 数fourier( )和ifourier( )。Fourier变换的语句格式分为三种。 (1) F=fourier(f,):它是符号函数f的Fourier变换,默认返回是关于的函数。 (2) F=fourier(f,v):它返回函数F是关于符号对象v的函数,而不是默认的,即。 (3) F=fourier(f,u,v):是对关于u的函数f进行变换,返回函数F是关于v的函数,即。 傅里叶反变换的语句格式也分为三种。 (1) f=ifourier(F):它是符号函数F的Fourier反变换,独立变量默认为,默认返回是关于x的函数。 (2) f=ifourier(F,u):它返回函数f是u的函数,而不是默认的x。 (3) f=ifourier(F,u,v):是对关于v的函数F进行反变换,返回关于u的函数f。 值得注意的是,函数fourier( )和ifourier( )都是接受由sym函数所定义的符号 变量或者符号表达式。 例1 用MATLAB符号运算求解法求单边指数信号的傅里叶变换。 解:MATLAB源程序为: ft = sym(exp(-2*t)*Heaviside(t)); Fw = fourier(ft) 运行结果为:Fw = 1/(2+i*w) 例2 用MATLAB符号运算法求的傅里叶逆变换 解:MATLAB源程序为: ft = sym(exp(-2*t)*Heaviside(t)); Fw = fourier(ft) 运行结果为:ft = 1/2*exp(-t)*heaviside(t)+1/2*exp(t)*heaviside(-t) 2.1.2 连续时间信号的频谱图 信号的傅里叶变换表达了信号在处的频谱密度分布情况,这就 是信号的傅里叶变换的物理含义。一般是复函数,可以表示成 。与曲线分别称为非周期信号的幅度频谱与相位频谱,它们都是频率的连续函数,在形状上与相应的周期信号频谱包络线相同。非周期信号的频谱有两个特点,密度谱和连续谱。要注意到,采用fourier()和ifourier() 得到的返回函数,仍然是符号表达式。若需对返回函数作图,则需应用ezplot()绘图命令。 例3 用MATLAB命令绘出例1中单边指数信号的幅度谱和相位谱。 解:MATLAB源程序为 ft = sym(exp(-2*t)*Heaviside(t)); Fw = fourier(ft); subplot(211) ezplot(abs(Fw));grid on title(幅度谱) phase = atan(imag(Fw)/real(Fw)); subplot(212) ezplot(phase);grid on title(相位谱) 图1 单边指数信号的幅度谱和相位谱 2.1.3 MATLAB数值计算求解法 fourier( )和ifourier( )函数的一个局限性是,如果返回函数中有诸如单位冲激函数等项,则用ezplot()函数无法作图。对某些信号求变换时,其返回函数可能包含一些不能直接用符号表达的式子,因此不能对返回函数作图。此外,在很多实际情况中,尽管信号是连续的,但经过抽样所获得的信号则是多组离散的数值量,因此无法表示成符号表达式,此时不能应用fourier()函数对f(n)进行处理,而只能用数值计算方法来近似求解。 从傅里叶变换定义出发有, 当足够小时,上式的近似情况可以满足实际需要。对于时限信号,或者在所研究的时间范围内让衰减到足够小,从而近似地看成时限信号,则对于上式可以考虑有限n的取值。假设是因果信号,则有 傅里叶变换后在域用MATLAB进行求解,对上式的角频率进行离散化。假设离散化后得到N个样值,即 -1, 因此有 。采用行向量,用矩阵表示为 。其要点是要正确生成的M个样本向量与向量。当足够小时,上式的内积运算(即相乘求和运算)结果即为所求的连续时间信号傅里叶变换的数值解。 例4 用MATLAB数值计算法求三角脉冲幅度谱。三角脉冲的数学表达式如下: 解:MATLAB源程序为: dt = 0.01; t = -4:dt:4; ft = (t+4 )/2.*uCT(t+4)-t.*uCT(t)+(t-4)/2.*uCT(t-4); N = 2000; k = -N:N; W = 2*pi*k/((2*N+1)*dt); F = dt * ft*exp(-j*t*W); plot(W,F), grid on axis([-pi pi -1 9]); xlabel(W), ylabel(F(W)) title(amplitude spectrum); 图2 三角脉冲信号的幅度谱 2.2 傅里叶变换的性质 傅里叶变换的性质包含了丰富的物理意义,并且揭示了信号的时域和频域的 关系。熟悉这些性质成为信号分析研究工作中最重要的内容之一。 2.2.1 尺度变换特性 傅里叶变换的尺度变换特性为:若,则有,其 中,a为非零实常数。 例5 设矩形信号,用MATLAB命令绘出该信号及其 频谱图。当信号的时域波形扩展为原来的2倍,或压缩为原来的1/2时,则分别得到和,用MATLAB命令绘出和的频谱图,并加以分析比较。 解:采用符号运算法求解,并分析结果。MATLAB源程序为: ft1 = sym(Heaviside(t+1/2)-Heaviside(t-1/2)); subplot(321); ezplot(ft1,[-1.5 1.5]),grid on Fw1 = simplify(fourier(ft1)); subplot(322); ezplot(abs(Fw1),[-10*pi 10*pi]), grid on axis([-10*pi 10*pi -0.2 2.2]); ft2 = sym(Heaviside(t/2+1/2)-Heaviside(t/2-1/2)); subplot(323); ezplot(ft2,[-1.5 1.5]), grid on Fw2 = simplify(fourier(ft2)); subplot(324); ezplot(abs(Fw2),[-10*pi 10*pi]),grid on axis([-10*pi 10*pi -0.2 2.2]); ft3 = sym(Heaviside(2*t+1/2)-Heaviside(2*t-1/2)); subplot(325); ezplot(ft3,[-1.5 1.5]), grid on Fw3 = simplify(fourier(ft3)); subplot(326); ezplot(abs(Fw3),[-10*pi 10*pi]),grid on axis([-10*pi 10*pi -0.2 2.2]); 2.2.2 频移特性 傅里叶变换的频移特性为:若,则有。频 移技术在通信系统中得到广泛应用,诸如调幅变频等过程都是在频谱搬移的基础上完成的。频移的实现原理是将信号乘以载波信号或,从而完成频谱的搬移,即 例6 阅读并运行如下程序段,并观察信号调制前后的频谱。 ft1 = sym(4*(Heaviside(t+1/4)-Heaviside(t-1/4))); Fw1 = simplify(fourier(ft1)); subplot(121); ezplot(abs(Fw1),[-24*pi 24*pi]),grid on axis([-24*pi 24*pi -0.2 2.2]); title(矩形信号频谱); ft2 = sym(4*cos(2*pi*6*t)*(Heaviside(t+1/4)-Heaviside(t-1/4))); Fw2 = simplify(fourier(ft2)); subplot(122); ezplot(abs(Fw2),[-24*pi 24*pi]),grid on axis([-24*pi 24*pi -0.2 2.2]); title(矩形调制信号频谱); 3. 实验内容 3.1 试用MATLAB命令求下列信号的傅里叶变换,并绘出其幅度谱和相位谱。 (1) (2) 3.2 试用MATLAB命令求下列信号的傅里叶反变换,并绘出其时域信号图。 (1) (2) 3.3 试用MATLAB数值计算方法求门信号的傅里叶变换,并画出其频谱图。 门信号即,其中。 3.4 已知两个门信号的卷积为三角波信号,试用MATLAB命令验证傅里叶变换 的时域卷积定理。 4. 问题与思考 傅里叶变换的其他性质可以用类似的方法加以验证,试举一例,说明你验证过程的思路。 实验5 信号抽样及抽样定理 1. 实验目的 本实验是综合性实验,实验目的主要为:学会运用MATLAB完成信号抽样及对抽样信号的频谱进行分析;学会运用MATLAB改变抽样间隔,观察抽样后信号的频谱变化;学会运用MATLAB对抽样后的信号进行重建。进一步加深对信号采样和重建过程的理解。 2. 实验原理及实例分析 2.1 信号抽样 信号抽样是连续时间信号分析向离散时间信号、连续信号处理向数字信号处 理的第一步,广泛应用于实际的各类系统中。所谓信号抽样,也称为取样或采样,就是利用抽样脉冲序列从连续信号中抽取一系列的离散样值,通过抽样过程得到的离散样值信号称为抽样信号,用表示。从数学上讲,抽样过程就是抽样脉冲和原连续信号相乘的过程,即: 因此可以用傅里叶变换的频移卷积性质来求抽样信号的频谱。常用的抽样脉冲序列有周期矩形脉冲序列和周期冲激脉冲序列。 假设原连续信号的频谱为,即;抽样脉冲是一个周期信号,它的频谱为: 其中,为抽样角频率,为抽样间隔。因此,抽样信号的频谱为: 上式表明,信号在时域被抽样后,它的频谱是原连续信号的频谱以抽样角频率为间隔周期的延拓,即信号在时域抽样或离散化,相当于频域周期化。在频谱的周期重复过程中,其频谱幅度受抽样脉冲序列的傅里叶加权,即被加权。 假设抽样信号为周期冲激脉冲序列,即: 因此,冲激脉冲序列抽样后信号的频谱为: 可以看出,是以为周期等幅地重复。 例1 已知升余弦脉冲信号为,,参数 用MATLAB编程,实现该信号经冲激脉冲抽样后得到的抽样信号及其频谱。 解:升余弦脉冲信号的频谱大部分集中在之间,当采用抽样间隔时,根据抽样定理,可以从抽样信号恢复出原信号。MATLAB源程序为: Ts = 1; dt = 0.1; t1 = -4:dt:4; ft = ((1+cos(t1))/2).*(uCT(t1+pi)-uCT(t1-pi)); subplot(221) plot(t1,ft), grid on axis([-4 4 -0.1 1.1]) xlabel(Time(sec)),ylabel(f(t)) title(升余弦脉冲信号) N=500; k = -N:N; W = 2*pi*k/((2*N+1)*dt); Fw = dt*ft*exp(-j*t1*W); subplot(222) plot(W,abs(Fw)), grid on axis([-10 10 -0.2 1.1*pi]) xlabel(\omega),ylabel(F(w)) title(升余弦脉冲信号的频谱) t2 = -4:Ts:4; fst = ((1+cos(t2))/2).*(uCT(t2+pi)-uCT(t2-pi)); subplot(223) plot(t1,ft,:),hold on stem(t2,fst),grid on axis([-4 4 -0.1 1.1]) xlabel(Time(sec)),ylabel(fs(t)) title(抽样后的信号),hold off Fsw = Ts*fst*exp(-j*t2*W); subplot(224) plot(W,abs(Fsw)), grid on axis([-10 10 -0.2 1.1*pi]) xlabel(\omega),ylabel(Fs(w)) title(抽样信号的频谱) 图1 升余弦脉冲信号经抽样后的频谱比较 很明显,升余弦脉冲信号的频谱在抽样后发生了周期延拓,频域上该周期为。 2.2 抽样定理 若是带限信号,带宽为,则信号可以用等间隔的抽样值来唯一表 示。经抽样后的频谱就是将的频谱在频率轴上以抽样频率为间隔进行周期延拓。因此,当时,或者抽样间隔时,周期延拓后频谱不会产生频率混叠;当时,周期延拓后频谱将产生频率混叠。通常把满足抽样定理要求的最低抽样频率,称为奈奎斯特频率,把最大允许的抽样间隔 称为奈奎斯特间隔。 2.3 信号重建 抽样定理表明,当抽样间隔小于奈奎斯特间隔时,可用抽样信号唯一地 表示原信号,即信号的重建。为了从频谱中无失真地恢复原信号,可采用截止频率为的理想低通滤波器。 设理想低通滤波器的冲激响应为,则 其中,,,因此 上式表明,连续信号可以展开为抽样函数的无穷级数,系数等于抽样值。利用MATLAB中的函数来表示,有,所以可获得由重建的表达式,即: 例2 对例1中的升余弦脉冲信号,假设其截止频率,抽样间隔, 采用截止频率的低通滤波器对抽样信号滤波后重建信号,并计算重建信号与原升余弦脉冲信号的绝对误差。 解:MATLAB源程序为: wm =2; %升余弦脉冲信号带宽 wc = 1.2*wm; %理想低通截止频率 Ts = 1; %抽样间隔 n = -100:100; %时域计算点数 nTs = n *Ts; %时域抽样点 fs = ((1+cos(nTs))/2).*(uCT(nTs+pi)-uCT(nTs-pi)); t = -4:0.1:4; ft = fs*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs*ones(1,length(t)))); t1 = -4:0.1:4; f1 = ((1+cos(t1))/2).*(uCT(t1+pi)-uCT(t1-pi)); subplot(311) plot(t1,f1,:), hold on stem(nTs,fs),grid on axis([-4 4 -0.1 1.1]) xlabel(nTs),ylabel(f(nTs)); title(抽样间隔Ts=1时的抽样信号f(nTs)) hold off subplot(312) plot(t,ft),grid on axis([-4 4 -0.1 1.1]) xlabel(t),ylabel(f(t)); title(由f(nTs)信号重建得到升余弦脉冲信号) error = abs(ft-f1); subplot(313) plot(t,error),grid on xlabel(t),ylabel(error(t)); title(重建信号与原升余弦脉冲信号的绝对误差) 图2 抽样信号的重建与误差分析 程序的运行结果如图2所示,重建后的信号与原升余弦脉冲信号的误差在以内,这是因为当选取升余弦脉冲信号带宽时,实际上已经将很少的高频分量忽略了。 例3 如果例2中的抽样间隔修改为.5,低通滤波器的截止频率修改为 。那么,从理论分析将会产生频谱混叠,则重建的信号与原来的升余弦脉冲信号相比也会产生较大失真。按要求修改例2 MATLAB程序,并分析失真的误差。 解:程序略,所得结果如图3所示。 3. 实验内容 3.1 设有三个不同频率的正弦信号,频率分别为 。现在用抽样频率对这三个正弦信号进行抽样,用MATLAB命令画出各抽样信号的波形及频谱,并分析频率混叠现象。 3.2 结合抽样定理,用MATLAB编程实现信号经冲激脉冲抽样后得到的抽样信号及其频谱,并利用重构信号。 4. 问题与思考 4.1 通过简单计算,说明例3中重建信号失真的原因。 4.2 说明例2与例3中nTs向量和t向量的区别。 图3 不满足抽样定理条件的信号的重建 实验6 连续时间LTI系统的时域分析 1. 实验目的 学会运用MATLAB符号求解连续系统的零输入响应和零状态响应;学会运用MATLAB数值求解连续系统的零状态响应;学会运用MATLAB求解连续系统的冲激响应和阶跃响应;思考运用MATLAB卷积积分法求解系统的零状态响应。 3 实验原理和实例分析 2.1 连续时间系统零输入响应和零状态响应的符号求解 LTI连续系统可用线性常系数微分方程来描述,即: 其中,和为实常数。该系统的完全响应由零输入响应和零状态响应两部分组成。 MATLAB符号工具箱提供了dsolve函数,可实现常系数微分方程的符号求解,其调用格式为: dsolve(eq1,eq2,…,cond1,cond2,…,v) 其中,参数eq1,eq2…表示各微分方程,它与MATLAB符号表达式的输入基本相同,微分或导数的输入是用Dy,D2y,D3y,…来分别表示y的一阶导数,y的二阶导数,y的三阶导数…;参数cond1,cond2,…表示个初始条件或起始条件;参数v表示自变量,默认为变量t。可利用dsolve函数来求解系统微分方程的零输入响应和零状态响应,进而求出完全响应。 例1 试用MATLAB命令求齐次微分方程的零输入响应,已知起始条件为,,。 解:MATLAB源程序为: clear;clc; eq = D3y+2*D2y+Dy=0; cond = y(0)=1,Dy(0)=1,D2y(0)=2; ans = dsolve(eq,cond); simplify(ans) 得到结果: ans = 5-4*exp(-t)-3*exp(-t)*t,即零输入响应, 在求解该微分方程的零输入响应过程中,到是没有跳变的,因此,程序中初始条件选择t=0时刻,即cond = y(0)=1,Dy(0)=1,D2y(0)=2。 例2 已知输入,试用MATLAB命令求解微分方程的零状态响应。 解:依题意,可理解为求解给定的两个方程,即 其MATLAB源程序为: clear;clc; eq1 = D3y+4*D2y+8*Dy=3*Dx+8*x; eq2 = x=Heaviside(t); cond = y(-0.01)=0,Dy(-0.01)=0,D2y(-0.01)=0; ans = dsolve(eq1,eq2,cond); simplify(ans.y) ans = 1/8*heaviside(t)*(exp(-2*t)*cos(2*t)-3*exp(-2*t)*sin(2*t)-1+8*t) 试用dsolve求解零状态响应和零输入响应时,起始条件的时刻是不同的,不能选择t=0时刻,程序中选择了t=-0.01时刻。如果用 cond = y(0)=0,Dy(0)=0,D2y(0)=0定义初始条件,则实际上是定义了初始条件,,,因此,得出错误的结论。还须注意,本例中dsolve的解答是和,必须用ans.y 取出。 例3 试用MATLAB命令求解微分方程,当输入 ,起始条件为,时系统的零输入响应,零状态响应及完全响应。 解:求得零输入和零状态响应后,完全响应则为二者之和。MATLAB源程序为: clear;clc; eq = D2y+3*Dy+2*y=0; cond = y(0)=1,Dy(0)=2; yzi = dsolve(eq,cond); yzi = simplify(yzi) eq1 = D2y+3*Dy+2*y=Dx+3*x; eq2 = x=exp(-3*t)*Heaviside(t); cond = y(-0.001)=0,Dy(-0.001)=0; yzs = dsolve(eq1,eq2- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信号与系统 信号 系统 实验 指导书

链接地址:https://www.zhuangpeitu.com/p-6670020.html