实验离散时间信号的表示与运算.docx
- 文档编号:720622
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:12
- 大小:172.79KB
实验离散时间信号的表示与运算.docx
《实验离散时间信号的表示与运算.docx》由会员分享,可在线阅读,更多相关《实验离散时间信号的表示与运算.docx(12页珍藏版)》请在冰豆网上搜索。
实验离散时间信号的表示与运算
实验一离散时间信号的表示与运算
一实验目的
1、熟悉MATLAB的绘图函数;
2、掌握单位取样序列、单位阶跃序列、矩形序列和正余弦序列的产生方法;
3、掌握离散时间信号基本运算的MATLAB实现;
4、掌握离散时间信号线性卷积和运算的MATLAB实现。
二实验设备
1、计算机
2、MATLABR2007a仿真软件
三实验原理
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描述。
4)序列的线性卷积和
线性卷积和运算是离散时间信号的一种重要运算,两个有限长序列的线性卷积可以用conv函数实现。
设x(n)和y(n)分别用样值向量x和y表示,线性卷积g(n)用样值向量g表示,则调用方式为,conv函数并未考虑到位置向量,默认所有的序列都从n=0开始。
如果把位置向量考虑在内,则需要对位置向量作额外处理。
设x(n)和y(n)的位置向量分别是nx:
[ns1,nf1]和ny:
[ns2,nf2]表示,线性卷积的位置向量用ng:
[ns3,nf3]表示。
四实验内容
1、上机实验前,认真阅读实验原理,掌握离散时间信号表示和运算的方法;
2、掌握离散时间信号表示及运算的MATLAB实现。
实例1:
产生单位采样序列
在MATLAB中,函数zeros(1,N)产生一个N个令的列向量,利用它可以实现在有限的区间上的单位采样序列。
按照前面所述的方法,将下列文件输入到CommandWindow窗口中。
n=0:
49;%定义横轴坐标
x=zeros(1,50);%matlab中数组下标从1开始
x
(1)=1;
stem(n,x);%绘制离散序列数据
title('单位采用信号序列')
按回车键,将产生如下图所示的序列。
实例2:
产生单位阶跃序列
在MATLAB中,函数ones(1,N)产生一个N个1的行向量,利用它可以实现在有限区间上的单位阶跃序列。
按照前面所述方法,将下列指令编辑到“exlstep.m”文件中。
n=0:
49;%定义横轴坐标
x=ones(1,50);%matlab中数组下标从1开始
x
(1)=1;
stem(n,x);%绘制离散序列数据
title('单位阶跃信号序列'3
文件编辑后保存,然后单击Debug→Run,运行“exlstep.m”,将产生如下图所示序列。
实例3:
产生矩形阶跃序列
在MATLAB中,函数sign(x)产生在x大于0时其值为1;在等于0时其值为0,在x小于0时其值为-1。
利用它可以实现窗长度为N的矩形序列。
按照前面所述方法,将下列指令编辑到“exlrectang.m”文件中。
N=10;
n=0:
49;%定义横轴坐标
x=sign(sign(N-1-n)+1);
stem(n,x);%绘制离散序列数据
title('矩形序列')
文件编辑后保存,然后单击Debug→Run,运行“exlrectang.m”,将产生如下图所示序列。
实例4:
产生正弦和余弦序列
将下列指令编辑到“exlsincos.m”文件中。
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('正弦序列')
subplot(1,2,2);
stem(n,y);
title('余弦序列')
文件编辑后保存,然后单击Debug→Run,运行“exlsincos.m”,将产生如下图所示序列。
实例5:
已知两个离散序列,,用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');
运行结果如下图所示。
实例6:
已知离散序列,利用MATLAB绘出其翻转信号,源程序如下:
k1=-3:
3;
f1=2*3.^k;
f=fliplr(f1);
k=-fliplr(k1);
stem(k,f);
运行结果如下图所示。
实例7:
已知离散信号,利用MATLAB绘出波形,源程序波形如下:
a0=[-3,-2,-1,0,1,2,3];
k0=-3:
3;
k1=3;
k=k0+k1;
f=a0;
stem(k,f,'filled');
运行结果如下图所示。
实例8:
已知两个离散序列,,利用MATLAB绘出原信号及其卷积,源程序如下:
f1=[1,3,3,3];
k1=0:
3;
f2=[1,2,3,3,4];
k2=0:
4;
f=conv(f1,f2);
subplot(3,1,1);
stem(k1,f1);
ylabel('f1(k)');
subplot(3,1,2);
stem(k2,f2);
ylabel('f2(k)');
subplot(3,1,3);
stem(0:
length(f)-1,f);
xlabel('k');
ylabel('f(k)');
运行结果如下图所示。
五实验报告要求
1、简述实验目的和实验原理;
2、编程实现实验内容,要求附上详细的源程序和清晰的截图;
3、总结实验中的主要结论。
作业一离散时间信号的表示与运算
题1:
实现下面序列的相加和相乘
题2:
实现序列的翻转。
题3:
实现序列右移3位和左移2位。
题4:
已知序列
计算它们的线性卷积和。
题5:
已知两个离散序列,,利用MATLAB绘出原信号及其线性卷积和。
题1:
a1=[-1,2,-3,1,4];
k1=-2:
2;
a2=[2,-3,2,-3];
k2=0:
3;
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;
f3=f1+f2;
f4=f1.*f2;
subplot(2,1,1);
stem(k,f3,'filled');
title('相加');
subplot(2,1,2);
stem(k,f4,'filled');
title('相乘');
题2:
k1=-2:
5;
f1=[1,2,3,4,5,6,7,8];
f=fliplr(f1);
k=-fliplr(k1);
stem(k,f);
title('翻转');
题3:
a0=[1,2,3,4,5,5,5,5];
k0=-2:
5;
k1=3;
k2=-2;
m1=k0+k1;
m2=k0+k2;
f=a0;
subplot(2,1,1);
stem(m1,f,'filled');
title('右移');
subplot(2,1,2);
stem(m2,f,'filled');
title('左移');
题4:
x1=[1,1,1,1,1,1];
n1=-2:
3;
x2=[1,1,1,1,1,1,1];
n2=-1:
5;
n3=min(n1)+min(n2);
x=conv(x1,x2);
subplot(3,1,1);
stem(n1,x1);
ylabel('x1(n)');
title('卷积');
subplot(3,1,2);
stem(n2,x2);
ylabel('x2(n)');
subplot(3,1,3);
stem(n3:
length(x)-1+n3,x);
xlabel('n');
ylabel('x(n)');
title('x(n)=x1(n)*x2(n)');
题5:
f1=[1,3,3,3];
k1=0:
3;
f2=[1,2,3,3,4];
k2=0:
4;
f=conv(f1,f2);
subplot(3,1,1);
stem(k1,f1);
ylabel('f1(k)');
title('卷积');
subplot(3,1,2);
stem(k2,f2);
ylabel('f2(k)');
subplot(3,1,3);
stem(0:
length(f)-1,f);
xlabel('k');
ylabel('f(k)');
title('f(k)=f1(k)*f2(k)');
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 离散 时间 信号 表示 运算