实验离散时间信号的表示与运算Word文档下载推荐.docx
《实验离散时间信号的表示与运算Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验离散时间信号的表示与运算Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
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”文件中。
x=ones(1,50);
单位阶跃信号序列'
3
文件编辑后保存,然后单击Debug→Run,运行“exlstep.m”,将产生如下图所示序列。
实例3:
产生矩形阶跃序列
在MATLAB中,函数sign(x)产生在x大于0时其值为1;
在等于0时其值为0,在x小于0时其值为-1。
利用它可以实现窗长度为N的矩形序列。
按照前面所述方法,将下列指令编辑到“exlrectang.m”文件中。
N=10;
x=sign(sign(N-1-n)+1);
stem(n,x);
矩形序列'
文件编辑后保存,然后单击Debug→Run,运行“exlrectang.m”,将产生如下图所示序列。
实例4:
产生正弦和余弦序列
将下列指令编辑到“exlsincos.m”文件中。
N=50;
%采样50个点
A=1;
%正余弦波的幅值为1
f=50;
%信号频率为50Hz
fs=500;
%采样频率为500Hz
N-1;
x=A*sin(2*pi*f*n/fs);
%获得采样点的值
y=A*cos(2*pi*f*n/fs);
subplot(1,2,1);
%子图分割函数,参数一表示列,参数二表示行,
%参数三表示绘图序号
正弦序列'
subplot(1,2,2);
stem(n,y);
余弦序列'
文件编辑后保存,然后单击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))&
=max(k2))==1))=a2;
f=f1+f2;
stem(k,f,'
filled'
);
运行结果如下图所示。
实例6:
已知离散序列,利用MATLAB绘出其翻转信号,源程序如下:
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:
k1=3;
k=k0+k1;
f=a0;
实例8:
已知两个离散序列,,利用MATLAB绘出原信号及其卷积,源程序如下:
f1=[1,3,3,3];
k1=0:
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);
f2(k)'
subplot(3,1,3);
stem(0:
length(f)-1,f);
xlabel('
k'
f(k)'
五实验报告要求
1、简述实验目的和实验原理;
2、编程实现实验内容,要求附上详细的源程序和清晰的截图;
3、总结实验中的主要结论。
作业一离散时间信号的表示与运算
题1:
实现下面序列的相加和相乘
题2:
实现序列的翻转。
题3:
实现序列右移3位和左移2位。
题4:
已知序列
计算它们的线性卷积和。
题5:
已知两个离散序列,,利用MATLAB绘出原信号及其线性卷积和。
a1=[-1,2,-3,1,4];
k1=-2:
a2=[2,-3,2,-3];
f3=f1+f2;
f4=f1.*f2;
subplot(2,1,1);
stem(k,f3,'
相加'
subplot(2,1,2);
stem(k,f4,'
相乘'
5;
f1=[1,2,3,4,5,6,7,8];
翻转'
a0=[1,2,3,4,5,5,5,5];
k0=-2:
k2=-2;
m1=k0+k1;
m2=k0+k2;
stem(m1,f,'
右移'
stem(m2,f,'
左移'
x1=[1,1,1,1,1,1];
n1=-2:
x2=[1,1,1,1,1,1,1];
n2=-1:
n3=min(n1)+min(n2);
x=conv(x1,x2);
stem(n1,x1);
x1(n)'
卷积'
stem(n2,x2);
x2(n)'
stem(n3:
length(x)-1+n3,x);
n'
x(n)'
x(n)=x1(n)*x2(n)'
f(k)=f1(k)*f2(k)'