本节书摘来自异步社区《MATLAB 7.0从入门到精通(修订版)》一书中的第1章,第1.1节,作者 刘保柱,苏彦华,张宏林,更多章节内容可以访问云栖社区“异步社区”公众号查看。
第1章 MATLAB概述
MATLAB是一种高效的工程计算语言,它将计算、可视化和编程等功能集于一个易于使用的环境。在MATLAB环境中描述问题及编制求解问题的程序时,用户可以按照符合人们科学思维的方式和数学表达习惯的语言形式来书写程序。其典型应用主要包括以下几个方面:
- 数学计算;
- 算法开发;
- 数据采集;
- 系统建模和仿真;
- 数据分析和可视化;
- 科学和工程绘图;
- 应用软件开发(包括用户界面)。
MATLAB是一个交互式系统(写程序与执行命令同步),其基本的数据元素是没有维数限制的阵列。这使得用户可以解决许多工程技术上的问题,特别是那些包含了矩阵和向量的公式的计算。采用MATLAB编制解决上述问题的程序比采用只支持标量和非交互式的编程语言(如C语言和Fortan语言)更加方便。
MATLAB这个词代表“矩阵实验室”(matrix laboratory),它是以线性代数软件包LINPACK和特征值计算软件包EISPACK中的子程序为基础发展起来的一种开放型程序设计语言。20世纪80年代初期,Cleve Moler和John Little采用C语言改写了MATLAB的内核,不久他们便成立了Mathworks软件开发公司,并将MATLAB正式推向市场。历经十几年的发展和竞争,MATLAB成为国际认可的最优化的科技应用软件。在大学里,它是用于初等和高等数学、自然科学和工程学的标准教学工具;在工业界,它是一个高效的研究、开发和分析的工具。随着科技的发展,许多优秀的工程师不断地对MATLAB进行了完善,使其从一个简单的矩阵分析软件逐渐发展成为一个具有极高通用性,并带有众多实用工具的运算操作平台。
MATLAB的一个重要特色就是它有一套程序扩展系统和一组称之为工具箱(toolboxes)的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。
MATLAB系统由以下5个主要部分组成,下面具体进行介绍。
- 开发环境:由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于浏览帮助、工作空间、文件的浏览器。
- MATLAB数学函数库:这是一个包含大量计算算法的集合,这些函数包括从最简单最基本的函数(如加、正弦等)到诸如矩阵的特征向量、快速傅立叶变换等较复杂的函数。
- MATLAB语言:这是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入输出和面向对象的编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。
- 图形处理:用MATLAB可以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维数据可视化、图像处理、动画和表达式作图,低层次的作图包括定制图形的显示和为用户的MATLAB应用程序建立的图形用户界面。
- MATLAB应用程序接口(API):这是一个库,它允许用户编写可以和MATLAB进行交互的C或Fortran语言程序。
1.1 MATLAB 7.0简介
MATLAB软件从1984年推出的第1个版本到目前发布的第14个版本MATLAB 7.0(Release14),有了较大的改进和增补,增加了许多新功能和更为有效的处理方法。
1.开发环境
- 新的用户界面环境和开发环境,使用户更方便地控制多个文件和图形窗口,用户可以按照自己的习惯来定制桌面环境,还可以为常用的命令定义快捷键;
- 功能更强的数组编辑器和工作空间浏览器,用户可更方便地浏览、编辑和图形化变量;
- 提供的M-Lint代码分析器,可以方便用户修改代码以取得更好的性能和可维护性;
- 更强大的编辑器,用户可以选择执行M文件中的部分内容等。
2.编程
- 支持函数嵌套、有条件中断点;
- 可以用匿名函数来定义单行函数等。
3.数值处理
- 整数算法,方便用户处理更大的整数;
- 单精度算法、线性代数、FFT和滤波,方便用户处理更大的单精度数据;
- Linsolve函数,用户可以通过定义系数矩阵更快地求解线性系统;
- ODE求解泛函数,操作隐式差分等式和求解多点式边界值问题。
4.图形化
- 新的绘图界面窗口,用户可以不必通过输入M函数代码而直接在绘图界面窗口中交互式地创建并编辑图形;
- 用户可以直接从图形窗口中生成M代码文件,使得用户可以多次重复地执行用户自定义的作图;
- 更强大的图形标注和处理功能,包括对象对齐、连接注释和数据点的箭头等;
- 数据探测工具,用户可以在图形窗口中方便地查询图形上某一点的坐标值;
- 功能更强大的图形句柄等。
5.图形用户界面
- 面板和分组按钮使得用户可以对用户界面的控件进行分组;
- 用户可以直接在GUIDE中访问ActiveX控件。
6.文件I/O和外部应用程序接口
- 新的文件I/O函数支持用户可以读更大的文本文件,并且可以向Excel和HDF5文件中写入内容;
- 支持压缩格式的MAT文件,使得用户可以使用较少的磁盘空间保存大量的数据,而且速度更快;
- 可以使用Javaaddpath函数来动态添加、删除或重载Java类,而不必重启MATLAB 7.0;
- 支持COM用户接口、服务器事件和Visual Basic脚本;
- 可以基于简单的对象访问协议(SOAP)来访问网页服务器;
- 提供FTP对象用于连接FTP服务器,实现对异地文件的处理;
- 支持Unicode国际字符集标准,使得MAT文件中的字符数据可以在不同语言之间共享。