离散时间信号与系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验:离散时间信号与系统的时域分析
一、实验目的
1、熟悉和掌握常用的用于信号与系统时域仿真分析的MA TLAB函数;
2、掌握离散时间信号的MATLAB产生,掌握用周期延拓的方法将一个非周期信号进行周期信号延拓形成一个周期信号的MA TLAB编程;
3、牢固掌握系统的单位序列响应的概念,掌握MATLAB描述LTI系统的常用方法及有关函数,并学会利用MATLAB求解LTI系统响应,绘制相应曲线。
基本要求:掌握用MATLAB描述离散时间信号的方法,能够编写MATLAB程序,实现各种信号的时域变换和运算,并且以图形的方式再现各种信号的波形。掌握线性时不变离散系统的时域数学模型用MATLAB描述的方法,掌握线性常系数差分方程的求解编程。
二、实验原理
信号(Signal)一般都是随某一个或某几个独立变量的变化而变化的,例如,温度、压力、声音,还有股票市场的日收盘指数等,这些信号都是随时间的变化而变化的,还有一些信号,例如在研究地球结构时,地下某处的密度就是随着海拔高度的变化而变化的。一幅图片中的每一个象素点的位置取决于两个坐标轴,即横轴和纵轴,因此,图像信号具有两个或两个以上的独立变量。
在《信号与系统》课程中,我们只关注这种只有一个独立变量(Independent variable)的信号,并且把这个独立变量统称为时间变量(Time variable),不管这个独立变量是否是时间变量。
在自然界中,大多数信号的时间变量都是连续变化的,因此这种信号被称为连续时间信号(Continuous-Time Signals)或模拟信号(Analog Signals),例如前面提到的温度、压力和声音信号就是连续时间信号的例子。但是,还有一些信号的独立时间变量是离散变化的,这种信号称为离散时间信号。前面提到的股票市场的日收盘指数,由于相邻两个交易日的日收盘指数相隔24小时,这意味着日收盘指数的时间变量是不连续的,因此日收盘指数是离散时间信号。
而系统则用于对信号进行运算或处理,或者从信号中提取有用的信息,或者滤出信号中某些无用的成分,如滤波,从而产生人们所希望的新的信号。系统通常是由若干部件或单元组成的一个整体(Entity)。系统可分为很多不同的类型,例如,根据系统所处理的信号的不同,系统可分为连续时间系统(Continuous-time system)和离散时间系统(Discrete-time system),根据系统所具有的不同性质,系统又可分为因果系统(Causal system)和非因果系统(Noncausal system)、稳定系统(Stable system)和不稳定系统(Unstable system)、线性系统(Linear system)和非线性系统(Nonlinear system)、时变系统(Time-variant system)和时不变系统(Time-invariant system)等等。
然而,在信号与系统和数字信号处理中,我们所分析的系统只是所谓的线性时不变系统,这种系统同时满足两个重要的基本性质,那就是线性性和时不变性,通常称为线性时不变(LTI)系统。
1. 信号的时域表示方法
1.1将信号表示成独立时间变量的函数
例如x(t)=sin(ωt) 和x[n]=n(0.5)n u[n]
分别表示一个连续时间信号和一个离散时间信号。在MA TLAB中有许多内部函数,可以直接完成信号的这种表达,例如:
sin():正弦信号
cos():余弦信号
exp():指数信号
1.2用信号的波形图来描述信号
用函数曲线表示一个信号,图1.1就是一个连续时间信号和一个离散时间信号的波形图。
图1.1 连续时间信号与离散时间信号的波形图
1.3将信号用一个数据序列来表示
对于离散时间信号,还可以表示成一个数的序列,例如:
x[n]={...., 0.1, 1.1, -1.2, 0, 1.3, ….}
↑n=0
在《信号与系统》和《数字信号处理》课程中,上述三种信号的描述方法是经常要使用的。
2 用MATLAB仿真离散时间信号
在MATLAB中,无论是连续时间信号还是离散时间信号,MATLAB都是用一个数字序列来表示信号,这个数字序列在MATLAB中叫做向量(vector)。通常的情况下,需要与时间变量相对应。
如前所述,MA TLAB有很多内部数学函数可以用来产生这样的数字序列,例如sin()、cos()、exp()等函数可以直接产生一个按照正弦、余弦或指数规律变化的数字序列。
2.1离散时间信号的仿真
程序Program1_2用来产生离散时间信号x[n]=sin(0.2πn)。
% Program1_2
% This program is used to generate a discrete-time sinusoidal signal and draw its plot
clear, % Clear all variables
close all, % Close all figure windows
n = -10:10; % Specify the interval of time
x = sin(0.2*pi*n); % Generate the signal
stem (n,x) % Open a figure window and draw the plot of x[n]
title ('Sinusoidal signal x[n]') xlabel ('Time index n')
请仔细阅读该程序,比较程序Program1_1和Program1_2中的不同之处,以便自己编程时能够正确使用这种方法方针连续时间信号和离散时间信号。 程序Program1_3用来仿真下面形式的离散时间信号: x[n]={...., 0.1, 1.1, -1.2, 0, 1.3, ….} ↑n=0
% Program1_3
% This program is used to generate a discrete-time sequence % and draw its plot
clear, % Clear all variables
close all, % Close all figure windows
n = -5:5; % Specify the interval of time, the number of points of n is 11. x = [0, 0, 0, 0, 0.1, 1.1, -1.2, 0, 1.3, 0, 0]; % Generate the signal
stem(n,x,'.') % Open a figure window and draw the plot of x[n] grid on,
title ('A discrete-time sequence x[n]') xlabel ('Time index n')
由于在程序的stem(n,x,'.') 语句中加有'.'选项,因此绘制的图形中每根棒条线的顶端是一个实心点。
如果需要在序列的前后补较多的零的话,可以利用函数zeros(),其语法为: zeros(1, N):圆括号中的1和N 表示该函数将产生一个一行N 列的矩阵,矩阵中的所有元素均为零。利用这个矩阵与序列x[n]进行组合,从而得到一个长度与n 相等的向量。
例如,当 x[n]={ 0.1, 1.1, -1.2, 0, 1.3} 时,为了得到程序Program1_3中的序列, ↑n=0
可以用这个MA TLAB 语句x = [zeros(1,4) x zeros(1, 2)] 来实现。用这种方法编写的程序如下:
% Program1_4
% This program is used to generate a discrete-time sinusoidal signal % and draw its plot
clear, % Clear all variables
close all, % Close all figure windows n = -5:5; % Specify the interval of time
x = [zeros(1,4), 0.1, 1.1, -1.2, 0, 1.3, zeros(1,2)]; % Generate the sequence stem (n,x,'.') % Open a figure window and draw the plot of x[n] grid on,
title ('A discrete-time sequence x[n]') xlabel ('Time index n')
离散时间单位阶跃信号u[n]定义为
⎩⎨
⎧<≥=0
,
00,
1][n n n u 2.1
离散时间单位阶跃信号u[n]除了也可以直接用前面给出的扩展函数来产生,还可以利用MATLAB 内部函数ones(1,N) 来实现。这个函数类似于zeros(1,N),所不同的是它产生的矩