2.3 离散序列的基本运算
数字信号处理的目的,是从一个或多个给定的离散信号中,产生一个具有我们所需性质的信号。处理算法由加法、标量乘法、时间反转、延时和乘法等基本运算组合而成。我们通过简单的实验来说明这些运算的应用。
1.序列加法
两个离散序列相加是指两个序列中相同序号n的序列值逐项对应相加,构成一个新的序列:x(n)= x1(n)+x2(n)。
这样就有如下两种情况。
情况1 参加运算的两个序列具有相同的维数。
例2.7 求x(n)= δ(n-2)+δ(n-4)(0<n<10)。
运行结果如图2-7所示。
图2-7 相同维数的序列加法
情况2 参加运算的两个序列具有不同的维数。
例2.8 已知
x1(n)= u(n+2)(-4<n<6), x2(n)= u(n-4)(-5<n<8),求x(n)= x1(n)+x2(n)。
要求上述两个序列之和,必须对长度较短的序列补零,同时保持位置一一对应。程序如下:
运行结果如图2-8所示。
图2-8 不同维数的序列加法
2.序列移位
可按下式将一个离散信号序列进行移位,形成新的序列:
x1(n)= x(n-m),
当m>0时,原序列x(n)向右移动m位,形成的新序列称为x(n)的延时序列;当m<0时,原序列x(n)向左移动m位,形成的新序列称为x(n)的超前序列。
例2.9 求
x1(n)= u(n+5) (-10<n<10),
x2(n)= u(n-5) (-10<n<10),
并比较它们与u(n)的关系。
程序如下:
运行结果如图2-9所示。
图2-9 序列移位
3.序列乘法
与离散序列加法有所不同,这里参加运算的两个序列向量必须具有相同的维数。如果相乘的两个向量长度不相同,则可以通过对较短序列中无定义的点赋值为零进行零追加(补零)操作使得两者的长度相同,为此先要编写一个函数,如:
例2.10 用上面的程序求离散序列f1(k)=(-2,-2, 0, 1, 2),f2(k)=(1, 1, 1)相乘的波形。
运行结果如图2-10所示。
图2-10 两个离散序列之积
4.序列反折
离散序列反折是指离散序列的两个向量以零时刻的取值为基准点,以纵轴为对称轴反折,在MATLAB中提供了fliplr函数可以对时间序列进行反折操作。
例2.11 已知一个信号
x(n)= e-0.5n (-4<n<4),
求它的反折序列x(-n)。
程序如下:
运行结果如图2-11所示。
图2-11 序列反折
5.信号平滑
数字信号处理应用的一个常见例子是从被噪音“污染”的信号中移除噪声。假定信号s[n]被噪声d[n]所污染,得到一个含有噪声的信号
x[n]= s[n]+d[n] ,
我们的目的是对x[n]进行运算,产生一个合理逼近s[n]的信号y[n] 。通常对样本在时刻n附近的抽样值求平均值,从而产生输出信号,这是一种简单而有效的方法。
例2.12 采用三点滑动求平均的算法
y[n]=(x[n-1]+x[n]+x[n+1])/3
实现上述目的。
图2-12 通过滑动平均的信号平滑
6.复杂信号的产生
更复杂的信号可通过对简单信号进行较为复杂的运算来产生。例如,振幅调制信号可用低频调制信号xL = cos(wLn)来调制高频信号xH[n]= cos(wHn),得到的信号为
y[n]= A(1+m* xL[n])xH[n]= A(1+m* cos(wLn))cos(wHn)其中m称为调制指数,用来确保1+m* xL[n]在可能的n的情况下都是整数。
例2.13 下面的程序可以用来产生一个振幅调制信号。
运行结果如图2-13所示。
图2-13 振幅调制信号
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。