离散时间信号的表示与运算
一、实验目的
1、熟悉MATLAB的绘图函数;
2、掌握单位取样序列、单位阶跃序列、矩形序列和正余弦序列的产生方法;
3、掌握离散时间信号基本运算的MATLAB实现;
二、实验内容
1、写出离散时间信号的表示与运算的 Matlab 程序
2、将程序在计算机上仿真实现,验证程序的正确性并完成仿真。
三、实验原理及说明
1、序列相加和相乘
设有序列
和
,它们相加和相乘如下:

注意,序列相加(相乘)是对应序列值之间的相加(相乘),因此参加运算的两个序列必须具有相同的长度,并且保证位置相对应。如果不相同,在运算前应采用zeros函数将序列左右补零使其长度相等并且位置相对应。在MATLAB中,设序列用x1和x2表示,序列相加的语句为:x=x1+x2;然而要注意,序列相乘不能直接用x=x1*x2,该式表示两个矩阵的相乘,而不是对应项的相乘。对应项之间相乘的实现形式是点乘“.*”,实现语句为:x=x1.*x2。
2、序列翻转
设有序列:
,在翻转运算中,序列的每个值以n=0为中心进行翻转,需要注意的是翻转过程中序列的样值向量翻转的同时,位置向量翻转并取反。MATLAB中,翻转运算用fliplr函数实现。设序列
用样值向量x和位置向量nx表述,翻转后的序列
用样值向量y和位置向量ny描述。
3、序列的移位
移位序列
的移位序列可表示为:
,其中,
时代表序列右移
个单位;
时代表序列左移
个单位。在移位过程中,序列值未发生任何变化,只是位置向量的增减。MATLAB中没有固定函数实现移位运算。设序列
用样值向量x和位置向量nx描述移位
后的序列
用样值向量y和位置向量ny描述。
四、实验设备
1、计算机
2、软件:Matlab
五、实验方法
实例1:产生单位采样序列


在MATLAB中,函数zeros(1,N)产生一个N个零的列向量,利用它可以实现在有限的区间上的单位采样序列。按照前面所述的方法,将下列文件输入到Command Window窗口中。
程序:
n=0:49; %定义横轴坐标
x=zeros(1,50); %matlab中数组下标从1开始
x(1)=1;
stem(n,x); %绘制离散序列数据
title('xx级xx班xx号xxx-单位采样信号序列')
实例2:产生单位阶跃序列


在MATLAB中,函数ones(1,N)产生一个N个1的行向量,利用它可以实现在有限区间上的单位阶跃序列。按照前面所述方法,将下列指令编辑到Command Window窗口中。
程序:
n=0:49; %定义横轴坐标
x=ones(1,50); %matlab中数组下标从1开始
x(1)=1;
stem(n,x); %绘制离散序列数据
title('xx级xx班xx号xxx-单位阶跃信号序列')
实例3:产生矩形阶跃序列


在MATLAB中,函数sign(x)产生在x大于0时其值为1;在等于0时其值为0,在x小于0时其值为-1。利用它可以实现窗长度为N的矩形序列。
程序:
N=10;
n=0:49; %定义横轴坐标
x=sign(sign(N-1-n)+1);
stem(n,x); %绘制离散序列数据
title('xx级xx班xx号xxx-矩形序列')
实例4:已知两个离散序列
,
,用MATLAB绘出
的波形。
程序:
a1=[-3,-2,-1,0,1,2,3];
k1=-3:3;
a2=[-2,-1,0,1,2];
k2=-2:2;
k=min([k1:k2]):max([k1,k2]);
f1=zeros(1,length(k));
f2=zeros(1,length(k));
f1(find((k>=min(k1))&(k<=max(k1))==1))=a1;
f2(find((k>=min(k2))&(k<=max(k2))==1))=a2;
f=f1+f2;
stem(k,f,'filled');
title('xx级xx班xx号xxx-相加f(k)')
实例5:已知离散序列
,利用MATLAB绘出其翻转信号。
程序:
k1=-3:3;
f1=2*3.^k;
f=fliplr(f1);
k=-fliplr(k1);
stem(k,f);
title('xx级xx班xx号xxx-翻转f(k)')
实例6: 已知离散信号
,利用MATLAB绘出
波形。
程序:
a0=[-3,-2,-1,0,1,2,3];
k0=-3:3;
k1=3;
k=k0+k1;
f=a0;
stem(k,f,'filled');
title('xx级xx班xx号xxx-位移f(k)')
实例7:产生正弦和余弦序列


程序:
N=50; %采样50个点
A=1; %正余弦波的幅值为1
f=50; %信号频率为50Hz
fs=500; %采样频率为500Hz
n=0:N-1;
x=A*sin(2*pi*f*n/fs); %获得采样点的值
y=A*cos(2*pi*f*n/fs);
subplot(1,2,1); %子图分割函数,参数一表示列,参数二表示行,
stem(n,x); %参数三表示绘图序号
title('xx级xx班xx号xxx-正弦序列')
subplot(1,2,2);
stem(n,y);
title('xx级xx班xx号xxx-余弦序列')
六、实验结果

图1 单位采样信号序列 图2 单位阶跃信号序列

图3 矩形序列 图4 相加f(k)

图5 翻转f(k) 图6 位移f(k)

图7 正弦、余弦序列