基于MATLAB的离散信号与系统分析毕业论文 下载本文

湖北工业大学商贸学院毕业设计

而必须用向量表示的方法,即在MATLAB中离散序列的相加、相乘需表示成两个向量的相加、相乘,因而参加运算的两序列向量必须具有相同的维数。

下面是实现离散序列相加、相乘的实用子程序及实例。实现离散序列相加及其结果可视化的子函数如下,在该函数中,将要进行相加运算的二序列向量f1、f2通过补零的方式成为同维数的二序列向量s1、s2,因而在调用该函数时,要进行相加运算的二序列向量维数可以不同:

function?f,k??lsxj?f1,f2,k1,k2? %实现

f?k??f1?k??f2?k?,f1,f2,k1,k2是参加运算的二离散序列及其对应的时间序列向量,f和k为返回的和序列及其对应的时间序列向量

k?min?min?k1?,min?k2??:max?max?k1?,max?k2??; %构造和序列的长度 s1?zeros?1,length?k??;s2?s1; %初始化新向量

s1find?k??min?k1??&?k??max?k1????1?f1; %将f1中在和序列范围内但又无

定义的点赋值为零

????s2find?k??min?k2??&?k??max?k2????1?f2; %将f2中在和序列范围内但又无

定义的点赋值为零

f?s1?s2; %两长度相等序列求和

????stem?k,f,'filled'? axis([(min(min?k1?,

min?k2?)?1),max?max?k1?,max?k2???1,

???min?f??0.5?,?max?f??0.5?]) %坐标轴显示范围

2.3 离散时间序列及MATLAB的实现

2.3.1 正弦序列

离散时间正弦序列的表达式为:f(k)?Acos(kw??):式中k为无量纲的整数,w和j以弧度为单位,w称为离散正弦序列的数字角频率,j为初相位。

需要注意的是,并非所有的离散时间正弦序列都是周期的。这是因为离散时间信号的自变量和周期序列的周期都必须是整数,在正弦序列中并非对任意w都能找到正整数的周期N。现在我们就来讨论正弦序列为周期序列的条件。

6

湖北工业大学商贸学院毕业设计

设f(k)?rkejwk 是周期序列,且周期为N,则有:

coswk?cosw?k?N??cos(wk?wN) (2-5)

要使上式对所有的w都成立,则w 必须为2?的整数倍,即:

Nw?2m?,或2?/w?N/ m,m为整数

可见只有当2?/w为一有理数时,title?'cos?2*k?'?才具有周期性,且周期为2m?/w。 下面我们通过一个实例来说明上述理论结果。

试用 MATLAB画出正弦序列f1(k)?cos(k?/8),f2(k)?cos(2k)的时域波形,观察它们的周期性,并验证是否与理论分析结果相符。

?2??16,,故该序列是周期序列,且周期为16。 解:对序列f1(k),其角频率w?,8w2???(无理数),故该序列是非周期序列。 对序列f2(k),其角频率w?2,w下面我们用 MATLAB 将上述序列的时域波形绘制出来。对应的MATLAB命令如下:

k?0:40;

subplot?2,1,1?

stem?k,cos?k*pi/8?,'filled'? title?'cos?k*pi/8?'? subplot?2,1,2?

stem?k,cos?2*k?,'filled'? title?'cos?2*k?'?

绘制的序列波形如图2—1所示。

cos(k*pi/8)10-110-101020cos(2*k)3040010203040

图2—1不同频率的正弦序列

7

湖北工业大学商贸学院毕业设计

由绘制的序列波形图,我们可以明显看出,序列f1(k)为周期序列,而f2(k)为非周期序列。

2.3.2 离散时间实指数序列

离散时间实指数序列的一般形式为: f(k)?cak,其中c和a为实常数。我们可以用 MATLAB编写绘制离散时间实指数序列波形的函数如下:

function dszsu?c,a,k1,k2? %c:指数序列的幅度

%a:指数序列的底数 %k1:绘制序列的起始序号 %k2:绘制序列的终止序号

k?k1:k2;

x?c*(ak);

stem?k,x,'filled'?

hold on 2?/w hold off

下面我们通过一个实例来说明上述理论结果:

53用MATLAB画出序列f1(k)?()k?(k), f2(k)?(?)k?(k)的时域波形,观察两序列的

44时域特性。

解:我们可调用前述的disso 函数来解决此问题,对应的MATLAB 命令为:

dszsu?1,5/4,0,40? xlabel?'k'? title?'f1?k?'? dszsu?1,?3/4,0,40? xlabel?'k'? title?'f2?k?'?

绘制的离散实指数序列波形如图2—2所示。

8

湖北工业大学商贸学院毕业设计

图2—2不同底数的实指数序列

由程序绘制的序列波形图我们可以看出,对离散时间实指数序列f(k)?cak,当a的绝对值大于1 时,序列为随时间发散的序列,当a 的绝对值小于1 时,序列为随时间收敛的序列。

2.3.3 离散时间虚指数序列

离散时间虚指数序列的一般形式为:f(k)?ejwk;其中w为角频率,根据欧拉公式有:

f(k)?ejwk?coswk?jsinwk (2-6) 可见,离散虚指数序列的实部和虚部均是等幅的正弦序列。通过前面的分析可得,虚指数序列的实部和虚部也只有在满足一定的条件时才具有周期性,即当2?/w为有理数时离散虚指数序列才具有周期性(周期N?2m?/w,N/m是最简分数)。

绘制虚指数序列时域波形的MATLAB函数如下:

function[]?dxzsu?n1,n2,w? %n1:绘制波形的虚指数序列的起始时间序号

%n2:绘制波形的虚指数序列的终止时间序号 %w:虚指数序列的角频率

k?n1:n2;

f?exp?i*w*k?; Xr?real?f? Xi?imag?f? Xa?abs?f? Xn?angle?f?

subplot?2,2,1?, stem?k,Xr,'filled'?,title('实部'); subplot?2,2,3?, stem?k,Xi,'filled'?,title('虚部');

9