MATLAB是美国MathWorks公司开发的一款商业数学软件。是较多工程师和数学家都在使用的编程和数值计算平台。
MATLAB入门容易、操作简单,功能涉及众多领域。可以通过实时编辑器与他人共享脚本,方便协作;可以对数据进行探查、建模、绘图及可视化;能够支持简单交互式命令的运行和大型应用程序的开发;还能用于专业App的创建。
在某些特定的情况下,可能需要在其他的编程软件中唤醒MATLAB配合工作,这时可以轻松便捷地借助 MATLAB 引擎 API,不发起 MATLAB 桌面会话就可以实现即时使用。从MATLAB2010a版开始,C/
C++、
Fortran、Java、
Python等
编程语言中均可执行上述操作。
MATLAB除了在各种商业场景中发挥作用外,还应用于航空航天、医学医疗,以及高校专业科目教学中,帮助高质量完成专业教学任务。
历史溯源
技术缘起
初版MATLAB 的数学基础源自
J. H. Wilkinson 及 18 个同事于1965到1970年间发表的一系列研究论文。这些论文主要阐述了解决矩阵线性方程和特征值问题的算法。
1970年阿贡国家实验室的一组研究人员在美国国家科学基金会(NSF)的支持下,开发出叫做EISPACK的矩阵特征系统软件包,1975年克里夫·莫勒尔和其他几位学者在深入研究后,一起研发出名为LINPACK的线性方程软件包。由于借助FORTRAN调用这两个程序库太过于复杂和繁琐,这两个项目是失败的。
1975年,克里夫·莫勒尔(Cleve Moler)提交了一项“调研数学软件的开发方法”研究项目,目的是“调研满足研发、测试和推广高质量数学软件所需要的方法、成本和资源”。
版本初现
20世纪80年代初,创始人克里夫·莫勒尔(Cleve Moler)作为大学教授,希望学生可以方便地使用LINPACK和EISPACK,在学习了如何解析
编程语言后,克里夫·莫勒尔用
Fortran编写了初版的MATLAB。该名称是矩阵实验室(Matrix Laboratory)的缩写,其只是一个简单的交互式矩阵计算器,数据类型只有矩阵。并且保存于库中的文字和函数只有71个,若用户想添加库外的函数,须在获得源代码的前提下编写Fortran
子程序,在解析表里添加自己的函数名称,然后重新编译MATLAB。
商业化发展
初版MATLAB出现后,受到许多涉及数学矩阵运算专业的老师和学生追捧。1983年,在斯坦福攻读研究生工程学位的Jack Little提议开发基于MATLAB的商用产品。而后,Little、Moler、Steve Bangert合作于1984年成立了
迈斯沃克公司。由于当时的IBM台式机还不能够完全承载MATLAB的运行,Little在购买的Compaq电脑克隆机上不断修改和更新MATLAB运行程序。终于,1984年可以在电脑上运行的PC-MATLAB首次发布;次年Pro-MATLAB正式问世,这一新版本主要针对20世纪70年代初出现的操作系统Unix
工作站。
现代版本更新
1990年开始,各种新技术添加应用于MATLAB中,更多表示数据的方法被引入。如1992年在MATLAB 4中引入了
稀疏矩阵,用于表示表示非常大的,有很少非零值的数组;1990年在MATLAB中嵌入了
SIMULINK工具,开启
可视化仿真阶段;1996年MATLAB 5中引入的元胞数组,它是MATLAB对象的
索引;2004年由MATLAB 7完成了对单精度算术的支持;2008年面对对象的编程进行了重大改进。
在不断的更新和优化过程中,有两个非常重要的功能上线。一个是于2000年推出的MATLAB桌面版,该版中的任一面板都可以关闭或在取消停靠后在独立窗口中打开,十分便捷。另一个是2016年推出的实时编辑器,能够在单一的交互式环境中编写、运行和修改代码。
重要版本发布
自2012年以来,MATLAB不断推出重要版本及重大更新,优化功能服务,拓展涉及领域。
软件功能
数据预处理
MATLAB可以对数据进行预处理,如数据清洗、数据转换等。数据清洗器(Data Cleaner)可以识别面向列的混乱数据,一次可完成对于多个数据的清理,同时还可以完善清理过程。利用实时编辑器也可以完成诸多数据预处理任务,如调用ismissing函数可以清洗缺失数据,调用rmmissing函数能够删除缺失的条目,使用ischange函数可以查找数据的突变点,通过smoothdata函数可以平滑处理含噪数据,normalize函数能实现对数据的归一化处理等。除此之外,MATLAB还能完成清理离群数据、按组计算、去除数据中多项式趋势等预处理任务。
数值计算
MATLAB的技术缘起于数学,可以完成初等数学中的算术运算、
三角学相关运算、指数和对数运算、
复数运算、
离散数学运算等相对较为简单的运算。还能够完成各种
矩阵分解、
一次方程求解、计算特征值或奇异值等,例如,运用mldivide或mrdivide函数可以求解
线性方程组,通过transpose函数能够完成
向量或矩阵的转置,eig函数可以求出特征值及特征向量,svd函数可以对奇异值进行分解等。
同时,由于MATLAB主要以矩阵运算作为数据的基本操作形式,能够快速、简洁且高效完成矩阵运算,所以广泛运用于各类
数值分析任务中。借助MATLAB可以完成
数值积分、
微分方程相关运算,线性方程组相关运算,还可以求解
常微分方程(ODE)和
偏微分方程(PDE)。另外,调用MATLAB中的
傅里叶分析和滤波
相关函数还可以对离散数据进行处理和分析,fftn函数、convn函数可分别实现N维
快速傅里叶变换及
卷积,filter2函数可以实现二维数字滤波。
数值统计分析
MATLAB可以对数值进行各种统计分析操作,包括描述性统计分析、假设检验、
方差分析等。使用其自带的Statistics and Machine Learning Toolbox可以通过统计信息和
机器学习来分析数据并为数据
建模。不仅可以完成数据的导入导出及
可视化,还能根据样本数据计算有关
集中趋势、散度、形状、
相关性和协方差等描述性
统计量。在对样本数据进行
概率分布拟合后,可以判断数值分布类型,并生成分布样本。运用ANOVA系列函数还能够实现数值方差与协方差的分析与多重比较等任务。除此之外,这一Toolbox还能够对数值的回归模型进行学习及模拟,通过回归学习器以交互方式训练、验证和调整回归模型。
绘图及数据可视化
MATLAB具有较强的绘图能力,其自带的图形函数可以进行二维及三维静态图形的绘制。另外,还可以借助animate、movie等生成动画或视频的函数实现动态图形绘制。另外,使用hold on函数还可进行多线条的同步绘制,将多条图线共同展示于一块MATLAB面板上。
MATLAB可以通过调用不同函数绘制不同图像。主要绘图类型包括:
线图、散点图和气泡图、数据分布图、离散数据图、地理图、
极坐标图、
等高线图、
向量场、
曲面图和网格图和读取图像,除此之外,还能够进行三维可视化和动画呈现。例如,plot函数可以进行二维曲线的绘制,
面积函数可以填充区二维绘图,fplot3函数可以绘制三维参数化曲线,scatter函数可以绘制散点图,histogram2函数可完成二元
直方图的绘制,bar函数可以进行条形图的绘制等。
在使用MATLAB进行绘图时,还会使用以下函数对图像进行辅助信息的调整及呈现:title 函数向图中添加标题; xlabel 和 ylabel 函数向图中添加轴标签;legend 函数向图中添加标识每个
数据集的图例;还可以通过设置FontSize属性来控制标题、标签和图例的字体大小。
数字图像处理
MATLAB以其库内丰富的函数更加深入应用于数字图像处理领域,可以实现对图像格式转换、图像色彩变更、图像增强、图像去噪等操作。
在数字图像处理方面,可利用MATLAB中的imread、imshow等函数读取并显示图像;imwrite函数可以实现图像文件的保存;rgb2hsv函数、rgb2ycbcr函数可以实现数字图像的格式转换;gb2gray函数可以实现彩色图像灰度化;im2bw可以实现彩色图像的黑白化。
在图像增强方面,MATLAB可对
灰度图像和彩色图像实现增强。可以通过调用库中的imadjust函数将输入强度图像的值
映射到新值,提高图像
对比度;histeq函数可以对图像执行
直方图均衡化,以实现对比度增强;adapthisteq函数可实现自适应直方图均衡化,可以对每个图块对比度的增强,同时限制整体对比度增强,以避免放大图像中可能存在的噪声。
在数字图像去噪方面,通过MATLAB可实现对图像中常见噪声的去除。如,运行MATLAB自带的平均值滤波器Kaverage=fspecial('average',hsize) %,
中位数滤波器Kmedian=medfilt2(x0,[n,n]),Wiener滤波器(一种
自适应滤波器)K=wiener2(J,[n,n])可以对图像进行线性滤波。MATLAB较强的
图像处理能力使其不断加持于在医疗影像、卫星定位系统等科技领域。
程序设计及仿真建模
MATLAB中有数学、科学和工程计算相关的上万个相关内置函数,在程序设计时,可以使用包括数值、字符串、日期时间、分类、结构体和表在内的专用数据类型表示数据,还可以使用专门为每种数据类型设计的函数来执行常见任务。此外,MATLAB还能够进行编写可重用函数、创建自定义类等操作,并且加入了实时编辑器等专属功能,这使得借助 MATLAB的编程及程序设计,相比于传统的 C、
C++ 或
Fortran 等语言更快速高效和灵活。
同时,MATLAB中嵌入的
SIMULINK工具箱能够用于构建
仿真模型,它为用户提供了图形编辑器、可自定义的模块库以及求解器,能够进行动态系统建模和仿真。Simulink常被应用于汽车、航空、工业自动化、
信号处理、控制设计、物理建模、离散事件仿真等领域。
特色功能
生成报告和演示文稿
MATLAB可以用于演示文稿(PPT)的生成及修改。如使用newName函数可以打开演示文稿;find及replace函数可以对演示文稿中的内容进行修改和替换。另外,还可以使用MATLAB的PPT生成工具箱,将MATLAB生成的图形和文本直接插入到PPT中,也可以使用MATLAB的
LaTeX支持,生成高质量的科技报告和论文。
快速构建MATLAB应用程序
MATLAB中提供的App Designer是快速构建MATLAB应用程序的工具,可以帮助用户进行专业App的创建。MATLAB为用户提供了大量的App 组件和自定义交互,帮助复现仪表面板的外观和操作。由于并不要求软件开发专业背景,用户只需拖放
可视化组件即可实现图形用户界面 (GUI) 设计布局,或通过使用集成的编辑器快速为其行为编程,就可以完成App基本创建。
同时,MATLAB中创建的App还可以实现共享,不论对方是否拥有MATLAB,都可以从 App 库单击即访问。另外用户在打包时可以直接打包为交互式 Web App ,并使用 MATLAB Web App Server 进行共享。最终用户可直接基于浏览器运行 Web App,而无需额外安装任何软件,并且只要获得用户的允许,还能够实现多人协作模式。
系统要求
截止2023年8月,MATLAB最新版本为MATLAB R2023a。以该版本为例,
Windows及
Mac OS系统要求如下:
Windows系统要求
macOS系统要求
常用函数
向量、矩阵相关函数
符号、方程相关函数
绘图及可视化相关函数
MATLAB Online
使用MATLAB Online版本,用户可以通过 Web 浏览器使用 MATLAB。无需下载,不必安装,只要接入互联网并登录,就能够直接使用 MATLAB 和 Simulink;还可以通过在线共享和发布,与他人协作;在任何位置存储、管理和访问文件。这一版本受到高校师生及科研工作者的青睐,基本版 MATLAB Online 每月提供 20 小时的免费使用时间,用户可以访问 10 个常用工具箱。
争议事件
美国BIS曾将中国多所高校拉进MATLAB使用“黑名单”,宣布禁止师生使用
2020年5月开始,网友发现
哈尔滨工业大学、
哈尔滨工程大学等学校的学生陆续收到了MATLAB正版软件取消激活的通知,在与其开发公司
迈斯沃克交涉之后,才得知因为
美国商务部工业与安全局以国家安全或外交政策利益为由,将33 家中国科技公司和机构、高校等拉进实体名单,因此相关授权已被中止。
参考资料
数据分析.MathWorks官网.2023-08-16
初等数学.MathWorks官网.2023-08-23
线性代数.MathWorks官网.2023-08-23
概率分布.MathWorks官网.2023-08-24
ANOVA.MathWorks官网.2023-08-24
回归.MathWorks官网.2023-08-24
图形.MathWorks官网.2023-08-23
格式和注释.MathWorks官网.2023-08-23
去除噪声.MathWorks官网.2023-08-23
应用领域.MathWorks官网.2023-08-18
线图.MathWorks官网.2023-08-24
格式和注释.MathWorks官网.2023-08-24