离散时间信号与系统Word文件下载.docx
《离散时间信号与系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《离散时间信号与系统Word文件下载.docx(10页珍藏版)》请在冰点文库上搜索。
1.1将信号表示成独立时间变量的函数
例如x(t)=sin(ωt)和x[n]=n(0.5)nu[n]
分别表示一个连续时间信号和一个离散时间信号。
在MATLAB中有许多内部函数,可以直接完成信号的这种表达,例如:
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)。
通常的情况下,需要与时间变量相对应。
如前所述,MATLAB有很多内部数学函数可以用来产生这样的数字序列,例如sin()、cos()、exp()等函数可以直接产生一个按照正弦、余弦或指数规律变化的数字序列。
2.1离散时间信号的仿真
程序Program1_2用来产生离散时间信号x[n]=sin(0.2πn)。
%Program1_2
%Thisprogramisusedtogenerateadiscrete-timesinusoidalsignalanddrawitsplot
clear,%Clearallvariables
closeall,%Closeallfigurewindows
n=-10:
10;
%Specifytheintervaloftime
x=sin(0.2*pi*n);
%Generatethesignal
stem(n,x)%Openafigurewindowanddrawtheplotofx[n]
title('
Sinusoidalsignalx[n]'
)
xlabel('
Timeindexn'
请仔细阅读该程序,比较程序Program1_1和Program1_2中的不同之处,以便自己编程时能够正确使用这种方法方针连续时间信号和离散时间信号。
程序Program1_3用来仿真下面形式的离散时间信号:
%Program1_3
%Thisprogramisusedtogenerateadiscrete-timesequence
%anddrawitsplot
clear,%Clearallvariables
n=-5:
5;
%Specifytheintervaloftime,thenumberofpointsofnis11.
x=[0,0,0,0,0.1,1.1,-1.2,0,1.3,0,0];
%Generatethesignal
stem(n,x,'
.'
)%Openafigurewindowanddrawtheplotofx[n]
gridon,
Adiscrete-timesequencex[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中的序列,
可以用这个MATLAB语句x=[zeros(1,4)xzeros(1,2)]来实现。
用这种方法编写的程序如下:
%Program1_4
%Thisprogramisusedtogenerateadiscrete-timesinusoidalsignal
x=[zeros(1,4),0.1,1.1,-1.2,0,1.3,zeros(1,2)];
%Generatethesequence
stem(n,x,'
)%Openafigurewindowanddrawtheplotofx[n]
离散时间单位阶跃信号u[n]定义为
2.1
离散时间单位阶跃信号u[n]除了也可以直接用前面给出的扩展函数来产生,还可以利用MATLAB内部函数ones(1,N)来实现。
这个函数类似于zeros(1,N),所不同的是它产生的矩阵的所有元素都为1。
值得注意的是,利用ones(1,N)来实现的单位阶跃序列并不是真正的单位阶跃序列,而是一个长度为N单位门(Gate)序列,也就是u[n]-u[n-N]。
但是在一个有限的图形窗口中,我们看到的还是一个单位阶跃序列。
在绘制信号的波形图时,有时我们需要将若干个图形绘制在图一个图形窗口中,这就需要使用MATLAB的图形分割函数subplot(),其用法是在绘图函数stem或plot之前,使用图形分割函数subplot(n1,n2,n3),其中的参数n1,n2和n3的含义是,该函数将把一个图形窗口分割成n1×
n2个子图,即将绘制的图形将绘制在第n3个子图中。
2.2信号的时域变换
2.2.1信号的时移
信号的时移可用下面的数学表达式来描述:
设一个连续时间信号为x(n),它的时移y(n)表示为:
y(n)=x(n-n0)2.2
其中,n0为位移量。
若n0为正数,则y(n)等于将x(n)右移n0秒之后的结果。
反之,若n0为负数,则y(n)等于将x(n)左移n0秒之后的结果。
在MATLAB中,时移运算与数学上习惯表达方法完全相同。
2.2.2信号的时域反褶
对一个信号x[n]的反褶运算在数学上表示为
y[n]=x[-n]2.3
这种反褶运算,用MATLAB实现起来也是非常简单的。
有多种方法可以实现信号的反褶运算。
方法一,修改绘图函数plot(t,x)和stem(n,x)中的时间变量t和n,即用-t和-n替代原来的t和n,这样绘制出来的图形,看起来就是原信号经时域反褶后的版本。
方法二,直接利用原信号与其反褶信号的数学关系式来实现。
这种方法最符合信号反褶运算的实际意义。
方法三,使用MATLAB内部函数fliplr()来实现信号的反褶运算。
其用法如下:
y=fliplr(x):
其中x为原信号x(t)或x[n],而y则为x的时域反褶。
需要说明的是,函数fliplr()对信号作时域反褶,仅仅将信号中各个元素的次序作了一个反转,这种反转处理是独立于时间变量t和n的。
因此,如果信号与其时间变量能够用一个数学函数来表达的话,那么建议将时间变量t和n的范围指定在一个正负对称的时间区间即可。
2.2.3周期信号
在《信号与系统》课程中,周期信号是一类非常重要的信号。
给定一个信号x(t)或x[n],如果满足
x(t)=x(t+kT)2.4
x[n]=x[n+kN]2.5
则该信号叫做周期信号。
其中,k为任意整数,T和N为常数,通常称为信号的基本周期或最小周期。
周期信号可以看作是一个时限的非周期信号经过周期延拓之后形成的。
在数字信号处理中,周期延拓这一信号处理方法非常重要。
3LTI系统的时域描述
3.1线性时不变系统
在分析LTI系统时,有关LTI系统的两个重要的性质是必须首先掌握和理解的。
这就是线性性(Linearity)和时不变性(Time-invariance)。
所谓线性性就是指系统同时满足齐次性和叠加性。
这可以用下面的方法来描述。
假设系统在输入信号x1(t)作用时的响应信号为y1(t),在输入信号x2(t)作用时的响应信号为y2(t),给定两个常数a和b,如果当输入信号为x(t)时系统的响应信号为y(t),且满足
x(t)=x1(t)+x2(t)2.6(a)
y(t)=y1(t)+y2(t)2.7(b)
则该系统具有叠加性(Additivity)。
如果满足
x(t)=ax1(t)2.8(a)
y(t)=ay1(t)2.8(b)
则该系统具有齐次性(Homogeneity)。
一个系统如果是线性系统的话,那么这个系统必须同时具有叠加性和齐次性。
又假设系统在输入信号x(t)作用时的响应信号为y(t),对一个给定时间常数t0,如果当输入信号为x(t-t0)时,系统的响应信号为y(t-t0)的话,则该系统具有时不变性。
同时具有线性性和时不变性的系统,叫做线性时不变系统,简称LTI系统。
LTI系统有连续时间LTI系统和离散时间LTI系统之分。
连续时间系统的输入和输出信号都必须是连续时间信号,而离散时间系统的输入和输出信号都必须是离散时间信号。
3.2LTI系统的单位序列响应
离散时间LTI系统的单位冲激响应的定义与连续时间LTI系统的单位冲激响应相同,只是离散时间单位冲激函数δ[n]的定义有所不同。
系统的单位冲激响应是一个非常重要的概念,对于一个系统,如果我们知道了该系统的单位冲激响应,那么,该系统对任意输入信号的响应信号都可以求得。
也就是说,系统的输入信号x(t)、x[n]和输出信号y(t)、y[n]之间的关系可以用一个数学表达式来描述,这个数学表达式为
2.9(a)
2.9(b)
这个表达式就是LTI系统的卷积模型,它是根据系统的线性性和时不变性以及信号可以分解成单位冲激函数经推理得到的。
这个表达式实际上告诉了我们一个重要的结论,那就是,任意LTI系统可以完全由它的单位冲激响应h(t)/h[n]来确定。
由于系统的单位冲激响应是零状态响应,故按照式2.9求得的系统响应也是零状态响应。
式2.9中的积分运算叫做卷积积分,求和运算叫做卷积和,是描述连续时间系统输入输出关系的一个重要表达式。
给定一个连续时间LTI系统,在系统的初始条件为零时,用单位冲激信号δ(t)作用于系统,此时系统的响应信号称为系统的单位冲激响应(Unitimpulseresponse),一般用h(t)来表示。
需要强调的是,系统的单位冲激响应是在激励信号为δ(t)时的零状态响应(Zero-stateresponse)。
3.3用线性常系数差分方程描述LTI系统
线性常系数差分方程是描述LTI系统的另一个时域模型。
其原理和实验二中描述相同,此处不再赘述。
三、实验内容及步骤
1.负指数序列x=(0.8201e^j0.6557)^n*u(n)=(0.65+j0.5)^n*u(n)的幅度和相位。
编写程序:
clear,
closeall,
n=0:
0.4:
20;
x=((0.65+1i*0.5).^n).*(n>
=0);
xr=real(x);
xi=imag(x);
xamp=abs(x);
xpha=angle(x);
subplot(221)
stem(n,xr,'
);
axis([020-33]);
xlabel('
n'
),ylabel('
xr'
title('
实部'
subplot(222)
stem(n,xi,'
xi'
虚部'
subplot(223)
stem(n,xamp,'
axis([020-0.13]);
xamp'
幅度'
subplot(224)
stem(n,xpha,'
axis([020-44]);
xpha'
相位'
set(gcf,'
color'
'
w'
2.正弦函数sin(pi/7n+pi/6)的幅度和相位。
n=-20:
0.5:
x=sin(pi/7*n+pi/6);
axis([-2020-33]);
axis([-2020-0.13]);
axis([-2020-44]);
四、实验报告要求
1、书写所编写的全部MATLAB程序
2、详细记录实验过程中的有关信号波形图(存于自带的U盘中),图形要有明确的标题。
本实验完成时间:
13年9月10日