1.1 MATLAB简介
MATLAB是由美国Mathworks公司开发的用于数据分析处理、算法开发应用、数据可视化及图形处理的科学软件。使用MATLAB产品,相比传统编程语言,例如C、C++和Firtran等,能更为快速地解决技术计算的问题,因而MATLAB被越来越广泛地应用于科学计算、嵌入式系统、控制系统、数字信号处理、图像和视频处理、通信系统、计算金融学等领域。
MATLAB是新一代的高性能计算语言。它集成了计算、可视化和编程在一个友好的环境中,问题和解决方案都是以熟悉的数学符号表示。典型用途包括如下几种。
● 数学和计算。
● 算法开发。
● 建模和仿真。
● 数据分析、挖掘和可视化。
● 科学和工程制图。
● 图形用户界面的应用开发。
1.1.1 MATLAB的发展历程
美国新墨西哥大学计算机科学系主任Cleve Moler和他的同事于20世纪70年代编写了MATLAB,最早的MATLAB是用Fortran语言编写的,早期版本以简单矩阵运算为主,主要是为了减轻学生编程的负担。MATLAB为矩阵(Matrix)和实验室(LABoratory)前几个英文字母组合。随后在1984年Little、Moler等人共同创立了MathWorks公司,正式把MATLAB产品推向市场。此后MathWorks公司不断完善产品,图形图像处理、符号运算等多种功能被添加到MATLAB中,同时随着信息技术、科学算法的不断发展,不同领域中需要使用的算法也被集成为工具箱加入MATLAB。目前,MATLAB已成为国际公认的优秀计算软件,它在各领域的应用也越来越广,并且有着更广阔的应用前景。
1.1.2 MATLAB的优势和特点
近年来MATLAB在各领域的应用越来越广泛,这主要得益于MATLAB具有以下优势。
1.编程效率高
对于复杂算法的开发,MATLAB函数库提供了大量函数可供直接调用,面向专业领域的工具箱减轻了以往需要复杂编程开发的负担,相比一般编程语言可大大节省算法开发时间,而对于非算法研究领域人员,如果只想在自己的领域使用已有的算法,可灵活地调用MATLAB编写好的函数。
2.使用方便
MATLAB多数工具箱提供了图形界面操作,无须编写代码,直接通过界面操作。
3.扩充能力好,移植性强
通过MATLAB编写的程序可通过多种途径与常用的编程语言、应用软件连接,扩充移植能力强。
4.开放性好
MATLAB一般函数都是以m文件形式存在的,可以直接打开相应算法的m文件,查阅源代码。
5.简单易用的程序语言
MATLAB语言特征与C语言相似,而且更加简单,更加符合专业人员对算法的书写格式。
6.高效方便的矩阵运算
MATLAB的基本数据单位是矩阵,与数学、工程中常用的形式十分相似,故用MATLAB来解决问题较为简单。
7.方便的绘图功能
MATLAB提供了一系列绘图函数,可方便地对数据进行可视化分析。
下面简单介绍MATLAB主要特点。
● 科学计算的高级语言,为算法开发提供高效的实现途径。
● 提供完善的开发环境,系统管理代码、文件、数据。
● 提供友好的交互界面,用于探索、设计、解决实际问题。
● 内含大量的可直接使用的数学函数,涉及线性代数、统计学、傅里叶分析、滤波、优化及数值积分等方面。
● 提供二维和三维图用于数据的可视化分析。
● 可以自定义生成图形用户界面。
● 编写的代码可与外部的程序和其他编程语言集成,例如C、C++、Fortran、Java和Microsoft Excel等。
1.1.3 MATLAB的系统组成
MATLAB主要由以下几部分组成。
1.开发环境
开发环境帮助使用者高效地处理MATLAB函数和文件,其中许多环境提供了友好的图形界面,可交互使用,主要包括:命令窗口,代码编辑、调试、分析窗口,工作空间窗口,浏览器查看帮助窗口。
2.数学函数库
数学函数库包含了从初等函数(如求和、正弦、余弦)到更为复杂的算法(如矩阵求逆、矩阵特征值、快速傅里叶变换)在内的大量数学函数。
3.MATLAB语言
MATLAB语言是高级矩阵/数组语言,具有流程控制、函数调用、数据结构、输入/输出、面向对象编程等程序语言特征。利用MATLAB语言既可以进行小规模程序设计,快速完成算法设计的基本任务,也可进行大规模编程,开发复杂的程序算法。
4.图形功能
MATLAB提供了图形功能,可视化地显示向量和矩阵,同时提供在图形上注释和打印功能。此外还包括二维和三维数据可视化、图像处理、动画生成、演示图形等高级功能;用户自定义图形对象,建立完整的图形用户界面等低级功能。
5.应用程序接口
利用MATLAB提供的外部应用程序可以开发C/C++和Fortran与MATLAB交互的程序算法。包括将MATLAB作为计算引擎的MATLAB引擎技术,建立动态链接调用MATLAB程序文件和MAT数据文件读/写。
综上可以看出,MATLAB是一个功能强大的系统,集数据计算、图形管理、程序开发为一体,向用户提供了友好的操作界面环境,同时通过与其他编程环境的交互操作,可以充分利用MATLAB语言的优势,大大缩短算法开发周期。