精通MATLAB图像处理(第2版)(含CD光盘1张)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-26 09:08:28

点击下载

作者:张强,王正林

出版社:电子工业出版社

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

精通MATLAB图像处理(第2版)(含CD光盘1张)

精通MATLAB图像处理(第2版)(含CD光盘1张)试读:

内容简介

本书紧密结合实例,以实用为目标来讲述MATLAB的图像处理技术,在简要介绍图像处理的基础理论之后,重点讲述应用MATLAB图像处理工具箱,并给出了大量的实例及综合实战应用。

本书由MATLAB入门篇、图像处理精通篇和综合实战篇组成。MATLAB入门篇主要介绍MATLAB软件、基本运算、程序设计及图形绘制;图像处理精通篇讲述图像处理的主要内容,包括图像的运算、变换、增强、分析、复原、形态学操作及彩色图像处理等;综合实战篇通过综合实例,讲述应用MATLAB来分析、解决具体的图像处理问题,包括图像重构、增强、配准、去模糊、分割、特征提取、空间变换和大数据图像处理等典型应用。

本书最大特色在于实例丰富,对于提及图像处理的MATLAB实现功能,书中配以120余个实例来精讲,读者可以按照例题,一步一步了解图像处理的基本原理,掌握图像处理的MATLAB解决方法。本书可供从事信号与信息处理、计算机科学与技术、通信工程、地球物理、生物医学工程、遥感、自动化等专业的本科生、研究生作为图像处理辅助教材和参考书使用,也可供相关的工程技术人员参考使用。未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。版权所有,侵权必究。图书在版编目(CIP)数据精通MATLAB图像处理 / 张强,王正林编著.—2版.—北京:电子工业出版社,2012.4ISBN 978-7-121-15798-1Ⅰ.①精… Ⅱ.①张…②王… Ⅲ.①图像处理-计算机辅助计算-软件包,MATLAB Ⅳ.①TP391.41中国版本图书馆CIP数据核字(2012)第012614号策划编辑:张月萍责任编辑:刘 舫特约编辑:赵树刚印  刷:北京中新伟业印刷有限公司装  订:北京中新伟业印刷有限公司出版发行:电子工业出版社     北京市海淀区万寿路173信箱 邮编:100036开  本:787×1092 1/16 印张:26.5 字数:679千字印  次:2012年4月第1次印刷印  数:3500册 定价:65.00元(含光盘1张)

凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,联系及邮购电话:(010)88254888。

质量投诉请发邮件至zlts@phei.com.cn,盗版侵权举报请发邮件至dbqq@phei.com.cn。

服务热线:(010)88258888。第2版 前  言

本书第1版《精通MATLAB图像处理》已被多所院校作为图像处理、数学、信息、计算机、地理信息处理、医学信息处理类课程的教材和教辅参考书,而且由于实例丰富、简单易学、内容全面、讲解细致而深受广大读者的喜爱,上市两年多以来长期占据同类书的销售前列,得到了读者的认可。

根据读者的需求和软件的升级,我们结合MATLAB软件的最新版本,对全书的内容进行了完善与优化,使之更加适合读者的需要。本书导读新增内容

与本书第1版相比,第2版进行了重要的修订和扩充,增加了关于图像空间变换、大数据图像处理、图像匹配和图像处理的GUI工具等内容。

1.新增了第19章“MATLAB图像空间变换实战”

图像的空间变换是数字图像处理的重要技术之一,用于图像校正、图像匹配和图像变形等方面。新增了两个图像空间变换的综合实例,并详细讲解了MATLAB的实现过程与方法。

2.新增了第20章“MATLAB处理大数据图像实战”

图像的数据量越来越大,如遥感图像往往含有大量的数据,这时计算性能就成为制约处理结果的瓶颈。新增了使用并行批处理、分块处理等技术来进行大数据图像处理的综合实例,并详细讲解了MATLAB的实现过程与方法。

3.新增了“图像配准实战”的内容

在原有综合实例的基础上,补充了“旋转和尺度变换后的图像配准”和“配准航拍照片和正射影像”这两个综合实例,简要分析了其实现原理,重点讲解了MATLAB详细的实现过程与方法。

4.新增了“图像处理的GUI工具”

MATLAB提供了图形界面的图像处理工具GUI Tools,更加方便用户的使用。新增了几个常用的、典型的GUI工具,详细地讲述其使用方法,让读者能快速有效地掌握。

5.新增了几个实用函数

新增了几个用于图像运算和图像变换的函数,简要讲解了函数的用法,并通过列举实例,让读者能轻松掌握。光盘使用说明

本书附带光盘实例对应的MATLAB M文件,还包含了书中用到的图像源文件。运行光盘提供的代码文件,读者就能体会本书所有实例的效果。

使用本光盘中的实例前,读者需要安装MATLAB,并将包含待运行.m文件的文件夹添加到MATLAB路径或设置为MATLAB当前目录。致谢

本书主要由张强、王正林编写,其他参与编写的人员有肖静、王伟欣、朱桂莲、刘玉芳、肖绍英、邓祈、钟太平、王龙跃、朱艳、彭斌武、陈菜枚、钟杜清等。在此对所有参与编写的人员表示感谢!

再次对博文视点公司的郭立老师、张月萍老师表示衷心的感谢!对关心、支持我们的读者表示感谢!

由于时间仓促,作者水平和经验有限,书中错漏之处在所难免,敬请读者批评指正,我们的电子邮箱是:wa_2003@126.com。作 者2011年金秋国庆于北京第1篇 MATLAB入门篇Part 1

第1章 MATLAB概述

第2章 MATLAB基本运算

第3章 MATLAB程序设计

第4章 MATLAB图形绘制

第5章 MATLAB图像处理基础第1章 MATLAB概述

经过30余年的补充与完善及多个版本的升级换代,MATLAB软件的功能已经变得非常之强大。MATLAB是一个包含众多科学、工程计算的庞大系统,是目前世界上最流行的计算软件之一。1.1 MATLAB的发展历程

MATLAB语言的产生是与数学计算紧密联系在一起的。1980年,美国新墨西哥州大学计算机系主任Cleve Moler在给学生讲授线性代数课程时,发现学生在高级语言编程上花费了很多时间,于是着手编写供学生使用的Fortran子程序库接口程序,他将这个接口程序取名为MATLAB(Matrix Laboratory的前3个字母的组合,意为“矩阵实验室”)。这个程序获得了很大的成功,受到学生的广泛欢迎。

20世纪80年代初期,Moler等一批数学家与软件专家组建了MathWorks软件开发公司,继续从事MATLAB的研究和开发,1984年推出了第一个MATLAB商业版本,其核心是用C语言编写的。而后,它又添加了丰富多彩的图形图像处理、多媒体、符号运算及与其他流行软件的接口功能,使得MATLAB的功能越来越强大。

MathWorks公司正式推出MATLAB后,于1992年推出了具有划时代意义的MATLAB 4.0版本,之后陆续推出了几个改进和提高的版本,2004年9月正式推出MATLAB Release 14,即MATLAB 7.0,其功能在原有的基础上又有了进一步的改进。

此后,几乎形成了一个规律,每年的3月和9月推出当年的a和b版本,目前的最新版本是MATLAB 2011b。

MATLAB经过几十年的研究与不断完善,现已成为国际上最为流行的科学计算与工程计算软件工具之一,现在的MATLAB已经不仅是一个最初的“矩阵实验室”了,它已发展成为一种具有广泛应用前景、全新的计算机高级编程语言,可以说它是“第四代”计算机语言。

自20世纪90年代,美国和欧洲的各大学将MATLAB正式列入研究生和本科生的教学计划,MATLAB软件已成为数值计算、数理统计、信号处理、时间序列分析、动态系统仿真等课程的基本教学工具,成为学生必须掌握的基本软件之一。在研究单位和工业界,MATLAB也成为工程师们必须掌握的一种工具,被认为是进行高效研究与开发的首选软件工具。1.2 MATLAB的优势与特点

MATLAB在学术界和工程界广受欢迎,其主要优势和特点有如下几个方面。1.友好的工作平台和编程环境

MATLAB由一系列工具组成,其中许多工具采用的是图形用户界面,包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。这些图形化的工具为用户使用MATLAB的函数和文件提供了方便。

随着MATLAB的商业化及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。同时,MATLAB提供了完整的联机查询、帮助系统,极大地方便了用户的使用。

MATLAB简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误并进行出错原因分析。2.简单易用的编程语言

MATLAB语言是一种高级的矩阵语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的、复杂的应用程序(M文件)后再一起运行。

MATLAB语言是基于流行的C++语言基础之上的,因此,语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式,更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。3.强大的科学计算和数据处理能力

MATLAB是一个包含大量计算算法的集合,其拥有600多个工程中要用到的数学运算函数,可以方便地实现用户所需的各种计算功能。这些函数集涵盖了从最简单、最基本的函数到诸如矩阵、特征向量、快速傅里叶变换等复杂函数。

函数所能解决的问题大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程组的求解、符号运算、傅里叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作及建模动态仿真等。函数中所使用的算法都是科研和工程计算中的最新研究成果,而且经过了各种优化和容错处理。

通常情况下,可以用MATLAB来代替底层编程语言,如C和C++。在计算要求相同的情况下,使用MATLAB的编程,工作量会大大减少。4.出色的图形处理功能

MATLAB自诞生之日起就具有方便的数据可视化功能,能够将向量和矩阵用图形的形式表现出来,并且可以对图形进行标注和打印。

高层次的作图包括二维和三维的可视化、图像处理、动画和表达式,可用于科学计算和工程绘图。

MATLAB对整个图形处理功能进行了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(如图形的光照处理、色度处理及四维数据的表现等),MATLAB同样表现了出色的处理能力。

MATLAB对一些特殊的可视化要求,如图形对话等,也有相应的功能函数,保证了用户不同层次的要求。MATLAB还着重在图形用户界面(GUI)的制作上做了很大的改善,对这方面有特殊要求的用户也可以得到满足。5.应用广泛的模块集合工具箱

MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。

目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,如图像处理、信号处理、小波分析、优化算法、样条拟合、概率统计、偏微分方程求解等,都在工具箱(Toolbox)家族中有了自己的一席之地。6.实用的程序接口和发布平台

MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C++代码。 MATLAB还允许用户编写可以和MATLAB进行交互的C或C++语言程序。另外,MATLAB网页服务程序还允许在Web应用中使用自己的MATLAB数学和图形程序。1.3 MATLAB系统的构成

MATLAB系统由MATLAB开发环境、MATLAB数学函数库、MATLAB语言、MATLAB图形处理系统和MATLAB应用程序接口(API)五大部分构成。1.MATLAB开发环境

MATLAB开发环境是一套方便用户使用MATLAB函数和文件的工具集,其中许多工具是友好的、交互式的图形化用户接口。它是一个集成化的工作空间,可以让用户输入/输出数据,并提供了M文件的集成编译和调试环境。它包括MATLAB桌面、命令窗口、M文件编辑调试器、代码分析器(code analyzer),以及查看帮助、工作空间、文件和其他工具的浏览器。2.MATLAB数学函数库

MATLAB数学函数库包括了大量的计算算法,提供了大约600多个数学和工程上常用的函数,这些函数的数学运算是针对矩阵操作优化过的,计算效率高。MATLAB的数学函数包含了从基本运算(如加法、正弦函数等)到复杂算法,如矩阵求逆、矩阵求特征值、贝济埃函数、快速傅里叶变换、微分方程求解、稀疏矩阵运算等。3.MATLAB语言

MATLAB语言是一个高级的基于矩阵/数组的语言,它有程序流控制、函数、数据结构、输入/输出和面向对象编程等特色。用户既可以用它来快速编写简单的程序,也可以用它来编写庞大复杂、重用性高的应用程序。4.MATLAB图形处理系统

图形处理系统使得MATLAB能方便地显示图形化向量和矩阵,而且能对图形添加标注和打印。MATLAB提供两个层次的绘图操作,一个是对图形句柄进行的底层绘图操作;另一个是建立在底层绘图操作之上的高层绘图操作。5.MATLAB应用程序接口

MATLAB应用程序接口是一个使MATLAB与C、Fortran等其他高级编程语言进行交互的函数库,该函数库的函数通过调用动态链接库(DLL)实现与MATLAB文件的数据交换,其主要功能包括在MATLAB中调用C和Fortran程序,以及在MATLAB与其他应用程序间建立客户/服务器关系。1.4 MATLAB桌面操作环境

MATLAB为用户提供了全新的桌面操作环境,熟悉这些桌面操作环境是使用MATLAB的基础,下面介绍MATLAB的启动和退出、主要功能菜单、命令窗口(Command Window)、工作空间(Workspace)、M文件编辑/调试器、Figure窗口、文件管理和帮助管理等。1.4.1 启动和退出

以Windows操作系统为例,进入Windows后,选择“开始”→“程序”→“MATLAB”命令,进入如图1-1所示的MATLAB默认主窗口。如果安装时选择在桌面上生成快捷方式,也可以双击快捷方式直接启动。图1-1 MATLAB默认主窗口

MATLAB主窗口是MATLAB的主要工作界面。主窗口除了嵌入一些子窗口外,主要还包括菜单栏和工具栏。

主窗口的工具栏共提供了11个命令按钮。这些命令按钮均有对应的菜单命令,但比菜单命令使用起来更快捷、方便。

单击主窗口左下角的“Start”按钮,会弹出一个菜单,如图1-2所示。选择其中的命令可以运行MATLAB产品的各种软件工具,并且可以查阅MATLAB包含的各种资源。图1-2 “Start”按钮的弹出式菜单

从图1-2中可以看出,MATLAB的主要资源有以下几种。(1)MATLAB主体:由MATLAB的编程集成环境、程序开发工具与其他软件的扩展接口组成。(2)工具箱(Toolboxes):工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,如图像处理工具箱,就是专门用于图像处理方面的应用。(3)Simulink:Simulink是MATLAB最重要的组件之一,它提供了一个动态系统建模、仿真和综合分析的集成环境。它是一种可视化仿真工具,也是一种基于MATLAB的框图设计环境,在该环境中,无须大量书写程序,只需要通过简单直观的鼠标操作,就可构造出复杂的系统。(4)模块集(Blocksets):模块集是一个个的数学软件包,是在特殊应用领域中设计的Simulink程序的集合,是系统仿真的关键部件。(5)自动代码生成工具(Links and Targets):将MATLAB中的Simulink程序框图自动转换成嵌入式ANSI C的代码,是第三方软件和硬件应用Simulink的工具。

常用的退出MATLAB系统的方式有3种。

• 在文件(File)菜单中选择“Exit MATLAB”命令。

• 在命令窗口输入“exit”。

• 用鼠标单击窗口右上角的关闭图标。1.4.2 主要功能菜单

打开MATLAB主窗口后,弹出其主菜单栏,共包含File、Edit、Debug、Parallel、Desktop、Window和Help 7个菜单项。主菜单栏的各菜单项及其下拉菜单项的功能简要介绍如下。1.File菜单项

File菜单项中的命令用于实现有关文件的操作,其下拉菜单项如下所示。(1)New:用于建立新的.m文件、图形、模型和图形用户界面。(2)Open:用于打开MATLAB的.m文件、.fig文件、.mat文件、.mdl文件、.cdr文件等,也可通过快捷键“Ctrl+O”来实现此项操作。(3)Close Command Window:关闭命令窗口。(4)Import Data:用于从其他文件导入数据,单击此菜单项后弹出对话框,用户可在其中选择导入文件的路径和位置。(5)Save Workspace As:用于把工作空间的数据存放到相应的路径文件中。(6)Set Path:设置工作路径。(7)Preferences:用于设置命令窗的属性,单击该选项将弹出一个属性画面。(8)Page Setup:用于页面设置。(9)Print:用于设置打印属性。(10)Print Selection:用于对选择的文件数据进行打印设置。(11)Exit MATLAB:退出MATLAB桌面操作环境。2.Edit菜单项

Edit菜单项中的命令用于命令窗口的编辑操作,其下拉菜单项如下所示。(1)Undo:用于撤销上一步操作。(2)Redo:用于重新执行上一步操作。(3)Cut:用于剪切选中的对象。(4)Copy:用于复制选中的对象。(5)Paste:用于粘贴剪贴板上的内容。(6)Paste to Workspace:用于打开“Import Wizard”(输入向导)对话框,将剪贴板上的数据粘贴到MATLAB的工作空间中。(7)Select All:用于选择所有对象。(8)Delete:用于删除所选择的对象。(9)Find:用于查找所需选择的对象。(10)Find Files:用于查找所需的文件。(11)Clear Command Window:用于清除命令窗口区的对象。(12)Clear Command History:用于清除命令窗口区的历史记录。(13)Clear Workspace:用于清除工作区的对象。3.Debug菜单项

用户可以通过Debug菜单项进行程序调试时的各种设置,其下拉菜单项如下所示。(1)Open M-Files when Debugging:用于调试时打开M文件。(2)Step:用于单步调试程序。(3)Step In:用于单步调试进入子函数。(4)Step Out:用于单步调试从子函数中跳出。(5)Continue:程序执行到下一断点。(6)Clear Breakpoints in All Files:清除所有打开文件中的断点。(7)Stop if Errors/Warnings:在程序出错或报警处停止往下执行。(8)Exit Debug Mode:退出调试模式。4.Parallel菜单项

Parallel菜单项中的命令用来进行并行计算方面的设置,其下拉菜单项如下所示。(1)Select Configuration:选择并行计算的配置类型。(2)Manage Configuration:对配置进行管理。(3)Admin Center:打开并行计算的管理中心。

并行计算的设置比较专业,一般不建议用户自行设置。5.Desktop菜单项

Desktop菜单项中的命令用来设置主窗口中需要打开的窗口,其下拉菜单项如下所示。(1)Desktop Layout:单击该项后,弹出一个子菜单,用于桌面显示方式的设置,其设置选项包括系统默认设置项(Default)、单独命令窗口项(Command Window Only)、命令历史窗口和命令窗口项(History and Command Window)、全部标签项显示(All Tabbed)等。(2)Save Layout:保存选定的桌面显示方式设置。(3)Organize Layouts:管理保存的桌面显示方式设置。(4)Command Window:控制在桌面系统中显示或隐藏命令窗口。(5)Command History:控制在桌面系统中显示或隐藏历史命令窗口。(6)Current Directory:控制在桌面系统中显示或隐藏当前路径浏览器窗口。(7)Workspace:控制在桌面系统中显示或隐藏工作空间窗口。(8)Help:控制在桌面系统中显示或隐藏帮助界面。(9)Profiler:控制在桌面系统中显示或隐藏调试器界面。(10)Editor:控制在桌面系统中显示或隐藏M文件编辑窗口。(11)Figures:控制在桌面系统中显示或隐藏Figure窗口。(12)Web Browser:控制在桌面系统中显示或隐藏Web Browser窗口。(13)Variable Editor:控制在桌面系统中显示或隐藏工作空间变量编辑窗口。(14)File and Directory Comparisons:控制在桌面系统中显示或隐藏文件和目录比较窗口。(15)Toolbar:控制在桌面系统中显示或隐藏工具栏选项。(16)Titles:控制在桌面系统中显示或隐藏标题栏选项。6.Window菜单项

Window菜单项中的命令能够在所打开的文件或窗口中,重新设置它们的位置和大小,还可以实现它们之间的快速切换,其下拉菜单项如下所示。(1)Close All Documents:关闭所有文档,包括M-file、Figure、Model和GUI窗口。(2)0Command Window:选定命令窗口为当前活动窗口。(3)1Command History:选定命令历史窗口为当前活动窗口。(4)2Current Directory:选定当前路径窗口为当前活动窗口。(5)3Workspace:选定工作空间窗口为当前活动窗口。7.Help菜单项

Help菜单项中的命令用于提供帮助信息,其下拉菜单项如下所示。(1)Product Help:显示所有MATLAB产品的帮助信息。(2)Function Browser:启动MATLAB的帮助。(3)Using the Desktop:启动Desktop的帮助。(4)Using the Command Window:启动命令窗口的帮助。(5)Web Resources:显示Internet上一些相关的资源网址。(6)Get Product Trials:申请试用版的MATLAB软件。(7)Check for Updates:检查软件是否更新。(8)Licensing:授权文件的一些相关操作(9)Demos:调用MATLAB所提供的范例程序。(10)Terms of Use:显示MATLAB软件中使用的术语。(11)Patents:显示MATLAB软件的专利信息。(12)About MATLAB:显示有关MATLAB的信息。1.4.3 命令窗口

MATLAB的命令窗口(Command Window)如图1-3所示,它用于MATLAB命令的交互操作。图1-3 MATLAB的命令窗口1.主要功能和操作

命令窗口具有如下两大主要功能。(1)提供用户输入命令的操作平台,用户通过该窗口输入命令和数据。(2)提供命令执行结果的显示平台,该窗口显示命令执行的结果。

在命令窗口内执行的MATLAB主要操作如下所示。

•运行函数和输入变量;

•控制输入和输出;

•执行程序,包括M文件和外部程序;

•保存一段日志;

•打开或关闭其他应用窗口;

•选择各应用窗口的参数。

计算机安装好MATLAB之后,双击MATLAB图标,就可以进入命令窗口,此时意味着系统处于准备接受命令的状态,可以在命令窗口中直接输入命令语句。

MATLAB语句形式如下所示。

>>变量=表达式

通过等号将表达式的值赋予变量。当按下回车键时,该语句被执行。语句执行之后,命令窗口自动显示出语句执行的结果。

使用方向键和控制键可以编辑、修改已输入的命令,“↑”键用于回调上一行命令,“↓”键用于回调下一行命令。使用“more off”表示不允许分页,“more on”表示允许分页,“more (n)”表示指定每页输出的行数。按下回车键前进一行,再按下空格键显示下一页,然后输入“q”结束当前显示。

如果命令语句超过一行或希望分行输入命令,则可以使用多行命令继续输入。例如,输入下列式子时,可以分两行输入。

说明

三个小黑点“…”是“连行号”,分号“;”的作用是:指令执行结果将不显示在屏幕上,但变量S将驻留在内存中。

注意,在输入符“>>”之前有函数浏览器,可以方便地进行函数查找及浏览函数参数的自动帮助信息。2.常用命令

MATLAB提供了一组可以在命令窗口中输入的命令,以执行相应的操作,常用的命令及功能如表1-1所示。表1-1 命令窗口中常用的命令及功能1.4.4 工作空间

MATLAB的工作空间如图1-4所示。图1-4 MATLAB的工作空间

工作空间中的变量以变量名(Name)、数值(Value)和类型(Class)的形式显示出来,双击某个变量,将进入变量编辑器(Variable Editor),可以直接观察变量中具体元素的值,也可以直接修改这些元素。1.工具条

工作空间中还有一个工具条,可快捷地在工作空间中进行许多操作,这些操作在图1-4中标注出来了,简单介绍如下。

•(增加新变量):在工作空间中增加一个新的变量,并可对此变量进行赋值、修改等操作。

•(打开选定的变量):将工作空间中选定的变量在变量编辑器(Variable Editor)中打开,可对此变量进行修改等操作。

•(导入数据):将MATLAB支持格式的数据导入到工作空间中。

•(将变量保存为文件):将工作空间中选定的变量以文件的形式保存起来。

•(删除变量):将工作空间中选定的变量删除。

•(将变量绘制成图形):将工作空间中选定的变量绘制成图形,支持的绘图函数有plot、bar、stem、stairs、area、pie、hist和plot3等。若在工作空间选择某变量后,再单击该图标,便可实现对该变量的曲线、曲面等图形的绘制。2.变量编辑器

变量编辑器(Variable Editor)是编辑数组变量的工具,其形式如同Excel电子表格,只是它只能修改及显示变量,没有计算的功能。其操作是在工作空间中选定变量,然后双击,便可进入如图1-5所示的变量编辑器窗口。图1-5 变量编辑器窗口

在编辑器中,可以对变量进行修改、删除、增加等操作,非常方便。

需要注意的是:由于大型矩阵不容易由命令窗口输入,因此采用变量编辑器更为方便。变量编辑器的数据与Excel表格的数据相通,只要将Excel表格中的数据复制,便可直接粘贴到编辑器中的某一变量内。原则上,变量的输入以行向量为主,需要增加一行,其余没有数据的空间则自动填上零。3.常用命令

MATLAB还有几个常用的工作空间操作命令,分别是who、whos、clear、clear变量名、size(a)、length(a),其各自功能描述如下。

•who:显示当前工作空间中所有变量的一个简单列表。

•whos:列出变量的大小、数据格式等详细信息。

•clear:清除工作空间中的所有变量。

•clear变量名:清除指定的变量。

•size(a):获取向量a的行数与列数。

•length(a):获取向量a的长度,并在屏幕上显示。如果a是矩阵,则显示的参数为行数中的最大值。4.数据存取函数

MATLAB提供了以下保存(save)和载入(load)工作空间的命令。(1)save命令

save命令将MATLAB工作空间中的变量存入磁盘,具体格式介绍如下。

•save:将当前MATLAB工作空间中的所有变量以二进制格式存入名为matlab.mat(默认的文件名)的文件中。

•save dfile(文件名):将当前工作空间中的所有变量以二进制格式存入名为dfile.mat文件,扩展名自动产生。

•save dfile x:只把变量x以二进制格式存入dfile.mat文件,扩展名自动产生。

•save dfile.dat x –ascii:将变量x以8位ASCII码形式存入dfile.mat文件。

•save dfile.dat x –ascii –double:将变量x以16位ASCII码形式存入dfile.mat文件。

•save(fname,'x','-ascii'):fname是一个预先定义好的包含文件名的字符串,该用法将变量x以ASCII码形式存入由fname定义的文件中,由于在这种用法中,文件名是一个字符变量,因此可以方便地通过编程的方法存储一系列数据文件。(2)load命令

load命令将磁盘上的数据读入到工作空间,具体格式介绍如下。

•load:把磁盘文件matlab.mat(默认的文件名)的内容读入内存,由于存储.mat文件时已包含了变量名的信息,因此调用时已直接将原变量信息带入,不需要重新赋值变量。

•load dfile:把磁盘文件dfile.mat的内容读入内存。

•load dfile.dat:把磁盘文件dfile.mat的内容读入内存,这是一个ASCII码文件,系统自动将文件名(dfile)定义为变量名。

•x=load (fname):fname是一个预先定义好的包含文件名的字符串,将由fname定义文件名的数据文件读入变量x中,使用这种方法可以通过编程方便地调入一系列数据文件。1.4.5 M文件编辑/调试器

将MATLAB语句按特定的顺序组合在一起就得到了MATLAB程序,其文件名的后缀为.m,故也称为M文件。MATLAB 7.x提供了M文件的专用编辑/调试器,在编辑器中,会以不同的颜色表示不同的内容:命令、关键字、不完整字符串、完整字符串及其他文本,这样就可以及时发现输入错误,缩短调试时间。

M文件编辑/调试器如图1-6所示。图1-6 M文件编辑/调试器1.M文件编辑器的特点

MATLAB的M文件编辑器与其他Windows编辑程序类似,此处不再赘述,只对下列几点做特别说明。(1)在编辑M文件时,可直接转到指定的行,可从“Go”菜单中选择“Go To”命令来完成。(2)可直接计算M文件中表达式的值,结果显示在命令窗口中,可通过选择表达式,然后在“Text”菜单中选择“Evaluate Selection”命令来实现。(3)可根据MATLAB的句法自动缩排,以增加M文件的可读性。先选择文本块,然后单击鼠标右键,在“Text”菜单中选择“Smart Indent”命令来实现。2.编辑器的工具栏

下面只对此工具栏中特殊的按钮控件进行叙述,如表1-2所示。表1-2 工具栏中特殊的按钮控件1.4.6 Figure窗口

MATLAB的Figure窗口(图形窗口)主要用于显示用户所绘制的图形,通常,只要执行了任意一种绘图命令,Figure窗口就会自动产生。所有的绘图都在Figure窗口中进行。如果再建一个Figure窗口,则可输入figure命令,MATLAB会新建一个Figure窗口,并自动给它排出序号。

MATLAB的Figure窗口如图1-7所示。它是MATLAB绘图功能的基础,使用极其方便。其菜单和工具栏,更是增添了交互处理的功能。图1-7 Figure窗口1.菜单栏

Figure窗口的Desktop(桌面)、Window(窗口)和Help(帮助)菜单的使用与其他系统的大致一样,在此不再叙述。下面对差别较大的菜单项进行介绍。(1)File菜单

File菜单的主要功能命令与桌面平台的File菜单相近,只是增加了图形输出相关的Generate M-file、Export Setup、Print Preview和Print命令。

•Generate M-file命令:可以生成当前图形的M文件。

•Export Setup命令:可以打开“Export Setup”(图形输出设置)对话框。

•Print Preview命令:可以打开“打印预览”对话框。(2)View菜单

View菜单中的Figure Toolbar命令用于控制是否显示Figure窗口中的工具栏,而Camera Toolbar命令用于控制是否显示Figure窗口中的照相操作工具栏。(3)Insert菜单

通过Insert菜单,可以在Figure窗口中添加不同的对象,主要有X Label、Y Label、Z Label、Title、Legend(图例)、Colorbar(颜色条)、Line、Arrow、Text Arrow、Double Arrow、TextBox、Rectangle、Ellipse、Axes和Light(光源)等。(4)Tools菜单

Tools菜单包括简单的图形操作和照相操作,在此只介绍图形操作。

•Basic Fitting命令可以打开图形基本数据拟合对话框。在该对话框中,用户可以根据需要选择拟合的数据源(Select data)、拟合方式(Check to display fits on figure)、拟合函数的显示(Show equations)、数值的有效位数(Significant digits)及是否显示残差(Plot residuals)和是否显示最大残差模(Show norm of residuals)等。

•Data Statistics命令可以打开图形数据统计分析对话框。在对话框中可以选择数据的最小值(min)、最大值(max)、平均值(mean)、中值(median)及均方差(std)等。2.工具栏

工具栏中特殊的按钮控件说明如表1-3所示。表1-3 工具栏中特殊按钮控件的图例及功能1.4.7 文件管理

MATLAB提供了一组文件管理命令,包括列文件名、显示或删除文件、显示或改变当前目录等,相关的命令及其功能如表1-4所示。表1-4 MATLAB常用文件管理命令1.4.8 使用帮助

MATLAB为用户提供了非常丰富的帮助信息,如软件产品帮助(Product Help)、函数帮助(函数浏览器)、网络资源帮助等,极大地完善了该应用软件的功能。

MATLAB在命令窗口中提供了可以获得帮助的命令,用户可以很容易地获得联机帮助信息,几个常用的帮助命令介绍如下。(1)helpwin:打开帮助窗口。(2)helpdesk:打开浏览器模式下的帮助窗口。(3)lookfor:返回包含指定关键词的项。(4)demo:打开示例窗口。

MATLAB还提供了丰富的help命令,如表1-5所示,在命令窗口中输入相关命令就可以获得相关的帮助。表1-5 MATLAB常用的帮助命令1.5 MATLAB的工具箱

MATLAB的一个重要特色就是它具有一套程序扩展系统和一组称为工具箱(Toolbox)的特殊应用子程序。工具箱是MATLAB的关键部分,它是MATLAB强大功能得以实现的载体和手段,是对MATLAB基本功能的重要扩充。

MATLAB每年都会增加一些新的工具箱,要么提供新的工具箱或实用工具,要么对原有工具箱的性能进行改进。因此,在一般情况下,工具箱的列表不是固定不变的,有关MATLAB工具箱的最新信息可以在http://www.mathworks.com/products中看到。

MATLAB有30多个工具箱,大致可分为两类:功能型工具箱和领域型工具箱:(1)功能型工具箱主要用来扩充MATLAB的符号计算功能、图形建模仿真功能、文字处理功能及与硬件实时交互功能,能用于多种学科。(2)领域型工具箱专业性很强,是针对某个专业的常用算法做成的函数包,如控制系统工具箱(Control System Toolbox)、信号处理工具箱(Signal Processing Toolbox)、金融工具箱(Financial Toolbox)等。

运行MATLAB后,选择“Start”→“Toolboxes”命令,便会看到按字母顺序列出的MATLAB工具箱。

下面简要介绍图像处理相关的工具箱及其主要特点。1.图像处理工具箱(Image Processing Toolbox)

此工具箱提供了200多个用于图像处理和分析的函数,与 MATLAB 的数据分析、算法开发和数据可视化环境集成在一起,大大缩短了算法编程的时间,而把大部分时间用于图像问题的分析处理上。其主要功能如下所示。

•线性滤波及滤波器设计;

•图像分析,包括像素、区域和统计特征等;

•图像增强和噪声去除;

•交互的控制点选择GUI;

•空间变换、图像配准;

•图像变换(FFT、DCT、任意变换);

•相邻区和块的处理;

•多维图像处理;

•DICOM输入/输出;

•色彩空间的转换、色图操作、图像类型转换。2.图像获取工具箱(Image Acquisition Toolbox)

图像获取工具箱扩展MATLAB的强大科学计算能力,允许直接在MATLAB环境下通过工业标准硬件设备获取图像和视频信号。通过该工具箱,可以直接将MATLAB环境同图像采集设备连接起来,预览图像,采集数据,并且利用MATLAB提供的强大数学分析功能完成图形图像的处理。其主要功能如下。

•现场视频和图像信号的获取;

•支持标准模拟、数字图像采集设备;

•支持 Windows 兼容的视频采集设备;

•现场视频信号预览;

•允许单帧或连续的数据采集与分析;

•支持多种图像制式;

•允许同步采集和处理。3.信号处理工具箱(Signal Processing Toolbox)

信号处理工具箱建立在滤波器设计及谱分析的坚实基础上,包含了一系列强大的工具以利于算法的开发、信号及线性系统分析、多速率信号处理、滤波器设计及分析。其主要功能如下。

•大量的信号和线性系统模型;

•数字及模拟滤波器设计、分析及实现;

•FFT、DCT、Hilbert及其他变换;

•统计信号处理;

•用统计方法进行时间序列建模及谱估计;

•多速率信号处理,诸如数字信号和各种采样速率的信号;

•波形生成、窗口生成;

•面向对象的数字滤波器和窗口对象;

•集成的图形界面用于滤波器设计、分析、谱分析及信号的可视化测量。4.小波工具箱(Wavelet Toolbox)

小波工具箱提供了研究局部、多尺度和非平稳现象的综合工具。对于任何应用到傅里叶变换技术的领域,小波方法揭示了更多的内部特性,可用于大多数信号处理系统,包括语音处理、通信、地球物理、财务和医学等学科。

其主要功能如下。

•完整的GUI 和命令行功能,用于分析、综合、去噪、压缩信号和图像;

•小波和信号处理工具集,其中包括实现从尺度到频率变换的函数;

•连续小波变换,用于多尺度信号分析;

•离散小波变换(DWT),对信号和图像进行分析和综合;

•分解和分析多分辨率信号和图像;

•丰富的小波基本函数可供选择,包含若干边界修正方法,也可添加自定义小波基;

•信号和图像的小波包变换;

•基于熵值的小波包树剪裁,用于“最佳树”和“最佳尺度”分析。1.6 小结

本章首先简要讲述了MATLAB的产生和发展历程、其优势及特点,然后一一讲述了MATLAB的系统结构、工具箱和桌面操作环境。第2章 MATLAB基本运算

MATLAB也是一门计算语言,它的运算指令和语法基于一系列基本的矩阵运算及它们的扩展运算,它还支持复数这种数值元素,这也是MATLAB区别于其他高级语言的最大特点之一,给许多领域的计算带来了极大方便。2.1 MATLAB数据类型

MATLAB包括4种基本数据类型,即双精度数组、字符串数组、元胞数组、构架数组。数值之间可以相互转化,这为其计算功能开拓了广阔的空间。1.变量与常量

变量是数值计算的基本单元。与C语言等其他高级语言不同,MATLAB语言中的变量无须事先定义,一个变量以其名称在语句命令中第一次合法出现而定义,运算表达式变量中不允许有未定义的变量,也不需要预先定义变量的类型,MATLAB会自动生成变量,并根据变量的操作确定其类型。(1)MATLAB变量命名规则

•变量名区分大小写,因此A与a表示的是不同的变量。

•变量名以英文字母开始,第一个字母后可以使用字母、数字、下画线,但不能使用空格和标点符号。

•变量名长度不得超过31位,超过的部分将被忽略。

•某些常量也可以作为变量使用,如i在MATLAB中表示虚数单位,但也可以作为变量使用。

常量是指那些在MATLAB中已预先定义其数值的变量,默认的常量如表2-1所示。表2-1 MATLAB默认的常量(2)MATLAB变量的显示

任何MATLAB语句的执行结果都可以在屏幕上显示,同时赋值给指定的变量,没有指定变量时,赋值给一个特殊的变量ans,数据的显示格式由format命令控制。format只影响结果的显示,不影响其计算与存储。MATLAB总是以双字长浮点数(双精度)来执行所有的运算。如果结果为整数,则显示没有小数;如果结果不是整数,则输出形式为表2-2所示的几种形式之一。表2-2 MATLAB的数据显示格式(3)MATLAB变量的存取

工作空间中的变量可以用save命令存储到磁盘文件中。输入命令“save<文件名>”,将工作空间中全部变量存到“文件名.mat”文件中去,若省略“<文件名>”则存入文件“matlab.mat”中;命令“save<文件名><变量名集>”将“变量名集”指出的变量存入文件“文件名.mat”中。

用load命令可将变量从磁盘文件读入MATLAB的工作空间,其用法为“load<文件名>”,它将“文件名”指出的磁盘文件中的数据依次读入名称与“文件名”相同的工作空间的变量中。若省略“<文件名>”则从“matlab.mat”中读入所有数据。

用clear命令可从工作空间中清除现存的变量。2.字符串

字符是MATLAB中符号运算的基本元素,也是文字等表达方式的基本元素,在MATLAB中,字符串作为字符数组用单引号(')引用到程序中,还可以通过字符串运算组成复杂的字符串。字符串数值和数字数值之间可以进行转换,也可以执行字符串的有关操作。3.元胞数组

元胞是元胞数组(Cell Array)的基本组成部分。元胞数组与数字数组相似,以下标来区分,单元胞数组由元胞和元胞内容两部分组成。用花括号{ }表示元胞数组的内容,用圆括号()表示元胞元素。与一般的数值数组不同,元胞可以存放任何类型、任何大小的数组,而且同一个元胞数组中各元胞的内容可以不同。

例2-1  元胞数组创建与显示实例。

解:MATLAB程序代码如下。

第1行用元胞数组标志法建立一个字符串和一个矩阵;第2行用元胞内容编址法,建立一个传递函数和一个由两个元素组成的元胞组,该元胞组分别是矩阵和字符串,最后,用celldisp函数显示该元胞数组A。4.构架数组

与元胞数组相似,构架数组(Structure Array)也能存放各类数据,使用指针方式传递数值。构架数组由结构变量名和属性名组成,用指针操作符“.”连接结构变量名和属性名。例如,可用parameter.temperature表示某一对象的温度参数,用parameter.humidity表示某一对象的湿度参数等,因此,该构架数组parameter由两个属性组成。5.对象

面向对象的MATLAB语言采用了多种对象,一些对象之间可以相互转换。2.2 数组及其运算

MATLAB中数组(array)可以说无处不在,任何变量在MATLAB中都是以数组形式存储和运算的。

根据数组元素个数和排列方式,MATLAB中的数组可以分为如下几种。(1)没有元素的空数组(empty array)。(2)只有一个元素的标量(scalar),它实际上是一行一列的数组。(3)只有一行或一列元素的向量(vector),分别叫做行向量和列向量,也统称为一维数组。(4)普通的具有多行多列元素的二维数组。(5)超过二维的多维数组(具有行、列、页等多个维度)。

按照数组的存储方式,MATLAB中的数组可以分为:普通数组和稀疏数组(常称为稀疏矩阵)。稀疏矩阵适用于那些大部分元素为0,只有少部分非零元素的数组的存储,主要是为了提高数据存储和运算的效率。2.2.1 数组的创建

MATLAB中一般使用方括号([])、逗号(,)或空格,以及分号(;)来创建数组,方括号中给出数组的所有元素,同一行中的元素间用逗号或空格分隔,不同行之间用分号分隔。1.空数组

空数组是MATLAB中特殊的数组,它不含有任何元素。空数组可以用于数组声明,数组清空,以及各种特殊的运算场合。

创建空数组很简单,只需要变量赋值为空的方括号即可。2.一维数组

一维数组包括行向量和列向量,是所有元素排列在一行或一列中的数组。实际上,一维数组可以看做二维数组在某一方向(行或列)尺寸退化为1的特殊形式。

创建一维行向量,只需要把所有用空格或逗号分隔的元素用方括号括起来即可;而创建一维列向量,则需要在方括号括起来的元素之间用分号分隔。不过,更常用的办法是用转置运算符('),把行向量转置为列向量。

创建一维数组可能用到:方括号、逗号或空格、分号、冒号、linspace函数和logspace函数,以及转置符号(')。3.二维数组

常规创建二维数组的方法实际上和创建一维数组方法类似,就是综合运用方括号、逗号、空格以及分号。

方括号把所有元素括起来,不同行元素之间用分号间隔,同一行元素之间用逗号或空格间隔,按照逐行排列的方式顺序书写每个元素。

当然,在创建每一行或列元素的时候,可以利用冒号和函数的方法,只是要特别注意创建二维数组时,要保证每一行(或每一列)具有相同数目的元素。创建二维数组,也可以通过函数拼接一维数组,或者利用MATLAB内部函数直接创建特殊的二维数组。

例2-2  数组创建实例。

解:在命令窗口中输入如下代码。2.2.2 数组的运算

下面简要介绍数组的各种数学运算。1.数组-数组运算

最基本的就是数组和数组的加(+)、减(-)、乘(*)、乘方(^)等运算。要注意,数组的加、减,要求参与运算的两个数组具有相同的尺寸,而数组的乘法要求第一个数组的列数等于第二个数组的行数,乘方运算在指数n为自然数时相当于n次自乘,这要求数组具有相同的行数和列数。

数组除法实际上是乘法的逆运算,相当于参与运算的一个数组和另一个数组的逆(或伪逆)数组相乘。MATLAB中数组除法有左除(/)和右除(\)两种。(1)A/B相当于A*inv(B)或A*pinv(B)。(2)A\B相当于inv(A)*B或pinv(A)*B。

其中,inv是数组求逆函数,仅适用于行列数相同的方形数组(在线性代数中,称为方阵);pinv是求数组广义逆的函数。2.点运算

前面讲到的数组乘、除、乘方运算,都是专门针对数组定义的运算。有些情况下,用户可能希望对两个尺寸相同的数组进行元素对元素的乘、除,或者对数组的逐个元素进行乘方,这可以通过点运算实现。

A.*B可以实现两个同样尺寸的数组A和数组B对应元素的乘法,同样的,A./B或A.\B实现元素对元素的除法,A.^n实现对逐个元素的乘方。

特别要强调的是,许多MATLAB内置的运算函数,如sqrt、exp、log、sin、cos等,都只能对数组进行逐个元素的相应运算。至于数组开方、指数等运算,都有专门的数组运算函数。3.专门针对数组的运算函数

MATLAB中专门针对数组的运算函数一般末尾都以m结尾(m代表matirx),如 sqrtm、expm、logm等,这些运算都是特别定义的数组运算,不同于针对单个数值的常规数学运算。

例2-3  数组运算。

解:在命令窗口中输入如下代码。2.3 矩阵及其运算

MATLAB软件的最大特色是强大的矩阵计算功能,在MATLAB软件中,所有的计算都是以矩阵为单元进行的,可见矩阵是MATLAB的核心。下面以表格的形式列出MATLAB提供的每类矩阵运算的函数,并各举一个实例进行说明,同类函数的用法基本类似,详细的用法及函数内容说明可参考联机帮助。2.3.1 矩阵的创建

由m行n列构成的数组a称为m×n阶矩阵,它总共由m×n个元素组成,矩阵元素记为a,其中i表示行,j表示列。ij

当m=n时,矩阵a称为方阵。当i≠j时,所有的 a =0,且m=n,ij得到的矩阵称为对角阵。

当对角阵的对角线上的元素全为1时,称为单位阵,记为I。

对于m×n阶矩阵w,当 w=a 时,称w是a的转置矩阵,记为 ij jiw =a′。

对于a为m×1的形式,称a是m个元素的列向量,对于a为1×n的形式,称a是n个元素的行向量。

矩阵的表现形式和数组相似,它以左方括号“[”开始,以右方括号“]”结束,每一行元素结束用行结束符号(分号“;”)或回车符分隔,每个元素之间用元素分隔符号(空格或逗号“,”)分隔。建立矩阵的方法有直接输入矩阵元素、在现有矩阵中添加或删除元素、读取数据文件、采用现有矩阵组合、矩阵转向、矩阵移位及直接建立特殊矩阵等。

例2-4 矩阵创建实例。

解:MATLAB程序代码如下。

运行结果是创建了一个2×3的矩阵a。a的第1行由1、2、3这3个元素组成,第2行由4、5、6这3个元素组成,输出结果如下。

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

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载