实验一--常见离散信号的MATLAB产生和图形显示 下载本文

内容发布更新时间 : 2024/5/21 8:53:05星期一 下面是文章的全部内容请认真阅读。

.

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 = [1 1 1 0 1],求x1(n),x1(n-1),x1(n+1) %shift clear all x1 = [1 1 1 0 1]; 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 ={1 2 1 0 3},-3<=n<=1,求x1(-n)

únzhe clear

x1 = [1 2 1 0 3]; 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:

x(n)?sin(2?n),求x(2n),x(n/2)

clear all

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)x(n)??(n?3)?2?(n?4),b)x(n)?u(n?3)?u(n?2),(?5?n?5); (?5?n?5)

2-1)u(n)c)x(n)?(n

(3).已知两序列如下:x[n]={-4 5 1 -2 -3 0 2}, -4

y[n]={6 -3 -1 0 8 7 -2}; -2

四、实验用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)简要回答思考题。

.