数字信号处理与DSP实现技术
上QQ阅读APP看书,第一时间看更新

2.1 离散时间信号-序列

2.1.1 序列

离散时间信号又称作序列(Sequence)。在物理上是指定义在离散时间上的信号取样值的集合,在数学上可用时间序列 {xn)}来表示。xn)代表序列的第n个样点的取值,n代表时间的序号且为整数(-∞<n<∞),非整数点无定义或无意义。

对于抽样信号可以表示为{xanT)},T为抽样间隔时间。一般来讲,抽样时间间隔T固定,则抽样值表现为时间间隔序号的序列。所以也通常将T 去掉,而用 {xn)}来表示。

2.1.2 序列的时域表示

1.枚举表示

枚举表示指把序列的全部取值一一列出在序列的集合中,并标注时间零点位置。如

其中箭头处表示对应n=0 时刻的抽样值,即x(0)=3.45,则x(-1)=-6.7,x(-2)=-1.2,…;x(1)=0.7,x(2)=8,x(3)=5.3,…

2.公式表示

公式表示是指把序列的第n个取值xn)用通用的函数公式表示。例如

其中n取整数。xn)的全部用集合{xn)}或用xn)表示。

3.图形表示

图形表示是指把序列的取值与离散时间变量n之间的关系用图形表示出来。例如序列,用图形表示则如图2-1 所示。

图 2-1 序列的图形表示

对于式(2.1)表示的序列,当ω=8π时,则对应为xn)=sin8πn,0≤n≤100,图形表示如图2-2 所示。

图 2-2 序列xn)= sin8πn,-∞ <n< ∞ 的图形

对于式(2.2)表示的序列,当a=2,b=3 时,则对应为,图形表示如图2-3 所示。

图 2-3 序列的图形

2.1.3 序列的运算

序列的运算是序列的基本操作。通过序列的运算,可以产生新的序列。

1.序列的加、减运算

序列的加、减运算指将两序列x1n)和x2n)序号n相同的数值相加或相减,得到新序列,表示为

其中的操作符号“±”是当进行相加运算时取“+”,相减运算时取“-”。其中yn)值为当n取相同值时的x1n)和x2n)值的加或减运算结果值。

【例21】已知两个序列xn)、yn)如图24(a)、(b)所示,求zn)=xn)+yn)。

图 2-4 序列的相加运算

解:根据序列加法的定义,得

用MATLAB实现该过程的程序如下:

n=-4:4;

x=[-3 -3 -2 -10123 3];

y=[221.510 -1 -1.5 -2 -2];

z=x+y;%序列相加subplot(311);stem(n,x);ylabel(ˈx(n)ˈ);xlabel(ˈ(a)ˈ);grid on;

subplot(312);stem(n,y);ylabel(ˈy(n)ˈ);xlabel(ˈ(b)ˈ);grid on;

subplot(313);stem(n,z);ylabel(ˈz(n)ˈ);xlabel(ˈ(c)ˈ);grid on;

得到序列zn)如图2-4(c)所示。

2.序列的乘积运算

序列的乘积指将两序列x1n)和x2n)序号相同的数值相乘积,表示为

其中“·”表示乘积运算。

【例2-2】已知两个序列xn)、yn)如图2-5(a)、(b),求zn)=xn)·yn)。

图 2-5 序列的乘积运算

解:根据序列乘积的定义,得

用MATLAB实现该运算的程序如下:

n=-4:4;

x=[-3 -3 -2 -10123 3];

y=[221.510 -1 -1.5 -2 -2];

z=x.∗y;%序列相乘

subplot(311);stem(n,x);ylabel(ˈx(n)ˈ);xlabel(ˈ(a)ˈ);grid on;

subplot(312);stem(n,y);ylabel(ˈy(n)ˈ);xlabel(ˈ(b)ˈ);grid on;

subplot(313);stem(n,z);ylabel(ˈz(n)ˈ);xlabel(ˈ(c)ˈ);grid on;

得到序列zn)如图2-5(c)所示。

3.序列的时延

序列的时延是将序列的全体在时间轴上进行向右移。可以表示为

其中n0>0 表示延时数。

【例2-3】已知序列xn)如图2-6(a),求序列yn)=xn-2)。

图 2-6 序列的时延

解:根据序列乘积的定义,采用MATLAB实现该运算的程序如下:

x=[3,11,7,0,-1,4,2];

nx=[-3:3];

[y,ny]=sigshift(x,nx,-2);%调用移位函数实现延时subplot(211);stem(nx,x);ylabel(ˈx(n)ˈ);xlabel(ˈ(a)ˈ);grid on;

subplot(212);stem(ny,y);ylabel(ˈy(n)ˈ);xlabel(ˈ(b)ˈ);grid on;

其中移位函数 sigshift为

function[y,ny]=sigshift(x,nx,n0)

ny=nx+n0;

y=x;

得到序列yn)如图2-6(b)所示。

4.序列乘常数

序列乘常数可以表示为

即将原序列的幅度放大k倍后产生新序列。

5.序列反褶

序列反褶是指将序列以n=0 为对称轴进行对褶,序列反褶表示为

【例2-4】已知序列xn)如图2-7(a)所示,求序列yn)=x(-n)。

图 2-7 序列的反褶

解:采用MATLAB提供的左右反褶的函数fliplr来完成该题,MATLAB程序如下:

x=[3,11,7,0,-1,4,2];

y=fliplr(x);%调用函数fliplr

subplot(211);stem(nx,x);ylabel(ˈx(n)ˈ);xlabel(ˈ(a)ˈ);grid on;

subplot(212);stem(ny,y);ylabel(ˈy(n)ˈ);xlabel(ˈ(b)ˈ);grid on;

得到序列yn)如图2-7(b)所示。

6.序列的差分运算

序列的差分运算是指同一序列相邻的两个样点之差,分前向差分和后向差分

7.序列的抽取与插值(尺度变换)

抽取:将原来序列每M个抽取一个点组成新序列。公式为yn)=xnM)。

插值:将原来的序列每个序列点之间插入L个样点,形成新序列yn)=xn/L)。

例如,M=2,x(2n)相当于两个点取一点;以此类推。

例如,L=2,xn/2)相当于两个点之间插一个点;以此类推。通常,插值用L 倍表示,即插入(L-1)个值。

8.序列的移位

序列的位移可表示为

m为正时,xn+m)表示将xn)依次向左移m位;当m为负数时,xn+m)表示将xn)向右移-m位(相当于时延-m位)。例如,已知

则求xn+1)就是将原序列xn)左移一位,所以有

比较可知,xn+1)是将xn)左移了一位。

注意:当m为正数时,x(-n+m)表示将序列x(-n)向右移位m位(相当于时延m位);当m为负数时,x(-n+m)表示将x(-n)向左移-m位。例如:已知

比较可知:x(1-n)是将x(-n)右移了一位。

9.累加

设某一序列为xn),则xn)的累加序列yn)定义为

即表示n以前的所有xn)的和。

10.卷积和(序列卷积)

(1)设序列xn),hn),它们的卷积和yn)定义为

(2)卷积和的性质

①交换律

②结合律

③对加法的分配律

(3)卷积和计算

根据式(2.11)可见,计算卷积和运算的每一个值yn),可采用以下四步来完成。

A.序列翻褶:用m代替n作为时间变量,求翻褶序列hm)⇒h(-m)。

B.序列移位:固定一个移位n值,求移位序列h(-m)⇒hnm)。

C.序列相乘:计算两个序列xm)和hnm)的乘积序列,即⇒xm)·hnm)。

D.序列累加:

改变n值,重复以上四步,就可以依次计算出卷积和序列yn)的各个值。

【例2-5】已知如图2-8 所示,求

图 2-8 已知序列

解:方法一(分步)

首先将离散时间变量nm代替。

(1)序列翻褶。以m=0 为对称轴,翻褶hm)得到h(-m),即得n=0 时h(-m)的移位序列h(0-m)=h(-m),对应序号相乘,相加得y(0),如图2-9(a)所示;

(2)h(-m)右移一个单元,即得n=1 时h(-m)的移位序列h(1-m),对应序号相乘,相加得y(1),如图2-9(b)所示;

(3)重复步骤(2),得y(2),y(3),y(4),y(5)。卷积和过程如图2-9 所示。

图 2-9 卷积和过程

卷积和计算结果如图2-10 所示。

图 2-10 卷积和计算结果

方法二(分段)

(1)当n<1 时,xm)与hnm)无相交,相乘处处为0,即:yn)=0,n< 1。

(2)当 1 ≤n≤3 时,xm)与hnm)有相交项,从m=1 到m=n,即

(3)当3 ≤n≤ 5 时,xm)与hnm)有相交项,从m=n-2 到m=3,即

(4)当n> 5 时,xm)与hnm)无相交项,即:yn)=0,n> 5。

方法三,用MATLAB实现

MATLAB实现的程序如下:

nx=0:3;%x序列时间范围

x=nx/2;

nh=[0,1,2];%h序列时间范围

h=[111];

subplot(3,1,1);stem(nx,x);ylabel(ˈx(n)ˈ);xlabel(ˈ(a)ˈ);

grid on;

subplot(3,1,2);stem(nh,h);ylabel(ˈh(n)ˈ);xlabel(ˈ(b)ˈ);

grid on;

nyb=nx(1)+nh(1);%卷积序列的起始位置

nye=nx(length(x))+nh(length(h));%卷积序列的结束位置

ny=[nyb:nye];%卷积序列的范围

y=conv(x,h);%求卷积

subplot(3,1,3);stem(ny,y);ylabel(ˈy(n)ˈ);xlabel(ˈ(c)ˈ);

grid on;

输出如图2-11 所示。

图 2-11 MATLAB程序计算卷积

定理:若两个序列都是有限长的序列,即:{xn),n=N1,…,N2},长度为N;{hn),n=M1,…,M2},长度为M,那么它们的卷积输出序列yn)=xn)∗hn)为:{yn),n=N 1 +M1,…,N 2 +M2},且卷积序列的长度为:L=M+N-1。

11.序列线性相关

(1)线性相关定义

设序列xn)和yn),它们的线性相关(互相关)序列定义如下。

xn)和yn)的线性互相关

yn)和xn)的线性互相关

其中m代表两个序列的相对位移。

(2)线性相关序列特点

①不满足交换律

②自相关

yn)=xn),则称xn)的(线性)自相关,即

n=0 时,有

称为信号的能量。

③线性相关与卷积的关系

(3)线性互相关的计算

计算步骤包括:移位、相乘、相加。

【例2-6】已知,计算xy 的线性互相关rxyyx的线性互相关ryx

解:

MATLAB程序如下:

nx=1:5;%x序列时间范围

x=1:5;

ny=[1,2,3];%y序列时间范围

y=[786];

subplot(4,1,1);stem(nx,x);ylabel(ˈx(n)ˈ);xlabel(ˈ(a)ˈ);

grid on;

subplot(4,1,2);stem(ny,y);ylabel(ˈy(n)ˈ);xlabel(ˈ(b)ˈ);

grid on;

nrl=2∗max(length(x),length(y))-1;%相关序列的长度

nr=[-(nrl-1)/2:(nrl-1)/2];%相关序列时间的范围

rxy=xcorr(x,y);%x与y相关

ryx=xcorr(y,x);%y与 x相关

subplot(4,1,3);stem(nr,rxy);ylabel(ˈrxy(n)ˈ);xlabel(ˈ(c)ˈ);

grid on;

subplot(4,1,4);stem(nr,ryx);ylabel(ˈryx(n)ˈ);xlabel(ˈ(d)ˈ);

grid on;

输出如图2-12 所示。

图 2-12 MATLAB程序计算相关

2.1.4 常用序列

1.单位取样序列

单位取样序列表示为

如图2-13(a)所示。

(1)单位取样序列的移位序列,当n0=2时图形如图2-13(b)所示。

图 2-13 单位取样序列及其移位序列

(2)xnδn)=x(0),xnδnn0)=xn0)。

2.单位阶跃序列un

单位阶跃序列表示为

其图形如图2-14 所示。

图 2-14 单位阶跃序列

(1)δn)=un)-un-1)。

3.矩形序列

矩形序列表示为

在 [0,N-1]区间的N 个值为1,其他整数点为0;RNn)=un)-unN),其波形如图2-15(c)所示。

图 2-15 序列δn),un),RNn)的波形

4.实指数序列

实指数序列表示为

【例2-7】xn)=0.9nn=0∶50。

解:用运算符“.^”来实现指数运算。

MATLAB程序如下:

n=0∶1∶50;%取序列显示范围

x=(0.9).^n;%指数运算

plot(n,x);

stem(n,x);

输出如图2-16 所示。

图 2-16 例 2-7的输出序列

5.复指数序列和正弦序列

复指数序列表示为

根据欧拉公式(Euler)ejθ=cosθ+j sinθ展开得到

则复指数序列可以分解为两个序列组成,其中实部序列:yn)=eσ n cos(ωn),虚部序列:zn)=eσ n sin(ωn)。

一般表达式如下

分别为正弦序列和余弦序列。

其中:A为幅度,ϕ为初相,单位为弧度(rad);ω为数字域频率,单位为弧度(rad)。

数字信号可以通过对模拟信号取样得到。设模拟信号为

其中取样周期为T,其中:Ω=2πf 为模拟域频率,单位为rad/s;则取样后信号为

与式(2.24)比较,得到

注意:

(1)ej ω n=ej(ω+2πmn,cos(ωn)=cos((ω+2πmn);但 ej Ω t ≠ ej(Ω+2πmt,cos(Ω t)=cos[(Ω+2πmt];即正弦序列和复指数序列对ω变化以 2π为周期。在数字域考虑问题时,取数字频率的主值区间:[-π,π]或[0,2π]。[-π,π]用于离散时间信号和系统的傅里叶变换(Fourier Transform,FT);[0,2π]用于离散傅里叶变换。

(2)当ω=0 时,cos(ωn)变化最慢(不变化);当ω=π时,cos(ωn)变化最快。故在DSP中,在主值区间上,将ω=0附近称为数字低频;而将ω=π附近称为数字高频。这一特点与模拟正弦信号 x at)=cos(Ωt)截然不同,模拟正弦信号中Ω越大,f 越大,cos(Ωt)变化越快。其原因是t连续取值,而n只取整数。

2.1.5 序列的周期性

对于序列xn),如果存在一个最小的正整数N,对所有的n都满足

则称序列xn)为周期序列,且周期为N。周期序列可以记为

对于σ=0 的复指数序列和正弦序列,有

(1)当= 整数时,序列为周期性的,且周期为,如

(2)当= 有理数时,序列为周期性的,且周期大于,如-N=14;

(3)当=无理数时,序列为非周期性的,如

【例2-8】判断以下序列是否为周期序列。若是周期序列,求其周期。

解:

(1)假设序列周期为N

周期存在即要下式成立

式(2.30)成立则,所以要求:N/8=2πkk=0,± 1,±2,…,从而得到N=1 6πkk=0,± 1,…。由于k 为整数,所以不存在最小正整数 N 能使式(2.30)成立。故序列不是周期序列。

(2)假设周期为N,则

周期存在则要求满足

要该式成立,则要求满足

也即要满足,取 140 和 220 的最小公倍数 1540 得到:N=154077 =20,其中k1 =11,k2 =7。序列xn)的周期为20。

MATLAB实现的程序如下:

n=1:80;

pi=3.1415926;

x=cos(11∗pi/10.∗n-pi/2)+2∗sin(7∗p.i ∗n);

stem(x);xlabel(ˈnˈ);ylabel(ˈx(n)ˈ);grid on;

输出序列xn)如图2-17 所示。从图可见序列周期的确为20。

图 2-17 周期序列

2.1.6 用单位取样序列表示任意序列

任意序列xn)都可用单位取样序列δn)表示成加权和的形式,即

证明:

因为

所以

由于任意序列皆可以表示成各延迟单位取样序列的幅度加权和,因此,讨论系统的特性时只需讨论系统在单位取样序列作用下的响应即可。

【例2-9】将序列表示成单位取样序列的加权和形式。

解:

【例2-10】已知序列,写出其单位取样序列的加权和形式。

解:

2.1.7 序列的能量与功率

序列能量定义

E <∞ 时,称xn)为能量有限信号。若序列的长度为有限长,只要信号的值xn)是有限值,信号的能量总是有限的。但当信号的长度为无限长时,即使xn)有界,信号的能量也不一定有限。

对于非周期序列xn),若序列为无限长,其平均功率为

当信号能量为有限时,称为能量信号。当信号平均功率为有限值时,称信号为功率信号。