信号与系统实验讲义DOC.docx

上传人:b****9 文档编号:25701846 上传时间:2023-06-11 格式:DOCX 页数:53 大小:280.20KB
下载 相关 举报
信号与系统实验讲义DOC.docx_第1页
第1页 / 共53页
信号与系统实验讲义DOC.docx_第2页
第2页 / 共53页
信号与系统实验讲义DOC.docx_第3页
第3页 / 共53页
信号与系统实验讲义DOC.docx_第4页
第4页 / 共53页
信号与系统实验讲义DOC.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

信号与系统实验讲义DOC.docx

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

信号与系统实验讲义DOC.docx

信号与系统实验讲义DOC

目录

实验一MATLAB基础知识3

实验二连续信号的时域描述11

实验三连续信号的基本运算14

实验四离散信号的时域描述与运算17

实验五利用MATLAB进行系统的时域分析20

实验六连续信号的频域分析24

实验七连续信号与系统的S域分析27

实验八离散LSI系统的时域及复频域分析32

实验一MATLAB基础知识

一、实验目的

初步了解Matlab的基本语法规则;

掌握Matlab矩阵运算和数组运算的基本规则,以及基本绘图方法。

二、实验环境

计算机,Matlab软件

三、实验原理

1、MATLAB基本语句

1)循环语句

MATLAB的循环语句包括for循环和while循环两种类型。

(1)for循环

语法格式:

for循环变量=起始值:

步长:

终止值

循环体

end

起始值和终止值为一整型数,步长可以为整数或小数,省略步长时,默认步长为1。

执行for循环时,判定循环变量的值是否大于(步长为负时则判定是否小于)终止值,不大于(步长为负时则小于)则执行循环体,执行完毕后加上步长,大于(步长为负时则小于)终止值后退出循环。

例1给矩阵A、B赋值。

MATLAB语句及运行结果如下:

k=5;

a=zeros(k,k)%矩阵赋零初值

form=1:

k

forn=1:

k

a(m,n)=1/(m+n-1);

end

end

fori=m:

-1:

1

b(i)=i;

end

(2)while循环

语法格式:

while表达式

循环体

end

其执行方式为:

若表达式为真(运算值非0),则执行循环体;若表达式为假(运算结果为0),则退出循环体,执行end后的语句。

例2

a=3;

whilea

a=a-1

end

输出:

a=2

a=1

a=0

2)条件转移语句

条件转移语句有if和switch两种。

(1)if语句

MATLAB中if语句的用法与其他高级语言相类似,其基本语法格式有以下几种:

格式一:

if逻辑表达式

执行语句

end

格式二:

if逻辑表达式

执行语句1

Else

执行语句2

end

格式三:

if逻辑表达式1

执行语句1

else?

if逻辑表达式2

执行语句2

end

(2)switch语句

switch语句的用法与其他高级语言相类似,其基本语法格式为:

switch表达式(标量或字符串)

case值1

语句1

case值2

语句2

Otherwise

语句n

end

2、绘图语句

常用的MATLAB绘图语句有figure、plot、subplot、stem等,图形修饰语句有title、axis、text等。

1)figure

figure有两种用法,只用一句figure命令,会创建一个新的图形窗口,并返回一个整数型的窗口编号。

figure(n)表示将第n号图形窗口作为当前的图形窗口,并将其显示在所有窗口的最前面;如果该图形窗口不存在,则新建一个窗口,并赋以编号n。

2)plot

线型绘图函数。

用法为plot(x,y,'s')。

参数x为横轴变量,y为纵轴变量,s用以控制图形的基本特征如颜色、粗细等,通常可以省略,常用方法如表1所示。

3)Stem

绘制离散序列图,常用格式stem(y)和stem(x,y)分别和相应的plot函数的绘图规则相同,只是用stem命令绘制的是离散序列图。

表1

4)Subplot

subplot(m,n,i)图形显示时分割窗口命令,把一个图形窗口分为m行,n列,m×n个小窗口,并指定第i个小窗口为当前窗口。

5)绘图修饰命令

在绘制图形时,我们通常需要为图形添加各种注记以增加可读性。

在plot语句后使用title('标题')可以在图形上方添加标题,使用xlabel('标记')或ylabel('标记')为X轴或Y轴添加说明,使用text(X值、Y值、'想加的标示')可以在图形中任意位置添加标示。

例3画图基本语句如图2-1所示。

MATLAB语句及运行结果如下:

x=0:

0.1*pi:

2*pi;%定义x向量

figure

(1);%创建一个新的图形窗口,编号为1

subplot(2,2,1);%将窗口划分为2行,2列,在第1个窗口中作图

plot(x,sin(x));%画图

title('正弦线');%给图形加标题

subplot(2,2,2);%在第2个窗口中作图

plot(x,sin(x),'r');%画一正弦波,红色

xlabel('X');%给x轴加说明

ylabel('SIN(X)');%给y轴加说明

subplot(2,2,3);%在第3个窗口中作图

plot(x,sin(x),'--');%画一正弦波,破折线

subplot(2,2,4);%在第4个窗口中作图

plot(x,sin(x),'r+');%画一正弦波,红色+线

text(4,0,'注记');

3、MATLAB内部特殊变量和常数

1)MATLAB内部特殊变量和常数

MATLAB内部有很多变量和常数,用以表达特殊含义。

常用的有:

变量ans:

指示当前未定义变量名的答案;

常数eps:

表示浮点相对精度,其值是从1.0到下一个最大浮点数之间的差值。

该变量值作为一些MATLAB函数计算的相对浮点精度,按IEEE标准,如:

,近似为2.2204e-016;

常数Inf:

表示无穷大。

当输入或计算中有除以0时产生Inf;

虚数单位i,j:

表示复数虚部单位,相当于

NaN:

表示不定型值,是由0/0运算产生的。

常数pi:

表示圆周率π,其值为3.1415926535897…;

MATLAB中可表示的数字的近似范围从

有效数字表示的典型例子如下:

1234.56789,123456.789E-2,1.23456789e3(format指令可以控制显示格式)

复数形式:

3.5+4*j,-2.1-7.4*j(i也可以)

取绝对值:

abs()

语法格式:

abs(x)。

当x为实数时计算x的绝对值;x为复数时得到的是复数的模值;x为字符串时得到各字符的ASCII码。

取相角:

angle()

语法格式:

angle(z)。

求复矢量或复矩阵的相角,结果为一个以弧度为单位介于-π和+π之间的值。

2)变量

1.变量命名规则

MATLAB中对变量的命名应遵循以下规则:

(1)变量名可以由字母、数字和下划线混合组成,但必须以字母开头;

(2)字符长度不能大于31;

(3)变量命名区分大小写。

2.局部变量和全局变量

局部变量是指那些每个函数体内自己定义的,不能从其他函数和MATLAB工作空间访问的变量。

全局变量是指用关键字“global”声明的变量。

全局变量名应尽量大写,并能反映它本身的含义。

如果需要在工作空间和几个函数中都能访问一个全局变量,必须在工作空间和这几个函数中都声明该变量是全局的。

3)矩阵及其运算

MATLAB具有强大的矩阵运算和数据处理功能,对矩阵的处理必须遵从代数规则。

矩阵生成

(1)一般矩阵的生成

对于一般的矩阵MATLAB的生成方法有多种。

最简单的方法是从键盘直接输入矩阵元素。

直接输入矩阵元素时应注意:

各元素之间用空格或逗号隔开,用分号或回车结束矩阵行,用中括号把矩阵所有元素括起来。

例1在工作空间产生一个3×3矩阵A可用MATLAB语言描述如下:

A=[123;456;789]

A=[123

456

789]

运行结果:

A=

123

456

789

Size(A)得到矩阵的大小,

ans=

33

(2)特殊矩阵的生成

对于特殊的矩阵可直接调用MATLAB的函数生成。

用函数zeros生成全0矩阵:

格式B=zeros(m,n)生成m×n的全0阵。

用函数ones生成全1矩阵:

格式B=ones(m,n)生成m×n的全1阵。

用函数eye生成单位阵:

格式B=eye(m,n)生成m×n矩阵,其中对角线元素全为1,其他元素为0。

矩阵的运算

矩阵的运算有基本运算和函数运算两种类型。

基本运算包括矩阵的加、减、乘、除、乘方、求转置、求逆等,其主要特点是通过MATLAB提供的基本运算符+、-、*、/(\)、^等即可完成。

函数运算主要是通过调用MATLAB系统内置的运算函数来求取矩阵的行列式(det(A)),求秩(rank(A)),求逆(inv(A)),求特征值和特征向量([V,D]=eig(A)),求Jordan标准形(jordan(A))和矩阵分解等。

需要用时可以参阅联机帮助和相关参考书。

(.*,.\,表示逐个元素的乘积和相除;矩阵X/Y相当于X*inv(Y),X\Y相当于inv(Y)*X)

例2矩阵的基本运算。

A=[1,2,3;4,5,6];

B=[6,5,4;3,2,1];

C=A+B%计算两个矩阵的和

D=B'%计算矩阵B的转置

E=A*D%做矩阵乘法,必须要满足矩阵乘法的基本要求E应该是2阶方阵

F=det(E)%求E的行列式值

G=E^(-1)%求E的逆

输出结果:

4、MATLAB函数、及其调用方法

在MATLAB语言中,M文件有两种形式:

脚本和函数。

脚本没有输入/输出参数,只是一些函数和命令的组合。

它可以在MATLAB环境下直接执行,也可以访问存在于整个工作空间内的数据。

由脚本建立的变量在脚本执行完后仍将保留在工作空间中可以继续对其进行操作,直到使用clear命令对其清除为止。

函数是MATLAB语言的重要组成部分。

MATLAB提供的各种工具箱中的M文件几乎都是以函数的形式给出的。

函数接收输入参数,返回输出参数,且只能访问该函数本身工作空间中的变量,从命令窗或其他函数中不能对其工作空间的变量进行访问。

1.函数结构

MATLAB语言中提供的函数通常由以下五个部分组成:

(1)函数定义行:

以function开头,函数名(必须与文件名相同)及函数输入输出参数在此定义;

(2)H1行:

第一注释行,供lookfor和help在线帮助使用;

(3)函数帮助文件;通常包括函数输入输出参数的含义,调用格式说明;

(4)函数体:

它包括进行运算和赋值的所有MATLAB程序代码。

函数体中可以包括流程控制、输入/输出、计算、赋值、注释以及函数调用和脚本文件调用等。

在函数体中完成对输出参数的计算;

(5)注释。

这五个部分中最重要的是函数定义行和函数体。

函数定义行是一个MATLAB函数所必需的,其他各部分的内容可以没有,这种函数称为空函数。

例1

functionsa=circle(r,s)

%Circleplotacircleofradiirinthelinespecifiedbys

%rraddi

%slinecolor

%saareaofthecircle

%

%circle(r)usebluelinetodrawacircleofradiir

%circle(r,s)use's'todrawcircle

%sa=circle(r)computetheareaofthecircleanddrawitinblue

%sa=circle(r,s)computetheareaofthecircleanddrawitincolor's'

ifnargin>2

error('tomanyinput');

end

clf;t=0:

pi/100:

2*pi;

x=r*exp(i*t);

ifnargout==0

plot(x,s);

else

sa=pi*r*r;

fill(real(x),imag(x),s)

end

axis('square');%makesthecurrentaxisboxsquareinsize.

例2

functiony=imp_fun(n,n0)

%IMP_FUNUnitimpulsefunction.

%

%IMP_FUN(N,N0),whereNisavectorofsequentialintegers,

%returnsavectorthesamelengthasNwithzeroseverywhereexcept

%N=N0.

[m1,n1]=size(n);

if~(m1==1|n1==1)

error('Thesamplevectormustbeone-dimensional.');

end

y=zeros(m1,n1);

i=find(n>=n0);

ifisempty(i)

return

end

y(i

(1))=1;%wheren=n0,setoutputto1

2.函数调用

函数调用的过程实际上就是参数传递的过程。

例如,在一个脚本文件里调用函数“max”可采用如下方式:

n=1:

20;

a=sin(2*pi*n/20);

[Y,I]=max(a);

该调用过程把变量“a”传给了函数中的输入参数“x”,然后把函数运算的返回值传给输出参数“Y”和“I”。

其中,Y是a序列的最大值,I是最大值Y对应的坐标值。

例3

构造:

y[n]=δ[n-3]:

调用函数:

n=0:

6;

y=imp_fun(n,3);

stem(n,y)

例4

构造:

y[n]=5δ[n]-δ[n-2]:

调用函数:

y=5*imp_fun(n,0)-imp_fun(n,2);

stem(n,y);

四、实验内容

1、上机前,认真阅读实验原理,并对原理中的程序进行验证。

2、通过MATLAB语言,产生一个矩阵,并给矩阵赋值。

3、产生3类基本矩阵,基本矩阵的显示方式:

ones,zeros,eye。

4、在同一张图上绘出:

y=3sin(x+pi/3),y=cos(3x+pi/6),并用不同的线型和点型区分。

5、绘制以下图形:

y=cos(2x),y=sin(3x),y=cos2(x)+sin(x),y=sin(x)*cos(x);要求:

用subplot()将画面分成四个,并且绘制的形式不同。

6、利用plot3()画空间曲线:

x=sin(t),y=cos(t),z=cos(2t)。

五、思考题

1、判断以下变量名是否合法?

1)x22)3col3)_row4)for

2、求以下变量的值,并在MATLAB中验证。

1)a=1:

2:

52)b=[a'a'a']3)c=a+b(2,:

六、实验报告要求

1、简述实验目的及实验原理。

2、编程实现实验内容,并记录各输出波形,要求附上源程序,并记录波形。

3、回答思考题。

 

实验二连续信号的时域描述

一、实验目的

绘制典型信号的波形;

了解这些信号的基本特征。

二、实验环境

计算机,Matlab软件

三、实验原理

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

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

表示。

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

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

根据MATLAB的数值计算功能和符号运算功能,在采用适当的MATLAB语句表示出信号后,就可以利用MATLAB中的绘图命令绘制出直观的信号波形了。

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

1、基于MATLAB的信号描述方法

向量表示法:

对于连续时间信号f(t),可以定义两个行向量f、t来表示,其中向量是t是形如t=t1:

△t:

t2的MATLAB命令定义的时间范围向量,t1为信号起始时间,t2为终止时间,△t为信号时间间隔;向量f为连续时间信号f(t)在向量t所定义的时间点上的采样值。

t=0:

0.01:

10;

ft=2*exp(0.4*t);

plot(t,ft);

符号运算表示法:

如果信号可以用一个符号表达式来表示,则可用绘制出信号的波形。

f=sym(‘2*exp(0.4*t)’);

ezplot(f,[010]);

2、常用连续信号的MATLAB表示

(1)指数信号

指数信号

在MATLAB中可用exp函数表示,其调用形式为:

y=A*exp(a*t)

取A=1,a=-0.4。

该指数信号的MATLAB程序表示如下:

A=1;

a=-0.4;

t=0:

0.01:

10;

ft=A*exp(a*t);

plot(t,ft);

(2)正弦信号

正弦信号Acos(

*t+

)和Asin(

+

)分别用MATLAB的内部函数cos和sin表示,其调用形式为:

A*cos(

*t+phi)和A*sin(

*t+phi)

正弦信号的MATLAB源程序如下(取A=1,

=2

=

/6):

A=1;w0=2*pi;phi=pi/6;

t=0:

0.001:

8;

ft=A*sin(w0*t+phi);

plot(t,ft);

(3)抽样函数

Sa(t)在MATLAB中用sinc函数表示,其定义为:

Sinc(t)=sin(

t)/(

t)

其调用形式为:

Y=sinc(t)

其MATLAB源程序如下:

%program1-3Samplefunction

t=-3*pi:

pi/100:

3*pi;

ft=sinc(t/pi);

plot(t,ft);

(4)矩形函数

矩形脉冲信号在MATLAB中用rectpuls函数来表示,其调用形式为:

y=rectpuls(t,width)

用以产生一个幅值为1、宽度为width、相对于t=0点左右对称的矩形波信号。

该函数的横坐标范围由向量t决定,是以t=0为中心向左右各展开width/2的范围。

Width的默认值为1。

t=2T(即t-2×T=0)为对称中心的矩形脉冲信号的MATLAB源程序如下(取T=1):

%program1-4Rectangularpulsesignal

t=0:

0.001:

4;

T=1;

ft=rectpuls(t-2*T,2*T);

plot(t,ft);

(5)三角波脉冲信号

三角波脉冲信号在MATLAB中用tripuls函数来表示,其调用形式为:

y=tripuls(t,width,skew)其中skew取值范围在-1~+1之间

用以产生一个最大幅度为1、宽度为width、斜度为skew的三角波信号。

该函数的横坐标范围由向量t决定,是以t=0为中心向左右各展开width/2的范围。

斜度skew是一个介于-1和1之间的值,它表示最大幅度1出现在t=(width/2)×skew的横坐标位置。

三角波信号的MATLAB源程序如下:

%program1-6Triangularpulsesignal

t=-3:

0.001:

3;

ft=5*tripuls(t,4,0.5);

plot(t,ft);

(6)阶跃信号:

单位阶跃信号u(t)用“t>=0”产生,调用格式为y=(t>=0)

t=-2:

0.01:

5;

ft=(t>=0);

plot(t,ft)

或者MATTLAB符号数学函数Heaviside表示阶跃信号,但要画图需在工作目录创建Heaviside的M文件

functionf=Heaviside(t)

f=(t>0);

保存,文件名是Heaviside,调用该函数即可画图

t=-2:

0.01:

5

y=heaviside(t)

plot(t,y);

axis([-3602])

或者y=sym('Heaviside(t)');

ezplot(y,[-1,5]);gridon

其他信号的调用方式:

复指数信号:

K*exp((a+i*b)*t)

周期矩形脉冲信号:

square(t,DUTY),其中DUTY参数表示信号的占空比DUTY%,即在一个周期脉冲宽度(正值部分)与脉冲周期的比值。

占空比默认为0.5。

周期三角波信号:

sawtooth(t,width)

四、实验内容

1、上机前,认真阅读实验原理,掌握信号表示和信号运算的方法,并对原理中的程序进行验证。

2、利用MATLAB命令画出下列连续信号的波形图。

1)

2)

3)

4)

5)

6)

3、试用Matlab绘制出如下连续时间信号的时域波形,并观察信号是否为周期信号。

若是周期信号,周期是多少?

(a)

(b)

(c)

五、思考题

两个周期信号经过相加、相减或相乘后,所得到的信号是否仍为周期性信号?

举例说明各种情况。

六、实验报告要求

1、简述实验目的及实验原理。

2、编程实现实验内容,并记录各输出波形,要求附上源程序,并记录波形。

3、回答思考题。

实验三连续信号的基本运算

一、实验目的

通过绘制信号运算结果的波形,了解这些信号运算对信号所起的作用。

二、实验环境

计算机,Matlab软件

三、实验原理

1、信号的相加与相乘

信号的相加和相乘是信号在同一时刻取值的相加和相乘。

因此Matlab对于时间信号的相加和相乘都是基于向量的点运算。

相加:

可用算术运算符“+”实现。

相乘:

可用数组运算符“.*”实现。

注意:

要保证加法与乘法运算正确进行,两信号的长度必须相同。

t=0:

0.001:

8;

A=1;a=-0.4;w0=2*pi;

xt=A*exp(a*t).*sin(w0*t);

plot(t,xt)

2、信号的微分与积分

1)连续时间信号的微分运算

(1)可使用diff命令函数来完成,其语句格式为:

diff(function,‘variable’,n)

其中,function表示需要进行求导运算的函数,或者被赋值的符号表达式;variable为求导运算的独立变量;n为求导阶数,默认值为一阶导数。

clear;

symsaxy1y2;%定义符号变量a,x,y1,y2

y1=sin(a*x^2);%符号函数

y2=x*sin(x)*log(x);%符号函数

dy1=diff(y1,'x')%无分号直接显示结果

d2=diff(y2)%无分号直接显示结果

(2)

h=0.001;x=0:

h:

pi;

y=diff(sinx(x.^2))/h;

2)连续时间信号积分运算

可以使用quad命令函数来完成,其语句格式为:

quad(‘function_name’,a,b)

其中,function_name表示被积函数,或者被赋值的符号表达式;a为积分下限,b为积分上限,a和b默认时则求不定积分。

求三角波的积分和微分

为了便于利用quad函数计算信号的积分,将三解波写成MATLAB函数,且函数命名为x2_2,程序如下:

functionyt=x2_2(t);

yt=tripuls(t,4,0.5);

利用diff和quad函数,并调用x2_2可实现三解波的微

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

当前位置:首页 > 工程科技

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

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