一、实验目的
(1)进一步了解离散时间序列时域的基本运算。
(2)通过实验进一步理解卷积定理,了解卷积的过程。
(3)了解MATLAB语言进行离散序列运算的常用函数,掌握离散序列运算程序的编写方法。
二、实验涉及的MATLAB子函数
1.find
功能:寻找非零元素的索引号。
调用格式:find((n>=min(n1))&(n<=max(n1)));在符合关系运算条件的范围内寻找非零元素的索引号。
2.fliplr
功能:对矩阵行元素进行左右翻转。
调用格式:x1=fliplr(x);将x的行元素进行左右翻转,赋给变量x1。
3.conv
功能:进行两个序列间的卷积运算。
调用格式:y=conv(x,h);用于求取两个有限长序列x和h的卷积,y的长度取x、h长度之和减1。
例如,x(n)和h(n)的长度分别为M和N,则y=conv(x,h),y的长度为N+M-1。
使用注意事项:conv默认两个信号的时间序列从n=0开始,因此默认y对应的时间序号也从n=0开始。
4.sum
功能:求各元素之和。
调用格式:Z=sum(x);求各元素之和,常用于等宽数组求定积分
5.hold
功能:控制当前图形是否刷新的双向切换开关。
调用格式:
holdon;使当前轴及图形保持而不被刷新,准备接受此后将绘制的新曲线。
holdoff;使当前轴及图形不再具备不被刷新的性质。
6.pause
功能:暂停执行文件。
调用格式:
pause;暂停执行文件,等待用户按任意键继续。
pause(n);在继续执行之前,暂停n秒。
三、实验原理
离散序列的时域运算包括信号的相加、相乘,信号的时域变换包括信号的移位、反折、倒相及信号的尺度变换等。
在MATLAB中,离散序列的相加、相乘等运算是两个向量之间的运算,因此参加运算的两个序列向量必须具有相同的维数,否则应进行相应的处理。
下面用实例介绍各种离散序列的时域运算和时域变换的性质。
1.序列移位
将一个离散信号序列进行移位,形成新的序列:x1(n)=x(n-m)
当m>0时,原序列x(n)向右移m位,形成的新序列称为x(n)的延时序列;
当m<0时,原序列x(n)向左移m位,形成的新序列称为x(n)的超前序列。
实例:
代码:
%绘制u(n)、u(n+4)、u(n-4)
n1=-5;n2=5;
n=n1:n2;
x= n>=0;%于n0处产生冲激
subplot(3,1,1),stem(n,x,'filled');%绘制脉冲杆图,且圆点处用实心圆表示
axis([n1,n2,0,1.1*max(x)]) %确定横坐标和纵坐标的取值范围
title('u(n)')
xlabel('时间(n)');
ylabel('幅度x(n)');
x1= n>=-4;
subplot(3,1,2),stem(n,x1,'filled');%绘制脉冲杆图,且圆点处用实心圆表示
axis([n1,n2,0,1.1*max(x)]) %确定横坐标和纵坐标的取值范围
title('u(n+4)')
xlabel('时间(n)');
ylabel('幅度x(n)');
x2=n>=4;
subplot(3,1,3),stem(n,x2,'filled');%绘制脉冲杆图,且圆点处用实心圆表示
axis([n1,n2,0,1.1*max(x)]) %确定横坐标和纵坐标的取值范围
title('u(n-4)')
xlabel('时间(n)');
ylabel('幅度x(n)');
输出:
2.序列相加
两个离散序列相加是指两个序列中相同序号n(或同一时刻)的序列值逐项对应相加,构成一个新的序列:
情况1: 参加运算的两个序列具有相同的维数。
实例,求 (0< n <10)
代码:
n1=-5;n2=5;
n=n1:n2;
x= n==2;%于n0处产生冲激
subplot(3,1,1),stem(n,x,'filled');%绘制脉冲杆图,且圆点处用实心圆表示
axis([n1,n2,0,1.1*max(x)]) %确定横坐标和纵坐标的取值范围
title('u(n)')
xlabel('时间(n)');
ylabel('幅度x(n)');
x1= n==