第13章 信号与系统实践

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

下篇实践提高

感性认识和理性认识是相辅相成、缺一不可的。只有感性认识而没有理性认识,则对事物的认识深度稍显欠缺;只有理性认识而没有感性认识,则对事物的具体表现缺乏直观了解。在上篇和中篇学习了信号和系统分析的理论之后,本篇通过各种实验帮助读者加深对相关理论的理解,提高自身工程实践能力。

本篇主要介绍了信号的表示及可视化、信号的卷积积分及卷积和、傅里叶变换、拉普拉斯变换、z变换、系统的零、极点分析、系统时域响应求解、系统变换域响应求解等40个实验,每个实验均分别采用MATLAB语言和Python语言编程实现。

第十三章信号与系统实践

【内容提要】

本章首先简要介绍MATLAB和Python语言,然后重点介绍利用MATLAB和Python 语言实现连续、离散信号的表示及可视化、信号的卷积积分及卷积和、傅里叶变换、拉普拉斯变换、z变换、系统的零、极点分析、系统时域和变换域响应求解的仿真方法。通过学习本章内容,读者应能够掌握利用MATLAB 和Python语言进行信号与系统重点知识仿真的基本方法和基本原理。

【重点难点】

★MATLAB、Python实现信号的时域表示、运算

★MATLAB、Python实现三大变换

★MATLAB、Python实现系统响应求解的仿真

★MATLAB、Python实现系统的零、极点分析

§13.1 实验环境简介

本节简要介绍MATLAB和Python语言的基本知识。本节试图以最小的篇幅给出MATLAB和Python的核心框架,对初涉MATLAB和Python的人来说,本节内容是学习后续内容的必要基础。

§13.1.1MATLAB语言简介

矩阵和数组是数值计算的最基本运算单元,在MATLAB中,数组运算与矩阵运算有着较大的区别。数组运算的规则是:无论在数组上施加何种运算,数组运算的结果都是将该运算平等的作用于数组中的每一个元素;而矩阵运算则遵循普通数学意义上的矩阵运算规则。由于MATLAB的大部分运算或命令都是在矩阵运算意义下执行的,因此下面着重介绍矩阵的相关知识。

MATLAB最基本的数据结构是二维矩阵。每个矩阵的单元可以是数值、逻辑、字符类型或者其他任何的MATLAB数据类型。无论是单个数据还是一组数据,MATLAB 均采用二维矩阵来存储。

对于一个数据,MATLAB用1×1矩阵来表示;对于一组数据,MATLAB用1×n矩阵来表示,其中n是这组数据的长度。通常把1×1的矩阵称为标量,把1×n的矩阵称为向量。把至少有一维的长度为0的矩阵称为空矩阵,空矩阵可以用“[]”来表示。

例如,实数2.5是1×1的双精度浮点数类型矩阵。在MATLAB中可以用语句whos来显示数值的数据类型和存储矩阵大小。

>> a=2.5;

>>whos a

由上面的语句得到的输出代码如下:

Name Size Bytes Class Attributes

A 1×1 8 double

又例如,字符串“happy new year”是1×14的字符类型矩阵,可以用如下语句来查看该字符串的数据类型和存储矩阵大小。

>> str='happy new year';

>> whos str

由上面的语句得到的输出如下:

Name Size Bytes Class Attributes

str 1×14 28 char

最简单的构造矩阵的方法就是采用矩阵构造符“[]”,构造一行的矩阵可以把矩阵元素放在矩阵构造符“[]”中,并以空格或者逗号来隔开它们,其代码如下:

>> a=[1 2 3 4] 或者>> a=[1,2,3,4]

a=

1 2 3 4

如果矩阵是多行的,行与行之间用分号隔开,例如,一个3×4的矩阵可以用如下语句304

得到,其代码如下:

>> A=[1,2,3,4;5,6,7,8;9,10,11,12]

上述语句得到的矩阵A如下:

A=

1 2 3 4

5 6 7 8

9 10 11 12

MATLAB还提供了一些函数用来构造特殊矩阵。例如,要产生一个3×4的全0矩阵,可以采用函数zeros来实现,代码如下:

>> a=zeros(3,4)

a=

0 0 0 0

0 0 0 0

0 0 0 0

另外,类似的函数还有诸如:ones用来构造全1阵、eye用来构造单位阵、diag用来构造三角阵、rand用来构造元素取值在[0,1]区间均匀分布的随机矩阵、randn用来构造服从正态分布的随机矩阵等。

把两个或者两个以上的矩阵数据连接起来得到一个新矩阵的过程称为矩阵的合并。常用的矩阵合并符有“[]”和“[;]”,表达式C=[A B]表示在水平方向合并矩阵A和B,而表达式C=[A;B]表示在竖直方向合并矩阵A和B。

例如:

>> a=ones(2,3);

>> b=zeros(2,3);

>>c=[a;b]

由上述语句得到的结果如下:

c=

1 1 1

1 1 1

0 0 0

0 0 0

可以用矩阵合并符来构造任意大小的矩阵,需要注意的是在矩阵合并的过程中一定要保持矩阵的形状是方形的。

除了使用矩阵合并符来合并矩阵外,还可以使用矩阵合并函数来合并矩阵:cat(dim,A,B)表示在dim维方向合并矩阵A和B;horzcat(A,B)与[A B]的用途相同,均表示在水平方向合并矩阵;verrcat(A,B)的用途与[A;B]相同,均表示在竖直方向合并矩阵;repmat(A,m,n)表示通过复制矩阵来构造新的矩阵,得到m×n个A的大矩阵。

要删除矩阵的某一行或者是某一列,只要把该行或该列赋予一个空矩阵即可。例如,有一个4×4的矩阵,代码设置如下:

>> A=magic(4)

A=

16 2 3 13

5 11 10 8

9 7 6 12

4 14 1

5 1

如果想要删除矩阵的第3行,则可以用如下语句:

>> A(3,:)=[]

由上述语句得到新的矩阵A如下:

A=

16 2 3 13

5 11 10 8

4 14 1

5 1

下面介绍如何获取矩阵的信息,包括矩阵的尺寸大小、矩阵元素的数据类型和矩阵的数据结构。

常用的矩阵尺寸函数如表13.1-1所示。常用的矩阵数值运算操作如表13.1-2所示。

305

相关文档
最新文档