信号与系统上机实验题全解.docx

上传人:b****2 文档编号:18383473 上传时间:2023-04-24 格式:DOCX 页数:32 大小:186.73KB
下载 相关 举报
信号与系统上机实验题全解.docx_第1页
第1页 / 共32页
信号与系统上机实验题全解.docx_第2页
第2页 / 共32页
信号与系统上机实验题全解.docx_第3页
第3页 / 共32页
信号与系统上机实验题全解.docx_第4页
第4页 / 共32页
信号与系统上机实验题全解.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

信号与系统上机实验题全解.docx

《信号与系统上机实验题全解.docx》由会员分享,可在线阅读,更多相关《信号与系统上机实验题全解.docx(32页珍藏版)》请在冰豆网上搜索。

信号与系统上机实验题全解.docx

信号与系统上机实验题全解

信号与系统-上机实验题-全解

 

信号与系统实验报告

 

班级:

姓名:

学号:

成绩:

指导教师:

 

实验一:

1、实验目的

2、实验原理

三、抄写实验内容,写出程序清单

四、记录信号波形

实验二:

1、实验目的、

2、实验原理

三、抄写实验内容,写出程序清单

四、记录信号波形

实验三:

1、实验目的

二、实验原理

三、抄写实验内容,写出程序清单

四、记录信号波形

实验四:

1、实验目的

2、实验原理

三、抄写实验内容,写出程序清单

四、记录信号波形

总结心得

参考文献

(实验要求:

每个实验都按照目录的格式填写完整,总结最后一起写。

参考文献最好要写,二级标题为宋体三号字体宋体四号标题的格式按照现有文件格式文件名为学号加姓名)

实验一常见信号的MATLAB表示及运算

一、实验目的

1、熟悉常见信号的意义、特性及波形;

2、学会使用MATLAB表示信号的方法并绘制信号波形;

3、掌握使用MATLAB进行信号基础运算的指令;

4、熟悉MATLAB实现卷积积分的方法。

二、实验原理

信号一般是随时间而变化的某些物理量。

按照自变量的取值是否连续,信号分为连续时间信号和离散时间信号,一般用

来表示。

若对信号进行时域分析,就需要绘制其波形,如果信号比较复杂,则手工绘制波形就变得很困难,且难以精确。

MATLAB强大的图形处理功能及符号运算功能,为实现信号的可视化及其时域分析提供了强有力的工具。

根据MATLAB的数值计算功能和符号运算功能,在MATLAB中,信号有两种表示方法,一种是用向量来表示,另一种则是用符号运算的方法。

在采用适当的MATLAB语句表示出信号后,就可以利用MATLAB中的绘图命令绘制出直观的信号波形了。

下面分别介绍连续时间信号和离散时间信号的MATLAB表示及其波形绘制方法。

1.连续时间信号

所谓连续时间信号,是指其自变量的取值是连续的,并且除了若干不连续的点外,对于一切自变量的取值,信号都有确定的值与之对应。

从严格意义上讲,MATLAB并不能处理连续信号。

在MATLAB中,是用连续信号在等时间间隔点上的样值来近似表示的,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号。

在MATLAB中连续信号可用向量或符号运算功能来表示。

⑴向量表示法

对于连续时间信号

,可以用两个行向量f和t来表示,其中向量t是用形如

的命令定义的时间范围向量,其中,

为信号起始时间,

为终止时间,p为时间间隔。

向量f为连续信号

在向量t所定义的时间点上的样值。

例如:

对于连续信号

,我们可以将它表示成行向量形式,同时用绘图命令plot()函数绘制其波形。

其程序如下:

t1=-10:

0.5:

10;%定义时间t的取值范围:

-10~10,取样间隔为0.5,%则t1是一个维数为41的行向量

f1=sin(t1)./t1; %定义信号表达式,求出对应采样点上的样值,

       %同时生成与向量t1维数相同的行向量f1

figure

(1);   %打开图形窗口1

plot(t1,f1);  %以t1为横坐标,f1为纵坐标绘制f1的波形

t2=-10:

0.1:

10;%定义时间t的取值范围:

-10~10,取样间隔为0.1,%则t2是一个维数为201的行向量

f2=sin(t2)./t2;%定义信号表达式,求出对应采样点上的样值

      %同时生成与向量t2维数相同的行向量f2

figure

(2);   %打开图形窗口2

plot(t2,f2);   %以t2为横坐标,f2为纵坐标绘制f2的波形

运行结果如下:

图1-1

图1-2

说明:

 plot是常用的绘制连续信号波形的函数。

 严格说来,MATLAB不能表示连续信号,所以,在用plot()命令绘制波形时,要对自变量t进行取值,MATLAB会分别计算对应点上的函数值,然后将各个数据点通过折线连接起来绘制图形,从而形成连续的曲线。

因此,绘制的只是近似波形,而且,其精度取决于t的取样间隔。

t的取样间隔越小,即点与点之间的距离越小,则近似程度越好,曲线越光滑。

例如:

图1-1是在取样间隔为p=0.5时绘制的波形,而图1-2是在取样间隔p=0.1时绘制的波形,两相对照,可以看出图1-2要比图1-1光滑得多。

在上面的f=sin(t)./t语句中,必须用点除符号,以表示是两个函数对应点上的值相除。

⑵符号运算表示法

如果一个信号或函数可以用符号表达式来表示,那么我们就可以用前面介绍的符号函数专用绘图命令ezplot()等函数来绘出信号的波形。

例如:

对于连续信号

,我们也可以用符号表达式来表示它,同时用ezplot()命令绘出其波形。

其MATLAB程序如下:

symst ;      %符号变量说明

f=sin(t)/t;    %定义函数表达式

ezplot(f,[-10,10]); %绘制波形,并且设置坐标轴显示范围

运行结果如下:

图1-3

⑶常见信号的MATLAB表示

对于普通的信号,应用以上介绍的两种方法即可完成计算函数值或绘制波形,但是对于一些比较特殊的信号,比如单位阶跃信号(t)、符号函数sgn(t)等,在MATLAB中这些信号都有专门的表示方法。

 单位阶跃信号

单位阶跃信号的定义为:

 ,单位阶跃信号是信号分析的基本信号之一,在信号与系统分析中有着非常重要的作用,通常,我们用它来表示信号的定义域,简化信号的时域表示形式。

例如:

可以用两个不同延时的单位阶跃信号来表示一个矩形门信号,即:

在MATLAB中,可通过多种方法得到单位阶跃信号,下面分别介绍。

方法一:

调用Heaviside(t)函数

在MATLAB的SymbolicMathToolbox中,有专门用于表示单位阶跃信号的函数,即Heaviside(t)函数,用它即可方便地表示出单位阶跃信号以及延时的单位阶跃信号,并且可以方便地参加有关的各种运算过程。

首先定义函数Heaviside(t)的m函数文件,该文件名应与函数名同名即Heaviside.m。

%定义函数文件,函数名为Heaviside,输入变量为x,输出变量为y

functiony=Heaviside(t)

y=(t>0);%定义函数体,即函数所执行指令;%此处定义t>0时y=1,t<=0时y=0,注意与实际的阶跃信号定义的区别。

方法二:

数值计算法

在MATLAB中,有一个专门用于表示单位阶跃信号的函数,即stepfun()函数,它是用数值计算法表示的单位阶跃函数

其调用格式为:

stepfun(t,t0)

其中,t是以向量形式表示的变量,t0表示信号发生突变的时刻,在t0以前,函数值小于零,t0以后函数值大于零。

有趣的是它同时还可以表示单位阶跃序列

,这只要将自变量以及取样间隔设定为整数即可。

有关单位阶跃序列

的表示方法,我们后面有专门论述,下面通过一个例子来说明如何调用stepfun()函数来表示单位阶跃函数。

三、抄写实验内容,写出程序清单。

1.分别用MATLAB的向量表示法和符号运算功能,表示并绘出下列连续时间信号的波形:

(2)

t=-2:

0.01:

8;

t1=0;

u1=stepfun(t,t1);

t2=4;

u2=stepfun(t,t2);

g=u1-u2;

f=(cos(pi*t./2)).*g;

plot(t,f)

axis([-2,8,-2,2])

 

t=-8:

0.01:

10;

t1=-2;

u1=stepfun(t,t1);

f=(2/3).*t.*u1;

plot(t,f)

axis([-8,10,-6,6])

2.分别用MATLAB表示并绘出下列离散时间信号的波形:

 ⑵

k1=-5;k2=10;k0=0;k3=8

k=k1:

-k0-1;kk=-k0:

k3;kkk=k3+1:

k2;

n=length(k);

nn=length(kk);

nnn=length(kkk);

u=zeros(1,n);

uu=ones(1,nn);

uuu=zeros(1,nnn);

stem(k,u,'filled')

holdon

stem(kk,kk,'filled')

holdon

stem(kkk,uuu,'filled')

holdoff

axis([k1,k2,0,10])

 ⑷

        

k1=-10;k2=10;k0=2;

k=k1:

-k0;kk=-k0+1:

k2;

n=length(k);

nn=length(kk);

u=ones(1,n);

uu=zeros(1,nn);

stem(k,u,'filled')

holdon

stem(kk,uu,'filled')

holdoff

axis([k1,k2,0,2])

3.已知信号f(t)的波形如下图所示,试用MATLAB绘出满足下列要求的信号波形。

  

t=-3:

0.01:

7;

t1=2;

u1=stepfun(t,t1);

t2=3;

u2=stepfun(t,t2);

t3=4;

u3=stepfun(t,t3);

g=2*u1-u2-u3;

plot(t,g)

axis([-3,7,-2,4])

t=-5:

0.01:

5;

t1=0-1;

u1=stepfun(t,t1);

t2=1/2-1;

u2=stepfun(t,t2);

t3=1-1;

u3=stepfun(t,t3);

g=2*u1-u2-u3;

plot(t,g)

axis([-5,5,-2,4])

4.已知两信号

,求卷积积分

,并与例题比较。

t1=-1:

0.01:

0;t2=0:

0.01:

1;

t3=-1:

0.01:

1;

f1=ones(size(t1));

f2=ones(size(t2));

g=conv(f1,f2);

plot(t3,g);

5.已知两信号

 ,求卷积积分

t1=0:

0.01:

5;t2=-5:

0.01:

5;

t3=-5:

0.01:

10;

f1=t1;

f2=exp(t2).*(t2<0)+t2.*exp(-t2).*(t2>=0);

g=conv(f1,f2);

plot(t3,g);

6.已知

,求两序列的卷积和。

f1=[1,1,2];

f2=[1,2,3,4,5];

g=conv(f1,f2);

N=length(g);

stem(0:

N-1,g);

四、记录信号波形

1、

(2)

1、(4)

2、

(2)

2、(4)

3、

(2)

3、(4)

4、

5、

6、

实验二LTI系统的响应

一、实验目的

1.熟悉连续时间系统的单位冲激响应、阶跃响应的意义及求解方法2.熟悉连续(离散)时间系统在任意信号激励下响应的求解方法

3.熟悉应用MATLAB实现求解系统响应的方法

二、实验原理

1.连续时间系统

对于连续的LTI系统,当系统输入为f(t),输出为y(t),则输入与输出之间满足如下的线性常系数微分方程:

,当系统输入为单位冲激信号δ(t)时产生的零状态响应称为系统的单位冲激响应,用h(t)表示。

若输入为单位阶跃信号ε(t)时,系统产生的零状态响应则称为系统的单位阶跃响应,记为g(t),如下图所示。

系统的单位冲激响应h(t)包含了系统的固有特性,它是由系统本身的结构及参数所决定的,与系统的输入无关。

我们只要知道了系统的冲激响应,即可求得系统在不同激励下产生的响应。

因此,求解系统的冲激响应h(t)对我们进行连续系统的分析具有非常重要的意义。

在MATLAB中有专门用于求解连续系统冲激响应和阶跃响应,并绘制其时域波形的函数impulse()和step()。

如果系统输入为f(t),冲激响应为h(t),系统的零状态响应为y(t),则有:

若已知系统的输入信号及初始状态,我们便可以用微分方程的经典时域求解方法,求出系统的响应。

但是对于高阶系统,手工计算这一问题的过程非常困难和繁琐。

在MATLAB中,应用lsim()函数很容易就能对上述微分方程所描述的系统的响应进行仿真,求出系统在任意激励信号作用下的响应。

lsim()函数不仅能够求出连续系统在指定的任意时间范围内系统响应的数值解,而且还能同时绘制出系统响应的时域波形图。

以上各函数的调用格式如下:

⑴impulse()函数

函数impulse()将绘制出由向量a和b所表示的连续系统在指定时间范围内的单位冲激响应h(t)的时域波形图,并能求出指定时间范围内冲激响应的数值解。

 impulse(b,a)以默认方式绘出由向量a和b所定义的连续系统的冲激响应的时域波形。

 impulse(b,a,t0)绘出由向量a和b所定义的连续系统在0~t0时间范围内冲激响应的时域波形。

 impulse(b,a,t1:

p:

t2)绘出由向量a和b所定义的连续系统在t1~t2时间范围内,并且以时间间隔p均匀取样的冲激响应的时域波形。

 y=impulse(b,a,t1:

p:

t2)只求出由向量a和b所定义的连续系统在t1~t2时间范围内,并且以时间间隔p均匀取样的冲激响应的数值解,但不绘出其相应波形。

 ⑵step()函数

函数step()将绘制出由向量a和b所表示的连续系统的阶跃响应,在指定的时间范围内的波形图,并且求出数值解。

和impulse()函数一样,step()也有如下四种调用格式:

step(b,a)

step(b,a,t0)

step(b,a,t1:

p:

t2)

y=step(b,a,t1:

p:

t2)

上述调用格式的功能和impulse()函数完全相同,所不同只是所绘制(求解)的是系统的阶跃响应g(t),而不是冲激响应h(t)。

 ⑶lsim()函数

根据系统有无初始状态,lsim()函数有如下两种调用格式:

①系统无初态时,调用lsim()函数可求出系统的零状态响应,其格式如下:

  lsim(b,a,x,t) 绘出由向量a和b所定义的连续系统在输入为x和t所定义的信号时,系统零状态响应的时域仿真波形,且时间范围与输入信号相同。

其中x和t是表示输入信号的行向量,t为表示输入信号时间范围的向量,x则是输入信号对应于向量t所定义的时间点上的取样值。

  y=lsim(b,a,x,t)与前面的impulse和step函数类似,该调用格式并不绘制出系统的零状态响应曲线,而只是求出与向量t定义的时间范围相一致的系统零状态响应的数值解。

②系统有初始状态时,调用lsim()函数可求出系统的全响应,格式如下:

  lsim(A,B,C,D,e,t,X0)绘出由系数矩阵A,B,C,D所定义的连续时间系统在输入为e和t所定义的信号时,系统输出函数的全响应的时域仿真波形。

t为表示输入信号时间范围的向量,e则是输入信号e(t)对应于向量t所定义的时间点上的取样值,X0表示系统状态变量X=[x1,x2,…..xn]'在t=0时刻的初值。

[Y,X]=lsim(A,B,C,D,e,t,X0) 不绘出全响应波形,而只是求出与向量t定义的时间范围相一致的系统输出向量Y的全响应以及状态变量X的数值解。

显然,函数lsim()对系统响应进行仿真的效果取决于向量t的时间间隔的密集程度,t的取样时间间隔越小则响应曲线越光滑,仿真效果也越好。

说明:

(1)当系统有初始状态时,若使用lsim()函数求系统的全响应,就要使用系统的状态空间描述法,即首先要根据系统给定的方式,写出描述系统的状态方程和输出方程。

假如系统原来给定的是微分方程或系统函数,则可用相变量法或对角线变量等方法写出系统的状态方程和输出方程。

其转换原理如前面实验四所述。

(2)显然利用lsim()函数不仅可以分析单输入单输出系统,还可以分析复杂的多输入多输出系统。

2.离散时间系统

LTI离散系统中,其输入和输出的关系由差分方程描述:

    (前向差分方程)

   (后向差分方程)

当系统的输入为单位序列δ(k)时产生的零状态响应称为系统的单位函数响应,用h(k)表示。

当输入为ε(k)时产生的零状态响应称为系统的单位阶跃应,记为:

g(k),如下图所示。

如果系统输入为e(k),冲激响应为h(k),系统的零状态响应为y(k),则有:

与连续系统的单位冲激响应h(t)相类似,离散系统的单位函数响应h(k)也包含了系统的固有特性,与输入序列无关。

我们只要知道了系统的单位函数响应,即可求得系统在不同激励信号作用下产生的响应。

因此,求解系统的单位函数响应h(k)对我们进行离散系统的分析也同样具有非常重要的意义。

MATLAB中为用户提供了专门用于求解离散系统单位函数响应,并绘制其时域波形的函数impz()。

同样也提供了求离散系统响应的专用函数filter(),该函数能求出由差分方程所描述的离散系统在指定时间范围内的输入序列作用时,产生的响应序列的数值解。

当系统初值不为零时,可以使用dlsim()函数求出离散系统的全响应,其调用方法与前面连续系统的lsim()函数相似。

另外,求解离散系统阶跃响应可以通过如下两种方法实现:

一种是直接调用专用函数dstep(),其调用方法与求解连续系统阶跃响应的专用函数step()的调用方法相似;另一种方法是利用求解离散系统零状态响应的专用函数filter(),只要将其中的激励信号看成是单位阶跃信号ε(k)即可。

函数的调用格式分别如下:

⑴impz()函数

impz(b,a) 以默认方式绘出由向量a和b所定义的离散系统单位函数响应的时域波形。

 impz(b,a,n)绘出由向量a和b所定义的离散系统在0~n(n必须为整数)的离散时间范围内单位函数响应的时域波形。

 impz(b,a,n1:

n2)绘出由向量a和b所定义的离散系统在n1~n2(n1、n2必须为整数)的离散时间范围内单位函数响应的时域波形。

 y=impz(b,a,n1:

n2)求出由向量a和b所定义的离散系统在n1~n2(n1、n2必须为整数)的离散时间范围内单位函数响应的数值解,但不绘出波形。

⑵filter()函数

 filter(b,a,x)其中a和b与前面相同,x是包含输入序列非零样值点的的行向量。

此命令将求出系统在与x的取样时间点相同的输出序列样值。

三、抄写实验内容,写出程序清单

1.已知描述系统的微分方程和激励信号e(t)分别如下,试用解析方法求系统的单位冲激响应h(t)和零状态响应r(t),并用MATLAB绘出系统单位冲激响应和系统零状态响应的波形,验证结果是否相同。

       

a=[144];b=[13];

impulse(b,a,10)

p=0.01;

t=0:

p:

10;

x=exp(-1*t);

y=filter(b,a,x)

subplot(2,1,1),impulse(b,a,10)

subplot(2,1,2),lsim(b,a,x,t)

a=[1226];b=[10];

p=0.01;

t=0:

p:

10;

x=exp(0*t);

y=filter(b,a,x)

subplot(2,1,1),impulse(b,a,10)

subplot(2,1,2),lsim(b,a,x,t)

a=[143];b=[1];

p=0.01;

t=0:

p:

10;

x=exp(-2*t)

y=filter(b,a,x)

subplot(2,1,1),impulse(b,a,10)

subplot(2,1,2),lsim(b,a,x,t)

④如下图所示的电路中,已知

,且两电感上初始电流分别为

,如果以电阻

上电压

作为系统输出,请求出系统在激励

(v)作用下的全响应。

a=[-84;4-8];

b=[1;0];

c=[4-4];

d=[0];

x0=[2;0];

t=0:

0.01:

10;

e=(12.*ones(size(t)));

[r,x]=lsim(a,b,c,d,e,t,x0);

plot(t,r)

2.请用MATLAB分别求出下列差分方程所描述的离散系统,在0~20时间范围内的单位函数响应、阶跃响应和系统零状态响应的数值解,并绘出其波形。

另外,请将理论值与MATLAB仿真结果在对应点上的值作比较,并说出两者的区别和产生误差的原因。

  

a=[1,2,1];

b=[1,0,0];

k=0:

20;

x=(0.25.*k);

y=filter(b,a,x)

subplot(3,1,1),impz(b,a,0:

20),

subplot(3,1,2),dstep(b,a,0:

20),

subplot(3,1,3),stem(k,y)

   

a=[1,2,1];

b=[1,0,0];

k=0:

20;

x=(0.25.*k);

y=filter(b,a,x)

subplot(3,1,1),impz(b,a,0:

20),

subplot(3,1,2),dstep(b,a,0:

20),

subplot(3,1,3),stem(k,y)

a=[1,-5/6,1/6];

b=[1,0,-1];

k=0:

20;

x=(1.*k);

y=filter(b,a,x);

subplot(3,1,1),impz(b,a,0:

20),

subplot(3,1,2),dstep(b,a,0:

20),

subplot(3,1,3),stem(k,y)

④一带通滤波器可由下列差分方程描述:

, 其中

为系统输入,

为系统输出。

请求出当激励为

(选取适当的n值)时滤波器的稳态输出。

a=[1,0,81/100];

b=[1,0,-1];

k=0:

20;

x=(10+10.*cos(1/2.*k)+10.*cos(k));

y=filter(b,a,x)

subplot(3,1,1),impz(b,a,0:

20),

subplot(3,1,2),dstep(b,a,0:

20),

subplot(3,1,3),stem(k,y)

四、记录信号波形

1、①

1、②

1、③

1、④

2、①

2、②

2、③

2、④

 

实验三连续时间信号的频域分析

一、实验目的

1.熟悉傅里叶变换的性质

2.熟悉常见信号的傅里叶变换

3.了解傅里叶变换的MATLAB实现方法

二、实验原理

傅里叶变换是信号分析的最重要的内容之一。

从已知信号

求出相应的频谱函数

的数学表示为:

的傅里叶变换存在的充分条件是

在无限区间内绝对可积,即

满足下式:

但上式并非傅里叶变换存在的必要条件。

在引入广义函数概念之后,使一些不满足绝对可积条件的函数也能进行傅里叶变换。

  傅里叶反变换的定义为:

  在这一部分的学习中,大家都体会到了这种数学运算的麻烦。

在MATLAB语言中有专门对信号进行正反傅里叶变换的语句,使得傅里叶变换很容易在MATLAB中实现。

在MATLAB中实现傅里叶变换的方法有两种

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 环境科学食品科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1