数字图像处理(MATLAB版)(第2版)
上QQ阅读APP看书,第一时间看更新

1.8 MATLAB领略

MATLAB语言是由美国MathWorks公司推出的计算机软件,经过多年的逐步发展与不断完善,现已成为国际公认的最优秀的科学计算与数学应用软件之一。其内容涉及矩阵代数、微积分、应用数学、有限元分析、科学计算、信号与系统、神经网络、小波分析及其应用、数字图像处理、计算机图形学、电子线路、电机学、自动控制与通信技术、物理、力学和机械振动等方面。MATLAB的特点是语法结构简单,数值计算高效,图形功能完备,特别受到以完成数据处理与图形图像生成为主要目的的科研人员的青睐。

1.8.1 MATLAB的优势

一种语言之所以能够如此迅速地普及和应用,显示出如此旺盛的生命力,是由于它有着不同其他语言的特点。MATLAB软件最突出的特点就是简洁的、开放式、便捷等。其提供了更为直观、符合人们思维习惯的代码,同时给用户带来最直观、最简洁的程序开发环境。

与其他的计算机高级语言相比,MATLAB具有以下几方面的优势。

(1)MATLAB具有高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来。

(2)MATLAB具有完备的图形处理功能,实现计算结果和编程的可视化。

(3)MATLAB具有友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握。

(4)MATLAB具有功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等),为用户提供了大量方便实用的处理工具。

1.8.2 MATLAB的特点

MATLAB之所以成为世界流行的科学计算与数学应用软件,是因为它有着下列强大的功能。

(1)高质量、强大的数值计算功能。为满足复杂科学计算任务的需要,MATLAB汇集了大量常用的科学和工程计算算法,从各种函数到复杂运算,包括矩阵求逆、矩阵特征值、奇异值、工程计算函数以及快速傅里叶变换等。MATLAB强大的数值计算功能是其优于其他数学应用软件的重要原因。

(2)数据分析和科学计算可视化功能。MATLAB不但科学计算功能强大,而且在数值计算结果的分析和数据可视化方面也远远优于其他同类软件。在科学计算和工程应用中,经常需要分析大量的原始数据和数值计算结果,MATLAB能将这些数据以图形的方式显示出来,使数据间的关系清晰明了。

(3)强大的符号计算功能。科学计算有数值计算与符号计算两种。在数学、应用科学和工程计算领域,常常会遇到符号计算问题,但仅有优异的数值计算功能并不能解决科学计算时的全部需要。

(4)强大的非线性动态系统建模和仿真功能。MATLAB提供了一个模拟动态系统的交互式程序Simulink,允许用户通过绘制框图来模拟一个系统,并动态地控制该系统。Simulink能处理线性、非线性、连续、离散等多种系统,它包括应用程序扩展集Simulink、Extensions和Blocksets。

(5)灵活的程序接口功能。应用程序接口A(API)是一个允许用户编写与MATLAB互相配合的C或Fortran程序的文件库。MATLAB提供了方便的应用程序接口API,用户可以在MATLAB环境下直接调用已经编译过的C和Fortran子程序,在MATLAB和其他应用程序之间建立客户机/服务器关系。

(6)文字处理功能。MATLAB记事本成功地将MATLAB与文字处理系统Microsoft Word集成为一个整体,为用户进行文字处理、科学计算、工程设计创建了一个统一的工作环境。用户不仅可以利用Word的文字编辑处理功能,方便地创建MATLAB的系统手册、技术报告、命令序列、函数程序、注释文档,以及与MATLAB有关教科书6种文档,而且还能从Word访问MATLAB的数值计算和可视化结果。

1.8.3 MATLAB R2014新功能

在MATLAB中,R2014版本分别为R2014a版本及R2014b版本,它们主要的新功能如下。

1. R2014a版本

MATLABR2014a新功能包括MATLAB和Simulink的新功能以及81个其他产品的更新和补丁修复。

(1)MATLAB产品系列新增

● MATLAB:Raspberry Pi和网络摄像头硬件支持包。

● Optimization Toolbox:混合整数线性规划(MILP)解算器。

● Statistics Toolbox:对每个对象具有多个测量值的数据进行重复测量数据建模。

● Image Processing Toolbox:使用MATLAB Coder为25个函数生成C代码,为5个函数实现GPU加速。

● Econometrics Toolbox:状态-空间模型、缺失数据情况下自校准的卡尔曼滤波器,以及ARIMA/GARCH模型性能增强。

● Financial Instruments Toolbox:对偶曲线构建,用于计算信用敞口和敞口概况的函数,以及利率上限、利率下限和掉期期权的布莱克模型定价。

● SimBiology:提供用于模型开发的模型估算和桌面增强的统一函数。

● System Identification Toolbox:递归最小二乘估算器和在线模型参数估算模块。

● MATLAB Production Server:实现客户端与服务器之间的安全通信以及动态请求创建。

(2)Simulink 产品系列新增

● Simulink:用于定义和管理与模型关联的设计数据的数据字典,多核处理器和FPGA的算法分割和定位的单一模型工作流程,为LEGO MINDSTORMS EV3、Arduino Due和Samsung Galaxy Android设备提供内置支持。

● Stateflow:提供了上下文相关的Tab键自动补全功能来完成状态图。

● Simulink Real-Time:仪表板、高分辨率目标显示器和FlexRay协议支持,以及合并了xPCTarget和xPC Target Embedded Option的功能。

● SimMechanics:STEP文件导入和接口的总约束力计算。

● Simulink Report Generator:用于在Simulink视图中丰富显示内容的对象检查器和通知程序。

(3)系统工具箱(System Toolbox)新增

● Computer Vision System Toolbox:立体视觉和光学字符识别(OCR)。

(4)功能代码生成新增

● Embedded Coder:支持将AUTOSAR工具的变更合并到Simulink模型中。

● Embedded Coder:ARM Cortex-A使用Ne10库优化了代码生成。

● HDL Coder:枚举数据类型支持和时钟频率驱动的自动流水线操作。

● HDL Verifier:通过JTAG对Altera硬件进行FPGA仿真。

2. MATLAB R2014b版本

在MATLAB R2014a版本的基础上,MATLAB R2014b版本新增了以下功能:

(1)MATLAB图形

MATLAB R2014b推出了全新的MATLAB图形系统。全新的默认颜色、字体和样式便于数据解释。抗锯齿字体和线条使文字和图形看起来更平滑。图形对象便于使用。可以在命令窗口中显示常用属性,并且对象支持熟悉的结构化语法,可以更改属性值。另外,还增加了许多其他新功能。

(2)大数据功能

新增功能和性能改进面向大数据处理。datastore函数可以方便、高效地格式化进入无法打开的内存文件(以及文件集合)数据,并将数据导入桌面。mapreduce是一种可以分析无法进入计算机内存的数据集的编程技术。这些功能也可以用在Hadoop上处理数据。

(3)日期和时间数据类型

数据类型(datetime、duration和calendarDuration)可用于表示日期和时间。这些类型均能提供高效利用内存的计算和对比以及格式化显示。数据可以通过readtable、textscan和导入工具直接作为datetime数组导入。系统提供用于管理时区(包括夏令时)以及地点的特定信息(如月份和日期名称)。

(4)Git和Subversion源控制集成

与流行的Git和Subversion源控制系统集成可以使您的数据保持可控状态,便于构建和共享自定义MATLAB工具箱。在GitHub上托管您的工具箱与他人协作,并将其列在MATLAB Central文件交换区上,供全球的MATLAB社区使用。

1.8.4 MATLAB R2014b安装与激活

MATLAB R2014b的安装与激活主要有以下步骤。

(1)将MATLAB R2014b的安装盘放入CD-ROM驱动器,系统将自动运行程序,进入初始化界面。

(2)启动安装程序后显示的MathWorks安装对话框,如图1-6所示。选择“使用文件安装密钥”单选按钮,再单击“下一步”按钮。

图1-6 “MathWorks安装”界面

(3)弹出如图1-7所示的“许可协议”对话框,如果同意Math Works公司的安装许可协议,选择“是”单选按钮,单击“下一步”按钮。

图1-7 “许可协议”对话框

(4)弹出如图1-8所示的“文件安装密钥”对话框,选择“我已有我的许可证的文件安装密钥”单选按钮,单击“下一步”按钮。

图1-8 “文件安装密钥”对话框

(5)如果输入正确的钥匙,系统将弹出如图1-9所示的“文件夹选择”对话框,可以将MATLAB安装在默认路径中,也可自定义路径。如果需要自定义路径,即选择“输入安装文件夹的完整路径”下面的文本框右侧的“浏览(R)”按钮,则可选择所需要的路径实现安装,再单击“下一步”按钮。

图1-9 “文件夹选择”对话框

(6)确定安装路径并下一步,系统将弹出如图1-10所示的“产品选择”对话框,可以看到用户所默认安装的MATLAB组件、安装文件夹等相关信息。单击“下一步”按钮。

图1-10 “产品选择”对话框

(7)在完成对安装文件的选择后,即弹出如图1-11所示的“确认”对话框,在该界面中,列出了你前面所选择的内容,包括路径、安装文件的大小、安装的产品等,如果无误后,则单击“安装”按钮进行安装。

图1-11 “确认”对话框

(8)软件在安装过程中,将显示安装进度条如图1-12所示。用户需要等待产品组件安装完成。安装完成弹出如图1-13所示的“安装完毕”对话框。

图1-12 “安装进度条”对话框

(9)MATLAB 2014b版本是需要激活的。所以在“安装完毕”对话框中,选中“激活MATLAB”复选框,如图1-13所示,即实现激活,单击“下一步”按钮。

图1-13 “安装完毕”对话框

(10)系统弹出如图1-14所示的“MathWorks软件激活”对话框,选择“不使用Internet手动激活”方式激活,单击“下一步”按钮。

图1-14 “MathWorks软件激活”对话框

(11)在弹出的“离线激活”对话框中,选择“输入许可文件的完整路径(包括文件名)”,即单击右侧的“浏览”按钮,找到许可文件的完整路径(license.lic文件在serial目录下),如图1-15所示。单击“下一步”按钮。

图1-15 “离线激活”对话框

(12)弹出如图1-16所示的“激活完成”对话框,并且单击右下角的“完成”按钮,即可完成MATLAB 2014b的安装与激活。

图1-16 “激活完成”对话框

1.8.5 MATLAB R2014b的工作环境

MATLAB R2014b的工作界面,如图1-17所示,主要包括工具栏选项、当前工作目录、命令窗口、工作空间窗口和历史命令窗口。

图1-17 MATLAB工作环境

MATLAB R2014b的菜单和以前版本有很大的不同,在MATLAB R2014b工作界面中没有菜单,而有3个工具栏选项,分别为HOME工具项、PLOTS工具项及APPS工具项。

1. 命令窗口

命令窗口(Command Window)是MATLAB的主要工作界面。在默认情况下,命令窗口提示“>>”符,用户可在此处输入函数、命令、表达式进行运算和操作。独立的命令窗口如图1-18所示。

图1-18 独立命令窗口

一般来说,一个命令行输入一条命令,命令行以按回车键结束。但一个命令行也可以输入若干条命令,各命令之间以逗号分隔,若前一命令后带有分号,则逗号可以省略。

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

在MATLAB中的三个小黑点即为“续行号”,表示一条语句可分几行编写。而分号“;”作用是不在命令窗口中显示中间结果,但定义的变量将驻留在内存中。

MATLAB命令窗口中常用的命令及功能如表1-1所示。

表1-1 MATLAB命令窗口中常用的命令及功能

2. 工作空间

工作空间(Workspace)是MATLAB用于存储各种变量和结果的内存空间。在该窗口中显示工作空间中所有变量的名称、字节数和变量类型,可对变量进行观察、编辑、保存和删除。独立化的工作空间窗口如图1-19所示。

图1-19 工作空间

3. 命令历史窗口

命令历史记录窗口记录着用户在Command Window输入过的所有命令,命令历史窗口如图1-20所示。

图1-20 命令历史窗口

在历史窗口中可以完成多种操作。单击鼠标右键,在弹出的菜单中可以选择相应的命令进行操作。

● 复制和粘贴命令:选中历史命令窗口中的一行或多行命令,历史命令窗口将会高亮显示这些命令。单击鼠标右键,在弹出的菜单选择复制命令,可以完成复制操作。复制后的命令文本可以粘贴在工作空间中运行或粘贴在其他文本编辑器中。

● 创建脚本:对于所执行的历史命令,如果必要也可以编写为M脚本文件或函数文件。此时,可以在历史命令窗口中选择需要创建的命令后,右击,在弹出的快捷菜单中选择创建脚本命令,即可将所执行的历史命令中的一部分创建M文件。当选择该命令后,系统弹出M文件编辑器,将所有选择的命令作为M文件的一部分内容自动输入到M文件编辑器中。此时,可以按照M文件保存、执行和调试。

● 日志文件创建:在命令行中,输入diary命令,可以将当前命令窗口中的所有内容都写入日志,包括命令和计算结果等。文件的保存格式为ASCII码形式,因此,可以很容易地使用文本阅读器阅读这些文件。默认情况下,diary保存的日志文件路径为当前的工作目录。通过日志命令diary增加日志名称并开始记录命令窗口中的内容,然后执行相关的函数命令,最后通过日志命令diaryoff结束日志内容的记录。需要注意的是,通过日志命令记录时,并不能记录图形文件。记录结束后,读者可以在当前工作文件下找到日志文件打开阅读。

4. 当前文件夹

当前文件夹(Current Folder)是指MATLAB运行时的工作目录文件夹,只有在当前目录或搜索路径下的文件,函数才可以被运行或调用。如果没有特殊指明,数据文件也存放在当前文件夹下。为了便于管理文件和数据,用户可以将自己的工作目录设置成当前目录文件,从而使得用户的操作都在当前文件夹中进行。

当前文件夹窗口也称为路径浏览器。其可以内嵌在MATLAB主窗口中,也可以浮动在主窗口上,浮动的当前目录窗口如图1-21所示。在当前文件夹窗口中可以显示或改变当前文件夹,还可以显示当前文件夹的搜索功能。通过文件夹下拉列表框可以选择已经访问过的文件。

图1-21 独立当前文件夹窗口

1.8.6 MATLAB R2014b工具项

MATLAB R2014b中包括三个工具项,下面给予介绍。

1. HOME工具项

图1-22所示为HOME工具项页面。

图1-22 HOME工具项

● New Script:用于新建MATLAB的脚本文件。

● New:用于新建MATLAB的脚本文件、函数文件、类、图形用户界面、Simulink仿真等。

● Open:用于打开MATLAB的.m文件、.fig文件、.mat文件、.mdl文件、prj文件等。

● Find files:用于查找MATLAB文件。

● Compare:用于打开选择文件或文件夹比较对话框。

● Import Data:将数据导入到MATLAB的工作空间。

● Save Workspace:将工作空间中的变量保存到文件中。

● New Variable:新建MATLAB变量。

● Open Variable:打开MATLAB变量编辑框。

● Clear Workspace:清除工作空间窗口中的变量。

● Analyze Code:分析MATLAB程序代码。

● Run and Time:打开运行时间分析器。

● Clear Commands:清除命令窗口。

● Simulink Library:打开MATLAB的Simulink仿真工具箱。

● Layout:MATLAB布局菜单。

● Preference:设置MATLAB的属性。

● Set Path:设置搜索路径。单击该快捷按钮,弹出如图1-23所示的搜索路径对话框。

图1-23中的按钮含义分别如下所示。

图1-23 设置搜索路径对话框

● Add Folder...:添加新的路径。

● Add with subfolders:在搜索路径上添加子目录。

● Move to Top:将选中的目录移到搜索路径顶端。

● Move Up:将选中的目录在搜索路径中上移一位。

● Move Down:将选中的目录在搜索路径中下移一位。

● Move to Bottom:将选中的目录移到搜索路径底端。

● Remove:将选中的目录移出搜索路径。

● Default:恢复到原始的MATLAB默认路径。

● Revert:恢复上次改变搜索路径前的设置。

● Parallel:对MATLAB属性进行配置。

:打开MATLAB联机帮助文档,效果如图1-24所示。

图1-24 MATLAB联机帮助文档

● Help:为MATLAB的帮助菜单。

2. PLOTS工具项

图1-25所示为PLOTS工具项页面。

图1-25 PLOTS工具项页面

图1-25所示为MATLAB特有的绘图功能,在MATLAB R2014b中,直接给出绘制MATLAB的二维、三维、四维图形的快捷按钮。只要选中某个变量,然后需要绘制哪种图形,直接单击对应的快捷按钮即可。

● plot:绘制MATLAB的基本二维图形。

● bar:绘制MATLAB的条形图。

● area:绘制MATLAB的面积图。

● pie:绘制MATLAB的饼形图。

● histogram:绘制MATLAB的直方图。

● controu:绘制MATLAB等高线图。

● surf:绘制MATLAB三维曲线图。

● mesh:绘制MATLAB三维曲面图。

● semlogx:绘制MATLAB的x对数坐标系图。

● Reuse Figure:擦除图形痕迹在原图上绘制新图形。

● New Figure:新建图形。

3. APPS工具

图1-26所示为APPS工具项页面。

图1-26 APPS工具项页面

其中,

● Get More Apps:打开更多的MATLAB在线应用界面。

● Install App:打开MATLAB安装应用程序窗口。

● Curve Fitting:打开MATLAB曲线拟合工具窗口。

● Optimization:打开MATLAB的优化工具窗口。

● MuPAD Notebook:打开MATLAB内置的MuPAD笔记窗口。

● PID Turning:打开MATLAB内置的PID工具窗口。

● System Identification Tool:打开MATLAB系统识别工具窗口。

● Signal Analysis:打开MATLAB信号分析窗口。

● Image Acquisition:打开MATLAB内置的图像采集工具窗口。

● Instrument Control:打开MATLAB的测试与测量工具窗口。

● SimBiology:为一种可用于在集成的图形环境中建模、仿真和分析生物系统的工具。

1.8.7 MATLAB R2014b帮助系统

作为一个优秀的软件,MATLAB为广大用户提供了有效的帮助系统,其中有联机帮助系统、远程帮助系统、演示程序、命令查询系统等,这些无论对于入门读者还是经常使用MATLAB的人员都是十分有用的,经常查阅MATLAB帮助文档,可以帮助我们更好地掌握MATLAB。

获得帮助的主要工具为帮助浏览器,它提供了所有已安装产品的帮助文档,以帮助使用者全面了解MATLAB功能。如果Internet连接可用,可观看在线帮助和功能演示的视频。

1. 命令查询帮助

在MATLAB中,可以在命令窗口中通过帮助命令来查询帮助信息,最常用的帮助命令为help。常用的帮助命令如表1-2所示。

表1-2 常用的帮助命令

在MATLAB中的命令窗口中输入help,结果为:

>> help
HELP topics:
My Documents\MATLAB            - (No table of contents file)
matlabhdlcoder\matlabhdlcoder  - (No table of contents file)
matlab\testframework           - (No table of contents file)
matlabxl\matlabxl              - MATLAB Builder EX
matlab\demos                   - Examples.
matlab\graph2d                 - Two dimensional graphs.
matlab\graph3d                 - Three dimensional graphs.
…                              …
xpc\xpc                            - (No table of contents file)
xpcblocks\thirdpartydrivers    - (No table of contents file)
build\xpcblocks                   - (No table of contents file)
build\xpcobsolete              - (No table of contents file)
xpc\xpcdemos                    - (No table of contents file)

在MATLAB中的命令行窗口输入help sin可查询函数sin的帮助信息,输出结果为:

>> help sin
 sin    Sine of argument in radians.
    sin(X) is the sine of the elements of X.
    See also asin, sind.
    Overloaded methods:
       codistributed/sin
       gpuArray/sin
       sym/sin
    Reference page in Help browser
       doc sin

在命令行窗口可利用命令help进行函数的查询,简单易用,而且运行速度快。但是,help命令需要准确地给出函数的名字,如果记不清函数的名字,就很难找到。此时,可以利用lookfor命令进行查询。lookfor命令按照关键字查询所有相关的M文件,例如在MATLAB命令窗口中输入lookfor sin,将查询所有和对数有关的函数,输出结果如下:

>> lookfor sin
BioIndexedFile      - class allows random read access to text files using an index file.
loopswitch           - Create switch for opening and closing feedback loops.
mbcinline          - replacement version of inline using anonymous functions
cgslblock       - Constructor for calibration Generation Simulink block parsing manager
xregaxesinput                  - Constructor for the axes input object for a ListCtrl
ExhaustiveSearcher             - Neighbor search object using exhaustive search.

在MATLAB中,利用which可获取函数的路径。例如,在命令窗口中输入which sin,可获取函数sin()的位置信息,输出如下:

>> which sin
built-in (F:\MATLAB2014b\toolbox\matlab\elfun\@double\sin) % double method

2. 联机帮助系统

用户可以在主界面的HOME页下选择Help命令,或在命令窗口输入helpdesk或doc命令后,在浏览器中打开MATLAB的帮助系统,如图1-24所示。

MATLAB R2014b的帮助系统和以前版本的帮助系统有很大的差别。在MATLAB命令窗口中输入doc sin,或在图1-24所示的“Search Documentation”窗口中输入sin,可以查询函数sin()的帮助信息,如图1-27所示。

图1-27 sin帮助浏览

选择第一个链接,即弹出sin相关介绍说明及实例,效果如图1-28所示。

图1-28 sin帮助文档

用户在命令行窗口输入helpwin命令后,MATLAB R2014b的查询界面如图1-29所示。在图1-29中,MATLAB的命令或函数按照列表进行了分类。例如,单击matlab\demos,将获得MATLAB系统的实例。如果在命令窗口中输入help demos,将会在命令窗口中显示MATLAB系统的通用命令。

图1-29 helpwin查询界面