第1章 MATLAB软件简介
1.1 MATLAB软件在信号与系统中的应用介绍
MA TLAB的名称源自Matrix Laboratory,1984年由美国Mathworks公司推向市场。它是一种科学计算软件,专门以矩阵的形式处理数据。MA TLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作。1993年MathWorks公司从加拿大滑铁卢大学购得MAPLE软件的使用权,从而以MAPLE为“引擎”开发了符号数学工具箱(Symbolic Math Toolbox)。
MA TLAB软件包括五大通用功能:数值计算功能(Nemeric);符号运算功能(Symbolic);数据可视化功能(Graphic);数据图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)。其中,符号运算功能的实现是通过请求MAPLE内核计算并将结果返回到MA TLAB命令窗口。该软件有三大特点:一是功能强大;二是界面友善、语言自然;三是开放性强。目前,Mathworks公司已推出30多个应用工具箱。MA TLAB在线性代数、矩阵分析、数值及优化、数理统计和随机信号分析、电路与系统、系统动力学、信号和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统、以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。
MA TLAB在信号与系统中的应用主要包括符号运算和数值计算仿真分析。由于信号与系统课程的许多内容都是基于公式演算,而MA TLAB借助符号数学工具箱提供的符号运算功能能基本满足信号与系统课程的需求。例如,解微分方程、傅里叶正反变换、拉普拉斯正反变换、z正反变换等。MA TLAB在信号与系统中的另一主要应用是数值计算与仿真分析,主要包括函数波形绘制、函数运算、冲激响应与阶跃响应仿真分析、信号的时域分析、信号的频谱分析、系统的S域分析、零极点图绘制等内容。数值计算仿真分析可以帮助学生更深入理解信号与系统的理论知识,并为将来使用MA TLAB进行信号处理领域的各种分析和实际应用打下基础。
1.2 MATLAB软件使用入门
1.2.1 MATLAB软件的环境介绍
MA TLAB 6.5的工作桌面由标题栏、菜单栏、工具栏、命令窗口(Command Window)、工作空间窗口(Workspace)、当前目录窗口(Current Directory)、历史命令窗口(Command History)及状态栏组成,从而为用户使用MA TLAB提供了集成的交互式图形界面,如图1-1所示。
MA TLAB 的命令窗口是接收用户输入命令及输出数据显示的窗口,几乎所有的MA TLAB 行为都是在命令窗口进行的。当启动MA TLAB 软件时,命令窗口就做好了接收指令和输入的准备,并出现命令提示符(>>)。在命令提示符后输入指令通常会创建一个或多个变量。变量可以是多种类型的,包括函数和字符串,但通常的变量只是数据。这些变量被放置在MA TLAB 的工作空间中,工作空间窗口提供了变量的一些重要信息,包括变量的名称、维数大小、占用内存大小、以及数据类型等信息。查看工作空间的另一种方法是使用whos 命令。在命令提示符后输入whos 命令,工作空间中的内容概要将作为输出显示在命令窗口中。
有的命令可以用来清除不必要的数据,同时释放部分系统资源。c lear 命令可以用来清除工作空间的所有变量,如果要清除某一特定变量则需要在clear 命令后加上该变量的名称。另外,clc 命令用来清除命令窗口的内容。
如果希望将MA TLAB 所创建的变量及重要数据保留下来,则使用save 命令,并在其后加上文件名,即可将整个工作空间保存为一个扩展名为.mat 的文件。使用load 命令,并在其后加上文件名,则可将MA TLAB 数据文件(.mat 文件)中的数据加载到工作空间中。MA TLAB 历史命令窗口记录了每次输入的命令。在该窗口中可以对以前的历史命令进行查看、复制或者直接运行。
对于初学者而言,需要掌握的最重要且最有用的命令应为help 命令。MA TLAB 命令和函数有数千个,而且许多命令的功能非常强大,调用形式多样。要想了解一个命令或函数,只需在命令提示符后输入help ,并加上该命令或函数的名称,则MA TLAB 会给出其详细帮助信息。另外,MA TLAB 还精心设计了演示程序系统(Demo ),内容包括MA TLAB 的内部主要函数和各个工具箱(Toolbox )的使用。初学者可以方便地通过这些演示程序及其给出的程序源代码进行直观的感受和学习。用户可以通过两种途径打开演示程序系统。一是在命令窗口中输入demo 或demos 命令并按Enter 键;二是选择“help ”→“Demos ”菜单命令。
图1-1 MA TLAB 的工作桌面
1.2.2 MATLAB 软件基本运算入门
1. MATLAB 软件的数值计算
(1)算术运算 MA TLAB 可以像一个简单的计算器一样使用,不论是实数运算还是复数运算都能轻松完成。标量的加法、减法、除法和幂运算均可通过常规符号“+”、“-”、“*”、“/”、以及“^”来完成。对于复数中的虚数单位,MA TLAB 采用预定义变量i 或j 表示,即i=j=1-。因
此,一个复常量可用直角坐标形式来表示,例如,
>>A=-3-i*4 A=
-3.0000 - 4.0000i
将复常量-3-i4赋予了变量A 。
一个复常量还可用极坐标的形式来表示,例如,
>>B=2*exp(i*pi/6) B=
1.7321 + 1.0000i
其中,pi 是MA TLAB 预定义变量,pi=π。
复数的实部和虚部可以通过real 和imag 运算符来实现,而复数的模和辐角可以通过abs 和angle 运算符来实现。但应注意辐角的单位为弧度。例如,复数A 的模和辐角、复数B 的实部和虚部的计算分别为
>>A_mag=abs(A) A_mag=
5
>>A_rad=angle(A) A_rad= -2.2143 >>B_real=real(B) B_real= 1.7321 >>B_imag=imag(B) B_imag= 1.0000
如果将弧度值用“度”来表示,则可进行转换,即
>>A_deg=angle(A)*180/pi A_deg= -126.8699
复数A 的模可表示为*
AA
A =
,因此,其共轭复数可通过conj 命令来实现,例如,
>>A_mag=sqrt(A*conj(A)) A_mag= 5
(2)向量运算
向量是组成矩阵的基本元素之一,MA TLAB具有关于向量运算的强大功能。一般地,向量被分为行向量和列向量。生成向量的方法有很多,我们主要介绍两种。
①直接输入向量:即把向量中的每个元素列举出来。向量元素要用“[ ]”括起来,元素之间可用空格、逗号分隔生成行向量,用分号分隔生成列向量。例如,
>>A=[1,3,5,21]
A=
1 3 5 21
>>B=[1;3;5;21]
B=
1
3
5
21
②利用冒号表达式生成向量:这种方法用于生成等步长或均匀等分的行向量,其表达式为x=x0:step:xn。其中,x0为初始值;step表示步长或增量;xn为结束值。如果step值缺省,则步长默认为1。例如,
>>C=0:2:10
C=
0 2 4 6 8 10
>>D=0:10
D=
0 1 2 3 4 5 6 7 8 9 10
在连续时间信号和离散时间信号的表示过程中,我们经常要用到冒号表达式。例如,对于1
≤t范围内的连续信号,可用冒号表达式“t=0:0.001:1;”来近似表达该区间,此时,0≤
向量t表示该区间以0.001为间隔的1001个点。
如果一个向量或一个标量与一个数进行运算,即“+”、“-”、“*”、“/”、以及“^”运算,则运算结果是将该向量的每一个元素与这个数逐一进行相应的运算所得到的新的向量。例如,
>>C=0:2:10;
>>E=C/4
E=
0 0.5000 1.0000 1.5000 2.0000 2.5000
其中,第一行语句结束的分号是为了不显示C的结果;第二句没有分号则显示出E的结果。
一个向量中元素的个数可以通过命令“length”获得,例如,
>>t=0:0.001:1;
>>L=length(t)
L=
1001
(3)矩阵运算
MA TLAB又称矩阵实验室,因此,MA TLAB中矩阵的表示十分方便。例如,输入矩阵
???
?
?
?????3332
31
232221131211在MA
TLAB 命令窗口中可输入下列命令得到,即 >>a=[11 12 13;21 22 23;31 32 33] a=
11 12 13 21 22 23 31 32 33
其中,命令中整个矩阵用括号“[ ]”括起来;矩阵每一行的各个元素必须用逗号“,”或空格分开;矩阵的不同行之间必须用分号“;”或者按Enter 键分开。
在矩阵的加减运算中,矩阵维数相同才能实行加减运算。矩阵的加法或减法运算是将矩阵的对应元素分别进行加法或减法运算。在矩阵的乘法运算中,要求两矩阵必须维数相容,
即第一个矩阵的列数必须等于第二个矩阵的行数。例如,
>>a=[1 2 3;4 5 6] a=
1 2 3 4 5 6 >>b=[1 2; 3 4;5 6] b= 1 2 3 4 5 6 >>c=a*b c=
22 28 49 64
MA TLAB 中矩阵的点运算指维数相同的矩阵位置对应元素进行的算术运算,标量常数可以和矩阵进行任何点运算。常用的点运算包括“.*”、“./”、“.\”、“.^”等。矩阵的加法和减法是在对应元素之间进行的,所以不存在点加法或点减法。
点乘运算,又称Hadamard 乘积,是指两维数相同的矩阵或向量对应元素相乘,表示为C=A.*B 。点除运算是指两维数相同的矩阵或向量中各元素独立的除运算,包括点右除和点左除。其中,点右除表示为C =A./B ,意思是A 对应元素除以B 对应元素;点左除表示为C =A.\B ,意思是B 对应元素除以A 对应元素。点幂运算指两维数相同的矩阵或向量各元素独立的幂运算,表达式为C =A.^B 。
【实例1-1】 已知t 为一向量,用MA TLAB 命令计算1
)cos(5
)sin(2
2+++=-t t e
t y t
在10≤≤t 区
间上对应的值。
解:表达式中的运算都是点运算,MA TLAB 源程序为
>>t=0:0.01:1;
>>y=(sin(t).*exp(-2*t)+5)./(cos(t)+t.^2+1); >>plot(t,y),xlabel('t'),ylabel('y')
这里,我们未将y向量的结果显示出来,而是利用plot命令将结果绘出图形来,如图1-2所示。
图1-2 实例1-1的结果
2. MATLAB软件的符号运算
MA TLAB符号运算工具箱提供的函数命令是专门研究符号运算功能的。符号运算是指符号之间的运算,其运算结果仍以标准的符号形式表达。符号运算是MA TLAB的一个极其重要的组成部分,符号表示的解析式比数值解具有更好的通用性。在使用符号运算之前必须定义符号变量,并创建符号表达式。定义符号变量的语句格式为
syms 变量名
其中,各个变量名须用空格隔开。例如,定义x、y、z三个符号变量的语句格式为>>syms x y z
我们可以用whos命令来查看所定义的符号变量,即
>>clear
>>syms x y z
>>whos
Name Size Bytes Class
x 1x1 126 sym object
y 1x1 126 sym object
z 1x1 126 sym object
Grand total is 6 elements using 378 bytes
可见,变量x、y、z必须通过符号对象定义,即sym object,才能参与符号运算。
另一种定义符号变量的语句格式为
sym('变量名')
例如,x、y、z三个符号变量定义的语句格式为
>>x=sym('x');
>>y=sym('y');
>>z=sym('z');
sym语句还可以用来定义符号表达式,语句格式为
sym('表达式')
例如,定义表达式x+1为符号表达式对象,语句为
>>sym('x+1');
另一种创建符号表达式的方法是先定义符号变量,然后直接写出符号表达式。例如,在MA TLAB 中创建符号表达式1
)cos(5
)sin(2
2+++=
-t t e
t y t
,其MA TLAB 源程序为
>>syms t
>>y=(sin(t).*exp(-2*t)+5)./(cos(t)+t.^2+1) y=
(sin(t)*exp(-2*t)+5)/(cos(t)+t^2+1)
例如,符号算术运算的MA TLAB 源程序为
>>clear >>syms a b >>f1=1/(a+1); >>f2=2*a/(a+b); >>f3=(a+1)*(b-1)* (a-b); >>f1+f2 ans=
1/(a+1)+2*a/(a+b) >>f1*f3 ans=
(b-1)*(a-b) >>f1/f3 ans=
1/(a+1)^2/(b-1)/(a-b)
在符号运算中,可以用“simple ”或者“simplify ”函数来化简运算结果,例如,
>>syms x >>f1=sin(x)^2; >>f2=cos(x)^2; >>y=f1+f2 y=
sin(x)^2+cos(x)^2 >>y=simplify(y) y= 1
1.2.3 MATLAB 软件简单二维图形绘制
MA TLAB 的plot 命令是绘制二维曲线的基本函数,它为数据的可视化提供了方便的途径。例如,函数)(x f y =关于变量x 的曲线绘制的语句格式为
>>plot(x,y)
其中,输出以向量x 为横坐标,向量y 为纵坐标,且按照向量x 、y 中元素的排列顺序有序绘制图形。但向量x 与y 必须拥有相同的长度。
绘制多幅图形的语句格式为
>>plot(x1,y1,'str1',x2,y2,'str2',...)
其中,用str1制定的方式,输出以x1为横坐标、y1为纵坐标的图形。用str2制定的方式,输出以x2为横坐标、y2为纵坐标的图形。若省略str ,则MA TLAB 自动为每条曲线选择颜色与线型。
图形完成后,可以通过几个命令来调整显示结果。如grid on 用来显示格线;axis([xmin,xmax,ymin,ymax])函数调整坐标轴的显示范围。其中,括号内的“,”可用空格代替;xlabel 和ylabel 命令可为横坐标和纵坐标加标注,标注的字符串必须用单引号引起来;title 命令可在图形顶部加注标题。
【实例1-2】 用MA TLAB 命令绘制函数2
)cos(1)10sin(++=t t y ππ的波形图。
解:MA TLAB 源程序为
>>t=0:0.01:5;
>>y=sin(5*pi*t)+1./(cos(pi*t)+2); >>plot(t,y) >>axis([0,5,-1 2,5]) >>xlabel('t'),ylabel('y'), >>grid on
程序运行结果如图1-3所示。
用subplot 命令可在一个图形窗口中按照规定的排列方式同时显示多个图形,方便图形的比较。其语句格式为
>>subplot(m,n,p)
或者
>>subplot(mnp)
其中,m 和n 表示在一个图形窗口中显示m 行n 列个图像,p 表示第p 个图像区域,即在第p 个区域作图。例如,比较正弦信号相位差的MA TLAB 源程序为
>>t=0:0.01:3; >>y1=sin(2*pi*t); >>y2=sin(2*pi*t+pi/6); >>subplot(211),plot(t,y1)
>>xlabel('t'),ylabel('y1'),title('y1=sin(2*pi*t)') >>subplot(212),plot(t,y2)
>>xlabel('t'),ylabel('y2'),title('y2=sin(2*pi*t+pi/6)')
程序运行结果如图1-4所示。
图1-3 实例1-2的函数波形图
除了plot 命令外,MA TLAB 提供了ezplot 命令绘制符号表达式的曲线,其语句格式为
>>ezplot(y, [a,b])
其中,[a ,b]参数表示符号表达式的自变量取值范围,默认值为]2,0[π。
【实例1-3】 利用MA TLAB 的ezplot 命令绘出函数9664162++-=x x y 的波形图。 解:MA TLAB 源程序为
>>syms x
>>y='-16*x^2+64*x+96'; >>ezplot(y,[0,5]) >>xlabel('t'),ylabel('y'), >>grid on
程序运行结果如图1-5所示。
在绘图过程中,我们可利用“hold on ”命令来保持当前图形,继续在当前图形状态下绘制其他图形,即可在同一窗口下绘制多幅图形。“hold off ”命令用来释放当前图形窗口,绘制下一幅图形作为当前图形。
图1-4 正弦信号相位差比较
图
1-5 实例1-3的函数波形图
1.2.4 M文件
MA TLAB是解释型语言,也就是说在MA TLAB命令行中输入的命令在当前MA TLAB 进程中被解释运行,无需编译和链接等。MA TLAB文件分为两类:M脚本文件(M-Script)和M函数(M-function),它们均为由ASCII码构成的文件,该文件可直接在文本编辑器中编写,称为M文件,保存的文件扩展名是.m。
M脚本文件包含一族由MA TLAB语言所支持的语句,并保存为M文件。它类似于DOS 下的批处理文件,不需要在其中输入参数,也不需要给出输出变量来接受处理结果。脚本仅是若干命令或函数的集合,用于执行特定的功能。其执行方式很简单,用户只需在MA TLAB 的提示符>>下键入该M文件的文件名,这样MA TLAB就会自动执行该M文件中的各条语句,并将结果直接返回到MA TLAB工作空间中。脚本M文件实际上是一系列MA TLAB命令的集合,它的作用与在MA TLAB命令窗口输入的一系列命令等效。
M函数文件不同于M脚本文件,是一种封装结构,通过外界提供输入量而得到函数文件的输出结果。函数是接受入口参数返回出口参数的M文件,程序在自己的工作空间中操作变量,与工作空间分开,无法访问。M函数文件和M脚本文件都是在编辑器中生成,通常以关键字function引导“函数声明行”,并罗列出函数与外界联系的全部“标称”输入输出宗量。它的一般形式为
fun ction [output 1, output 2,…] = functionname(input1, input2,…)
%[output 1, output 2,…] = functionname(input1, input2,…) Functionname
%Some comments that explain what the function does go here.
MA TLAB command 1;
MA TLAB command 2;
MA TLAB command 3;
……
该函数的M文件名是functionname.m,在MA TLAB命令窗口中可被其他M文件调用,例如,
>> [output1, output2] = functionname(input1, input2)
注意,MA TLAB忽略了“%”后面的所有文字,因此,可以利用该符号写注释。以“;”结束一行可以停止输出打印,在一行的最后输入“…”可以续行,以便在下一行继续输入指令。M函数格式是MA TLAB程序设计的主流,在一般情况下,不建议使用M脚本文件格式编程。
1.2.5 MATLAB程序流程控制
MA TLAB与其他高级编程语言一样,是一种结构化的编程语言。MA TLAB程序流程控制结构一般可分为顺序结构、循环结构、以及条件分支结构。MA TLAB中实现顺序结构的方法非常简单,只需将程序语句按顺序排列即可。在MA TLAB中,循环结构可以由for语句循环结构和while语句循环结构两种方式来实现。条件分支结构可以由if语句分支结构和switch语句分支结构两种方式来实现。下面我们主要介绍这几种程序流程控制。
1. for循环结构
for循环结构用于在一定条件下多次循环执行处理某段指令,其语法格式为
for 循环变量=初值:增量:终值
循环体
end
循环变量一般被定义为一个向量,这样循环变量从初值开始,循环体中的语句每被执行一次,变量值就增加一个增量,直到变量等于终值为止。增量可以根据需要设定,默认时为1。end代表循环体的结束部分。
例如,用for循环结构求1+2+3+…100的和,其MA TLAB源程序为
>>sum=0;
>>for i=1:100
sum=sum+i;
end
>>sumsum=
5050
2. while循环结构
while循环结构也用于循环执行处理某段指令,但是与for循环结构不同的是在执行循环体之前先要判断循环执行的条件是否成立,即逻辑表达式为“真”还是“假”,如果条件成立,则执行;如果条件不成立,则终止循环。其语法格式为
while 逻辑表达式
循环体
end
例如,用while循环结构求1+2+3+…100的和,其MA TLAB源程序为
>>sum=0;i=0;
>>while i<100
i=i+1;
sum=sum+i;
end
>>sum
sum=
5050
从上述MA TLAB源程序可以看出,while循环结构是通过判断逻辑表达式i<100是否为“真”,而决定是否执行循环体。
3. if分支结构
if条件分支结构是通过判断逻辑表达式是否成立来决定是否执行制定的程序模块。其语法格式有两种,一种是单分支结构;另一种为多分支结构。其中,单分支结构语法格式为if 逻辑表达式
程序模块
end
单分支结构语法格式的含义是,如果逻辑表达式为“真”,则执行程序模块,否则跳过该分支结构,按顺序结构执行下面的程序。
多分支结构的语法格式为
if 逻辑表达式1
程序模块1
else if 逻辑表达式2 (可选)
程序模块2
……
else
程序模块n
end
多分支结构语法格式可理解为:首先判断if条件分支结构中的逻辑表达式1是否成立,如果成立则执行程序模块1;否则继续判断else if条件分支结构中的逻辑表达式2,如果成立则执行程序模块2;依次下去,如果结构中所有条件都不成立,则执行程序模块n。
例如,用if条件分支结构可实现百分制考试分数分级,其MA TLAB源程序为
>>s=input('输入score= '); %屏幕提示输入x=,由键盘输入值赋给x
>>if s>=90
rank='A'
elseif s>=80
rank='B'
elseif s>=70
rank='C'
elseif s>=60
rank='D'
else
rank='E'
end
4. switch分支结构
switch分支结构是根据表达式的取值结果不同来选择执行的程序模块,其语法格式为switch 表达式
case 常量1
程序模块1
case 常量2
程序模块2
……
otherwise
程序模块n
end
其中,switch后面的表达式可以是任何类型,如数字、字符串等。当表达式的值与case后面的常量相等时,就执行对应的程序模块;如果所有常量都与表达式的值不等时,则执行otherwise后面的程序模块。
例如,用switch分支结构也可实现百分制考试分数分级,其MA TLAB源程序为
>>s=input('输入score= ');
>>switch fix(s/10) %利用fix函数舍去小数部分取最近整数
case {10,9}
rank='A'
case 8
rank='B'
case 7
rank='C'
case 6
rank='D'
otherwise
rank='E'
end
除了上述介绍的几种程序流程控制结构外,MA TLAB为实现交互控制程序流程还提供了continue、break、pause、input、error、disp等命令。读者可通过doc或者help命令查看它们的具体使用。
第2章 离散时间信号的表示及运算
2.1 实验目的
● 学会运用MA TLAB 表示的常用离散时间信号; ●
学会运用MA TLAB 实现离散时间信号的基本运算。
2.2 实验原理及实例分析
2.2.1 离散时间信号在MATLAB 中的表示
离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。离散序列通常用)(n x 来表示,自变量必须是整数。
离散时间信号的波形绘制在MA TLAB 中一般用stem 函数。stem 函数的基本用法和plot 函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。如果要实心,需使用参数“fill ”、“filled ”,或者参数“.”。由于MA TLAB 中矩阵元素的个数有限,所以MA TLAB
只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。类似于连续时间信号,离散时间信号也有一些典型的离散时间信号。
1. 单位取样序列
单位取样序列)(n δ,也称为单位冲激序列,定义为
)
0()0(0
1
)(≠=??
?=n n n δ(12-1)
要注意,单位冲激序列不是单位冲激函数的简单离散抽样,它在n =0处是取确定的值1。在MA TLAB 中,冲激序列可以通过编写以下的impDT .m 文件来实现,即
function y=impDT(n)
y=(n==0); %当参数为0时冲激为1,否则为0
调用该函数时n 必须为整数或整数向量。
【实例2-1】利用MA TLAB 的impDT 函数绘出单位冲激序列的波形图。 解:MA TLAB 源程序为
>>n=-3:3; >>x=impDT(n);
>>stem(n,x,'fill'),xlabel('n'),grid on >>title('单位冲激序列') >>axis([-3 3 -0.1 1.1])
程序运行结果如图12-1所示。
2. 单位阶跃序列
单位阶跃序列)(n u 定义为
)
0()0(0
1
)(<≥??
?=n n n u (12-2)
在MA TLAB 中,冲激序列可以通过编写uDT .m 文件来实现,即
function y=uDT(n)
y=n>=0; %当参数为非负时输出1
调用该函数时n 也同样必须为整数或整数向量。
【实例2-2】利用MA TLAB 的uDT 函数绘出单位阶跃序列的波形图。 解:MA TLAB 源程序为
>>n=-3:5; >>x=uDT(n);
>>stem(n,x,'fill'),xlabel('n'),grid on >>title('单位阶跃序列') >>axis([-3 5 -0.1 1.1])
程序运行结果如图12-2所示。
图2-1 单位冲激序列
图2-2 单位阶跃序列
3. 矩形序列
矩形序列)(n R N 定义为
)
,0()10(0
1
)(N n n N n n R N ≥<-≤≤??
?=(12-3)
矩形序列有一个重要的参数,就是序列宽度N 。)(n R N 与)(n u 之间的关系为
)()()(N n u n u n R N --=
因此,用MA TLAB 表示矩形序列可利用上面所讲的uDT 函数。
【实例2-3】利用MA TLAB 命令绘出矩形序列)(5n R 的波形图。 解:MA TLAB 源程序为
>>n=-3:8;
>>x=uDT(n)-uDT(n-5);
>>stem(n,x,'fill'),xlabel('n'),grid on >>title('矩形序列') >>axis([-3 8 -0.1 1.1])
程序运行结果如图2-3所示。
4. 单边指数序列
单边指数序列定义为
)()(n u a n x n
=(12-4)
【实例2-4】试用MA TLAB 命令分别绘制单边指数序列)(2.1)(1n u n x n
=、
)()2.1()(2n u n x n
-=、)()8.0()(3n u n x n
=、)()8.0()(4n u n x n
-=的波形图。
解:MA TLAB 源程序为
图2-3 矩形序列
>>n=0:10;
>>a1=1.2;a2=-1.2;a3=0.8;a4=-0.8; >>x1=a1.^n;x2=a2.^n;x3=a3.^n;x4=a4.^n; >>subplot(221)
>>stem(n,x1,'fill'),grid on >>xlabel('n'),title('x(n)=1.2^{n}') >>subplot(222)
>>stem(n,x2,'fill'),grid on
>>xlabel('n'),title('x(n)=(-1.2)^{n}') >>subplot(223)
>>stem(n,x3,'fill'),grid on >>xlabel('n'),title('x(n)=0.8^{n}') >>subplot(224)
>>stem(n,x4,'fill'),grid on
>>xlabel('n'),title('x(n)=(-0.8)^{n}')
单边指数序列n 的取值范围为0≥n 。程序运行结果如图12-4所示。从图可知,当1||>a 时,
单边指数序列发散;当1||a 时,该序列均取正值;当0 5. 正弦序列 正弦序列定义为 )sin()(0?ω+=n n x (12-5) 图2-4 单边指数序列 其中,0ω是正弦序列的数字域频率;?为初相。与连续的正弦信号不同,正弦序列的自变量n 必须为整数。可以证明,只有当 2ωπ 为有理数时,正弦序列具有周期性。 【实例2-5】试用MA TLAB 命令绘制正弦序列)6 sin()(πn n x =的波形图。 解:MA TLAB 源程序为 >>n=0:39; >>x=sin(pi/6*n); >>stem(n,x,'fill'),xlabel('n'),grid on >>title('正弦序列') >>axis([0,40,-1.5,1.5]); 程序运行结果如图2-5所示。 6. 复指数序列 复指数序列定义为 n j a e n x )(0)(ω+=(2-6) 当0=a 时,得到虚指数序列n j e n x 0 )(ω=,式中0ω是正弦序列的数字域频率。由欧拉公式 知,复指数序列可进一步表示为 )]sin()[cos()(00)(00ωωωωn j n e e e e n x an n j an n j a +===+(2-7) 与连续复指数信号一样,我们将复指数序列实部和虚部的波形分开讨论,得出如下结论: (1)当0>a 时,复指数序列)(n x 的实部和虚部分别是按指数规律增长的正弦振荡序列;