实验一常见离散信号的MATLAB产生和图形显示.docx
- 文档编号:15889832
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:10
- 大小:56.78KB
实验一常见离散信号的MATLAB产生和图形显示.docx
《实验一常见离散信号的MATLAB产生和图形显示.docx》由会员分享,可在线阅读,更多相关《实验一常见离散信号的MATLAB产生和图形显示.docx(10页珍藏版)》请在冰点文库上搜索。
实验一常见离散信号的MATLAB产生和图形显示
实验一常见离散信号的MATLAB产生和图形显示
授课课时:
2学时
一、实验目的:
(1)熟悉MATLAB应用环境,常用窗口的功能和使用方法。
(2)掌握MATLAB在时域内产生常用离散时间信号的方法。
(3)掌握离散信号的基本运算。
(4)掌握简单的绘图命令。
二、实验原理:
(一)信号的表示和产生
①单位抽样序列
如果
在时间轴上延迟了k个单位,得到
即:
参考程序:
例1-1:
clearall
n1=-10;n2=20;n0=0;%在起点为n1,终点为n2的范围内,于n0处产生冲激。
n=n1:
n2;%生成离散信号的时间序列
x=[n==n0];%生成离散信号x(n)
stem(n,x);%绘制脉冲杆图
xlabel('n');ylabel('x(n)');%横坐标和纵坐标的标注说明。
title('UnitSampleSequence');%图形上方标注图名
axis([-102001.2]);%确定横坐标和纵坐标的取值范围
②单位阶跃序列
例1-2:
clearall
n1=-2;n2=20;n0=0;
n=n1:
n2;%生成离散信号的时间序列
x=[n>=n0];%生成离散信号x(n)
stem(n,x,'filled');
xlabel('n');ylabel('x(n)');
title('UnitstepSequence');
axis([-22001.2]);
③正弦序列
例1-3:
一正弦信号的频率为1HZ,振幅值幅度A为1V,在窗口显示2个周期的信号波形,并对该信号的一个周期进行32点采样获得离散信号并显示该连续信号和离散信号的波形。
参考程序:
clear
f=1;
A=1;nt=2;
N=32;
T=1/f;%输入信号频率,振幅和显示周期数
dt=T/N;%采样时间间隔
n=0:
nt*N-1;%建立离信号的时间序列
tn=n*dt;%确定时间序列阳电在时间轴上的位置。
x=A*sin(2*pi*f*tn);
subplot(2,1,1);plot(tn,x);%显示原连续信号
axis([0nt*T1.1*min(x)1.1*max(x)]);%限定横坐标和纵坐标的显示范围
ylabel('x(t)');
subplot(2,1,2);stem(tn,x);%显示经采样的信号
axis([0nt*T1.1*min(x)1.1*max(x)]);
ylabel('x(n)');
④复指数序列
例1-4;
求
n1=30;
a=-0.1;
w=0.6;
n=0:
n1;
x=exp((a+j*w)*n);
stem(n,x);
xlabel('n');ylabel('x(n)');
title('复指数序列');
⑤指数序列
例1-5:
,其中a为实数
clear
n1=-10;
n2=10;
a1=0.5;
a2=2;
na1=n1:
0;x1=a1.^na1;
na2=0:
n2;x2=a2.^na2;
subplot(2,2,1),plot(na1,x1);
title('实指数信号(a<1)');
subplot(2,2,3),stem(na1,x1);
title('实指数序列(a<1)');
subplot(2,2,2),plot(na2,x2);
title('实指数信号(a>1)');
subplot(2,2,4),stem(na2,x2);
title('实指数序列(a>1)');
(2)序列的基本运算
对离散时间序列实行基本运算可得到新的序列,这些基本运算主要包括加、减、乘、除、移位、反折等。
两个序列的加减乘除是对应离散样点值的加减乘除,因此,可通过MATLAB的点乘和点除、序列移位和反折来实现,与连续时间信号处理方法基本一样。
a)序列的相加与相乘
设两离散序列x1(n),x2(n),序列相加为x(n)=x1(n)+x2(n),相乘为x(n)=x1(n).x2(n),实际上是对应的序列值相加或相乘。
在MATLAB中可以用运算符“+”实现,但相加的两个序列必须有相同的长度,且应该保证它们是相同的采样位置相加或相乘,因此在计算时,必须格外注意序列下标的计算。
例1-6:
求
clearall
n1=0;n2=10;n01=2;n02=4;%赋初值
n=n1:
n2;
x1=[(n-n01)==0];
x2=[(n-n02)==0];
x3=x1+x2;
subplot(3,1,1);stem(n,x1);
title('x1');
subplot(3,1,2);stem(n,x2);
title('x2');
subplot(3,1,3);stem(n,x3);
title('x3');
例1-7:
求x1(n)+x2(n)
clearall
n1=-4:
6;
n01=-2;
x1=[(n1-n01)>=0];%建立x1信号
n2=-5:
8;n02=4;
x2=[(n2-n02)>=0];%建立x2信号
n=min([n1,n2]):
max([n1,n2]);%为x信号建立时间序列n
N=length(n);%求出时间序列n的点数N
y1=zeros(1,N);y2=zeros(1,N);%新建一维N列y1、y2全零数组
y1(find((n>=min(n1))&(n<=max(n1))))=x1;%对y1赋值
y2(find((n>=min(n2))&(n<=max(n2))))=x2;%对y2赋值
x=y1+y2;
stem(n,x);
b)序列的移位
将一个离散信号序列进行移位,形成新的序列:
x1(n)=x(n-m)
m>0时,原序列x(n)向右移m位,m<0,原序列x(n)向左移m位。
例1-8:
序列x1=[11101],求x1(n),x1(n-1),x1(n+1)
%shift
clearall
x1=[11101];
n1=-3:
1;%设定范围
n=n1+1;%范围右移
m=n1-1;%左移
x=x1;
subplot(3,1,1);
stem(n,x);%右移
ylabel('x1(n-1)');
subplot(3,1,2);
stem(n1,x);%原序列
ylabel('x1(n)');
subplot(3,1,3);
stem(m,x);%左移
ylabel('x1(n+1)')
c)序列的反褶x(-n)
Matlab提供了fliplr函数,可以实现序列的反褶。
例1-9:
:
将序列x1={12103},-3<=n<=1,求x1(-n)
%fanzhe
clear
x1=[12103];
n1=[-3:
1:
1];
subplot(1,2,1);
stem(n1,x1);
ylabel('x(n)');
xlabel('n');
n=-fliplr(n1);
x=fliplr(x1);
subplot(1,2,2);
stem(n,x);
ylabel('x(-n)');
xlabel('n');
d)序列的尺度变换
原序列x(n),y(n)=x(mn)就是对原序列每隔m点取样形成的,相当于将时间轴压缩或扩展了m倍。
例1-10:
clearall
n=(0:
20)/20;%归一化
x=sin(2*pi*n);%x(n)
x1=sin(2*pi*n*2);%x(2n)
x2=sin(2*pi*n/2);%x(3n)
subplot(3,1,1);
stem(n,x);
ylabel('x(n)');
subplot(3,1,2);
stem(n,x1);
ylabel('x(2n)');
subplot(3,1,3);
stem(n,x2);
ylabel('x(n/2)');
三、实验内容及步骤:
(1)复习常用离散时间信号的有关内容,阅读并输入实验原理中介绍的例题程序,理解其语句含义。
(2)编写程序,产生下列离散序列,并绘出其图形.
a)
;
b)
c)
(3).已知两序列如下:
x[n]={-451-2-302},-4 y[n]={6-3-1087-2};-2 编程计算两序列的和、积,以及y(n-2),y(-n)。 四、实验用MATLAB函数介绍 1.涉及到的MATLAB子函数 其中在信号的产生和表示的实验过程中常用到的MATLAB指令(函数名)有: stem(),zeros(),ones(),length(),linspace(),axis(),square(),rand(),title(),xlable(),ylable(),subplot()等,具体调用格式参看“help”或者查阅相关书籍。 另外,在具体的实验过程中也可以根据实际需要自己定义函数例如: impseq.m,stepseq.m,sigadd.m等。 举例: function[x,n]=impseq(n0,ns,nf) n=[ns: nf];x=[(n-n0)==0]; 在序列的基本运算的实验过程中常用到的MATLAB指令(函数名)有: find,fliplr等,调用格式: find(n>=min(n1)&(n<=max(n1)): 在符合关系运算条件的范围内寻找非零元素的索引号。 X1=fliplr(x): 将x的行元素进行左右翻转,赋给变量x1. 2.用MATLAB生产离散信号须注意的问题 1)有关数组与下标 MATLAB中处理的数组,将下标放在变量后面的小括号内,且约定从1开始递增,例如x=[5,4,3,2,1,0],表示x (1)=5,x (2)=4,......,x(6)=0. 若要表示一个下标不是由1开始的数字x(n),一般采用两个矢量,例如: n=[-2: 3]; x=[5,4,3,2,1,0]; 这表示了一个含6个采样点的矢量。 n为一组时间矢量,对应x有: x(-2)=5,......x(3)=0. 2)信号的图形绘制 连续信号作图使用plot函数绘制线形图,离散信号作图使用stem函数绘制脉冲杆图。 调用格式: stem(x,y): 绘制以x为横轴、y为纵轴的脉冲杆图图形 注: 实验过程中也可以使用自己编制的自定义函数,如impseq()、stepseq()等。 五、思考题: 产生单位抽样序列和单位阶跃序列各有几种方法? 如何使用? 六、实验报告要求 (1)简述实验目的及原理。 (2)列写调试通过的实验程序,描绘实验程序产生的曲线图形。 (3)简要回答思考题。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 常见 离散 信号 MATLAB 产生 图形 显示