实验三离散时间信号的表示及运算.docx
《实验三离散时间信号的表示及运算.docx》由会员分享,可在线阅读,更多相关《实验三离散时间信号的表示及运算.docx(11页珍藏版)》请在冰豆网上搜索。
实验三离散时间信号的表示及运算
实验三离散时间信号的表示及运算
3.1实验目的
1.学会运用MATLAB表示常用离散时间信号的方法;
2.学会运用MATLAB实现离散时间信号的基本运算。
3.2实验原理及实例分析
1信号的表示
例3-1该程序用来产生离散时间信号x[n]=sin(0.2πn)。
>>clear,
closeall,
n=-10:
10;
x=sin(0.2*pi*n);
stem(n,x)
title('Sinusoidalsignalx[n]')
例3-2该程序用来仿真下面形式的离散时间信号:
x[n]={....,0.1,1.1,-1.2,0,1.3,….}
↑n=0
>>clear,
closeall,
n=-5:
5;
x=[0,0,0,0,0.1,1.1,-1.2,0,1.3,0,0];
stem(n,x,'.')
gridon,
title('Adiscrete-timesequencex[n]')
xlabel('Timeindexn')
例3-3当x[n]={0.1,1.1,-1.2,0,1.3}时,为了得到例3-2中的序列,
↑n=0
可以用这个MATLAB语句x=[zeros(1,4)xzeros(1,2)]来实现。
用这种方法编写的程序如下:
>>clear,
closeall,
n=-5:
5;
x=[zeros(1,4),0.1,1.1,-1.2,0,1.3,zeros(1,2)];
stem(n,x,'.')
gridon,
title('Adiscrete-timesequencex[n]')
xlabel('Timeindexn')
离散时间单位阶跃信号u[n]定义为
1.2
离散时间单位阶跃信号u[n]除了也可以直接用前面给出的扩展函数来产生,还可以利用MATLAB内部函数ones(1,N)来实现。
这个函数类似于zeros(1,N),所不同的是它产生的矩阵的所有元素都为1。
值得注意的是,利用ones(1,N)来实现的单位阶跃序列并不是真正的单位阶跃序列,而是一个长度为N单位门(Gate)序列,也就是u[n]-u[n-N]。
但是在一个有限的图形窗口中,我们看到的还是一个单位阶跃序列。
在绘制信号的波形图时,有时我们需要将若干个图形绘制在同一个图形窗口中,这就需要使用MATLAB的图形分割函数subplot(),其用法是在绘图函数stem或plot之前,使用图形分割函数subplot(n1,n2,n3),其中的参数n1,n2和n3的含义是,该函数将把一个图形窗口分割成n1×n2个子图,即将绘制的图形将绘制在第n3个子图中。
2信号的基本运算
对于离散信号,它的基本运算包括加、减、乘、除、时移、反折等,与连续时间信号处理方法基本一样。
3.3编程练习
1.利用MATLAB命令画出下列各序列的波形图。
(1)
>>clear,
closeall,
n=0:
10;
x=(1/2).^n.*(n>=0);
stem(n,x)
title('signalx[n]')
(2)
>>clear,
closeall,
n=0:
6;
x=2.^n.*(n>=0);
stem(n,x)
title('signalx[n]')
(3)
>>clear,
closeall,
n=0:
10;
x=(-(1/2)).^n.*(n>=0);
stem(n,x)
title('signalx[n]')
(4)
clear,
closeall,
n=0:
10;
x=(-2).^n.*(n>=0);
stem(n,x)
title('signalx[n]')
(5)
>>clear,
closeall,
n=0:
10;
x=2.^(n-1).*(n-1>=0);
stem(n,x)
title('signalx[n]')
(6)
>>clear,
closeall,
n=0:
10;
x=(1/2).^(n-1).*(n>=0);
stem(n,x)
title('signalx[n]')
2.利用MATLAB命令画出下列各序列的波形图。
(1)
>>clear,
closeall,
n=-10:
10;
x=sin(n*pi./5);
stem(n,x)
title('signalx[n]')
(2)
>>clear,
closeall,
n=-10:
10;
x=cos(n*pi./10-pi/5);
stem(n,x)
title('signalx[n]')
(3)
>>clear,
closeall,
n=-10:
10;
x=(5/6).^n.*sin(n*pi./5);
stem(n,x)
title('signalx[n]')
(4)
>>clear,
closeall,
n=-10:
10;
x=(3/2).^n.*sin(n*pi./5);
stem(n,x)
title('signalx[n]')
3.利用MATLAB命令产生幅度为1、周期为1、占空比为0.5的一个周期矩形脉冲信号。
>>n=-5:
5;
y=square(2*pi*n,50);
stem(n,y)
title('所求信号')