信号处理与系统分析的 MATLAB 实现(txt+pdf+epub+mobi电子书下载)


发布时间:2020-10-11 11:22:12

点击下载

作者:王文光,魏少明等

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

信号处理与系统分析的 MATLAB 实现

信号处理与系统分析的 MATLAB 实现试读:

内容简介

本书结合大学信号与系统课程,介绍了信号处理与系统分析的基础理论和基于MATLAB的实现方法。全书共7章,内容包括:MATLAB基础、信号的图形表示、信号变换、线性时不变系统、信号采样与重构、基于罗兰C信号的综合仿真和信号与系统MATLAB演示软件。前5章主要针对课程教学的具体内容,后两章则是属于综合提高。本书各章节在内容安排上,首先进行原理和方法说明,然后对学习中需要深刻理解的一些知识点有针对性地设计了MATLAB仿真和验证案例。读者通过编程实现和观察仿真结果可以加深对所学知识的掌握和理解,也为更深入地思考信号与系统的相关问题奠定基础。本书在仿真验证基本理论的同时,也为学生学习和利用软件仿真,提高编程验证能力提供了参考例程。

本书可作为电子信息工程及相关专业本科生学习信号与系统课程的参考书,供学生课后复习和深入理解所学基础理论使用,也可作为信号与系统课程的实验指导书。前 言

信号与系统是高等院校通信和电子类专业的一门重要专业基础课,该课程主要研究确定信号与线性时不变系统的基本概念和分析方法。信号与系统课程是学习通信原理、自动控制、数字信号处理等专业课程的基础,在课程体系中处于连接基础课与专业课的桥梁位置。正因如此,信号与系统课程是很多高校硕士研究生入学考试的科目之一。

信号与系统在内容上具有较强的系统性和抽象性,对问题分析的角度也跨越了时域、频域、复频域等多个域,具有多样性。另外,信号与系统模型的建立又包含了很多数学及物理问题,涉及的知识面很宽。在具体问题的解决过程中,很多时候并不采用直接性的方法,通常是通过与基本信号的关系来求解,这就存在处理方法和基本信号的选择问题。结合信号与系统课程的学习,对所涉及的信号问题和系统问题的理解和分析都需要不断拓宽思路,灵活采用多种方式来展现信号与系统的特点。作者近年来一直从事信号与系统课程的教学工作,在教学过程中,深感基础理论和基本方法对于掌握本课程的知识以及后续其他课程的学习,甚至对于以后参与科研和生产都有重要的影响。

MATLAB是一种可用于算法开发、数据可视化、数据分析以及数值计算的高级计算语言。为科学研究、工程设计以及必须进行数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如 C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平,并在诸多领域的科学研究和仿真验证中得到了广泛的应用。利用MATLAB对信号与系统所涉及的关键知识点进行仿真和验证,一方面通过观察仿真结果可以加深对所学知识的掌握和理解,另一方面也为更深入地思考信号与系统的相关问题奠定基础。作者在教学中会利用MATLAB对课程中信号处理和系统分析的重要知识点进行演示,并通过仿真结果的对比和分析引导学生更深入地思考相关的问题,这种做法得到了学生的认可,结合多年来积累的课堂演示例程,并经过系统整理编写了本书。

目前信号与系统课程的教材有很多,部分术语的用法也不完全一致,在本书编写过程中,主要参考了由Alan V. Oppenheim和Alan S. Willsky编著,并由西安交通大学刘树棠教授翻译的《信号与系统》(西安交通大学出版社),以及北京航空航天大学熊庆旭教授等编著的《信号与系统》(高等教育出版社)的内容。本书的组织架构没有完全按照信号与系统教材的内容和讲授顺序来组织,而是从信号处理、线性时不变系统分析、综合应用几个方面来组织的。这主要是考虑到本书不是课堂教学的同步辅导,只是结合作者课堂教学的经验,抽取了部分知识点进行说明和仿真分析,本书中不同章节的知识点会存在一定的相关性,对于相关性较强的部分就在本书中组织到了一起,并进行了适当的延伸,以便于读者对比分析。

本书的第1章是MATLAB基础,已经具备该基础的读者可以略过该内容。第2章是信号的图形表示,是开展信号处理和系统分析的基础。第3章是信号变换,具体包括了傅里叶级数表示、连续信号的傅里叶变换、连续信号的拉普拉斯变换,这三部分都属于信号处理的范畴,尽管安排在同一章中,但它们位于不同的节中,内容相对独立;第3章还包括了离散时间信号的Z变换。第4章是线性时不变系统,具体包括离散系统的卷积、连续系统的卷积和线性时不变系统的频率响应,主要体现了系统分析的思路和方法。第5章是信号采样与重构,主要对采样定理进行分析和说明。第6章是基于罗兰C信号的综合仿真,结合罗兰C的特点,综合利用所学的信号处理与系统分析的知识开展仿真,增强解决实际问题的能力。第7章是MATLAB演示软件,供读者在学习过程中加强对所学知识的感性认识。

本书在利用MATLAB进行仿真时,对于类似的问题,尽可能采用多种不同的实现方法,使读者通过对不同方法的对比更深入地理解基础理论,同时也为以后开展科学仿真提供借鉴和参考。

本书从准备到完稿,经过多次修改和完善,在编写过程中,一些硕士研究生和本科生也参与了部分工作,这些同学包括季彧、石家宁、刘凯琪、赵新芳、林晓霞、贺聪聪、杨吉煌等,部分同学目前已经毕业,作者在此对参与本书编写和校对工作的同学表示感谢。北京航空航天大学电子信息工程学院王俊老师、电子工业出版社的竺南直老师和底波老师都对本书提出了很多很好的建议,在此一并致谢。

由于作者水平有限,书中难免存在表达不严谨、不恰当,甚至错误的地方,恳请读者批评指正。编著者第1章MATLAB基础1.1 MATLAB简介

MATLAB是一种高精度的科学计算语言。它将计算和可视化编程结合起来,给用户提供一个易于使用的环境。在这个环境里,用户可以用熟悉的数学符号来表示问题及其解决方法。它的典型运用包括数学与运算、算法开发、建模与仿真、数值分析、工程图形科学等。作为一个交互式系统,它的基本数据单元为数组,数组不需要固定的大小,因此用户可以灵活解决许多数学问题,特别是涉及矩阵和向量运算的问题。MATLAB指令表达式类似于数学运算、工程应用中常用的格式。相对于C和Fortran这些高级语言,MATLAB的语法规则更为简单。

MATLAB最重要的特性是它提供了很多已有程序组以解决特定应用问题,也就是工具箱,如信号处理工具箱、控制系统工具箱、神经网络工具箱、模糊逻辑工具箱、通信工具箱、数据采集工具箱以及其他许多特定的工具箱。对于大多数用户,为了能够灵活而高效地使用工具箱,他们通常需要学习相关的专业知识。除了内置函数外,所有主要文档和MATLAB工具箱文件都是可读且可更改的。这些工具箱实际就是一套复杂函数,工具箱的应用进一步扩展了MATLAB软件的功能。为了能够解决特殊问题,用户可以改变源文件并加入自己的文件以建立新的工具箱。

在MATLAB软件成功安装后,以R2011b版本为例,首次进入显示的主界面如图1-1所示。图1-1 MATLAB用户界面(1)指令窗。MATLAB操作的最主要窗口。在该窗内,可输入各种MATLAB指令、函数、表达式;显示除图形外的所有运算结果;运行错误时,显示相关提示。(2)当前目录浏览器。在该浏览器中,展示着子目录、M文件、MAT文件和MDL文件等。对该界面上的M文件,可以直接进行复制、编辑和运行;界面上的MAT数据文件,可以直接送入MATLAB工作内存。

此外,在当前目录浏览器正下方,还有一个“选中目标简况”窗。该窗显示所选文件的概况信息。比如该窗会展示:M文件的H1行内容,最基本的函数格式;所包含的内嵌函数和其他子函数。(3)工作空间浏览器。该窗口罗列出MATLAB工作空间中所有的变量名、大小、字节数。在该窗中,可对变量进行观察、编辑、提取和保存。(4)历史指令窗。该窗口记录已经运行过的指令、函数、表达式,以及它们运行的日期、时间。该窗中的所有指令、文字都允许复制、重运行及用于产生M文件。1.2 MATLAB基本操作

MATLAB提供方便实用的功能键用以在当前或之前的输入命令窗口编辑、修改命令行。这些功能键如表1-1所示。表1-1 常用功能键1.2.1 MATLAB运算模式

MATLAB的运算模式有两种:命令行运算模式和 M文件运算模式。命令行运算模式是直接在命令窗口的提示“>>”后输入命令或运算表达式。按下“Enter”键后,MATLAB 将会进行运算并显示运算结果。这种方式比较适合实现一些简单的功能,比如简单的计算或画图等。M文件运算模式是一种用MATLAB语言写成的计算机程序,它的扩展名为“.m”。在MATLAB的 M 文件编辑器中输入、编辑和调试代码,然后在命令窗口中输入所生成的文件名就可以运行它了。

当M文件运行时,MATLAB将会使用它默认的搜索路径去寻找M文件。如果你想运行的M文件不在搜索路径中,它将不会被执行。我们可以使用MATLAB用户主界面中的“File”菜单下的“set path”命令设置,在MATLAB搜索路径中加入我们所需要的文件夹和目录。

1.命令行运算模式举例

可以在命令窗口中直接输入以下命令实现三角函数绘图。

clear;

x = -pi:0.1:pi;

y1 = sin(x);

y2 = cos(x);

plot(x,y1,x,y2);

title('cosine and sine functions');

xlabel('time');

ylabel('Amplitude');

legend('y = cos(x)','y = sin(x)');

grid on;

命令窗口操作运行结果如图1-2所示。图1-2 命令窗口操作运行结果

2.M文件举例

通常M文件中会包含一定的注释语句,这些注释语句的出现位置可以放在解释对象的上面、下面或后面,甚至可以放在程序开始的地方,以下为一个M文件的例子,其中有多行注释语句。

% 这是一个M函数示例

function [y,pos] = findmax(a)

% findMax可以找出矩阵a中最大值及其地址

% y = findmax(a):找出矩阵 a 中的最大值

% [y,pos] = findmax(a):找出矩阵 a 中的最大值,pos为最大值地址

[y,p] = max(a(:));

[r,c] =ind2sub(size(a),p);

pos = [r,c];1.2.2 数据类型和算术运算

1.数字、变量和表达式

每种编程语言都有自己的数字、变量和表达式使用约束,MATLAB变量的描述是十进制形式,十进制的小数点和复数符号可以用在科学计数法中,如 1.3e-3。MATLAB可支持16位有效数字,从 10e-3 08~ 10e3 08。

数字是数学运算的最基本对象,MATLAB中定义的数字的数据类型为整数、浮点数和复数三种,另外,还定义了Inf和NaN两个特殊数值。

MATLAB支持8位、16位、32位和64位的有符号和无符号整数。这8种数据类型及其描述如表1-2所示。表1-2 整数类型

MATLAB支持单精度和双精度两种浮点数,其中,双精度浮点数是MATLAB的默认数据类型。这两种数据类型及其描述如表1-3所示。表1-3 浮点数类型

复数包含实部和虚部,在MATLAB中,用i或者j来表示虚部。

MATLAB中,Inf和-Inf分别表示正无穷大和负无穷大。除法运算中除数为0或者结果溢出都有可能导致Inf或-Inf的运算结果。类似1/0的结果是Inf。用NaN(Not a Number)表示一个既不是实数也不是复数的数值。类似0/0、Inf/Inf的结果都是NaN。

MATLAB用户自定义变量命名规则:MATLAB的变量要求区分大小写,首字符要求是英文字母,长度不得超过31个字符,可包含英文字母、数字和下画线。但变量名称中不能包含空格或标点符号。

除了用户自定义变量以外,MATLAB中有一些预定义变量,这些预定义变量具有相应的初始值,其中比较常用的如表1-4所示。表1-4 MATLAB默认预定义变量

表达式是由数字、算符、数字分组符号(括号)、用户变量和系统变量等组合所得到的。下面给出一个简单的表达式及其运行结果。

2.算术运算符和表达式

MATLAB中的算术运算符如表1-5所示。表1-5 MATLAB中的算术运算符

MATLAB中的表达式由变量名、运算符号和函数名组成。括号具有最高优先级。算术运算的优先级顺序为:乘方>相乘/相除>加法/减法。赋值运算符“=”和其他运算符的旁边可以加入空格,以提高程序的可读性。

算数运算符应用示例如下。

以下运算均针对于 A=[1,2,3;5,6,7;3,4,9],B=[2,3,5;5,2,7;4,6,9]进行描述。(1)计算线性等式x=A B中的x的值。

命令:

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

B=[2,3,5;5,2,7;4,6,9];

x=B/A

结果:

x =(2)计算3./A。

命令:

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

C=3./A

结果:1.2.3 关系和逻辑运算符

MATLAB与其他的计算机语言一样,不仅有算数运算符,还有关系运算符和逻辑运算符。关系运算符和逻辑运算符分别如表1-6和表1-7所示。表1-6 关系运算符表1-7 逻辑运算符

MATLAB规定:在所有的关系和逻辑表达式中,所有的非零数值都表示“真”,只有 0表示“假”。

关系运算和逻辑运算的结果为由“0”或“1”组成的逻辑数组。逻辑数组是一种具有特殊数值的数组,它会涉及数值运算和函数调用,同是它也可以表示逻辑结果。

关系运算符应用示例如下。(1)在命令窗口输入“A=1 : 9”,输入以下的命令可以得到对应关系运算的结果。

B=10-A,r0=(A

结果:

A=1 2 3 4 5 6 7 8 9

B=9 8 7 6 5 4 3 2 1

r0=1 1 1 1 0 0 0 0 0

r1=0 0 0 0 1 0 0 0 0(2)显示矩阵 A=[-1,2,4; -2,5,3;9, -8,3]中值大于 3 的元素。

命令:

A=[-1,2,4;-2,5,3;9,-8,3];

A>3*ones(3)

结果:

0   0   1

0   1   0

1   0   0

若一个表达式包括运算变量、算数运算符、关系运算符和逻辑运算符等,则表达式的计算需要遵循一套优先级顺序,MATLAB首先计算优先级高的运算,再计算优先级低的运算;若优先级相同,则按照从左到右的顺序依次计算。表 1-8 所示为按照优先级从高到低对运算符进行排序。表1-8 运算符的优先等级

MATLAB支持两种不同的数值运算方式—数组和矩阵运算。其中数组运算指数组对应元素之间的运算,也称为点运算,MATLAB支持多维数组。数组运算需要输入的数组有相同的大小,否则无法进行运算。而矩阵运算遵循线性变换,并不是简单的多维数组的运算,输入矩阵的维数之间的关系则取决于具体的运算操作,如右除需要两个矩阵有相同的列数,而矩阵相乘则需要前者的列数与后者的行数相等。英文句号“.”可用来区分数组运算和矩阵运算,两种运算中的加减都是相同的,因此不需要将它们写成“.+”和“.-”。若数组或矩阵运算的操作数中有一个为标量而另外一个不是,那么MALTAB将会对其进行标量扩展,使其变为普通的数组或矩阵运算。

表 1-9给出了数组和矩阵运算的一些区别,本质上的区别是对元素的操作还是对数据整体的操作,数组的概念在其他的编程语言中也有定义,数组与矩阵本质上具有一致性,都是对数据存储和处理的一种方式,这里的数组运算可以看作这个专有的名词,而不要理解为是一种针对数组的运算。表1-9 数组和矩阵运算符之间的区别(A、B为非标量)

以下为数组与矩阵运算举例,其中的“命令”表示在命令窗口直接输入。这里需要注意,在输入矩阵时,由于矩阵具有多行多列,要注意元素之间的区分,同行元素间用逗号或空格隔开,不同的行由分号“;”或用回车键隔开。命令输入完毕,回车表示代码执行命令。(1)命令:

结果:(2)命令:

结果:(3)命令:

结果:(4)命令:

结果:(5)命令:

结果:(6)命令:

结果:(7)命令:

结果:(8)对于如下矩阵:

计算A*B,A.*B,A.^B,并比较结果。

输入命令参考:

结果:

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载