MATLAB

商业数学软件

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维 快速傅里叶变换 及 卷积 , filter 2函数可以实现二维数字滤波。

数值统计分析

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 家中国科技公司和机构、高校等拉进实体名单,因此相关授权已被中止。

参考资料

  1. MATLAB总览 MathWorks官网 2023-08-16
  2. MATLAB发展简史 MathWorks官网 2023-08-16
  3. MATLAB 实时编辑器 MathWorks官网 2023-08-16
  4. 数据分析 MathWorks官网 2023-08-16
  5. MATLAB 编程 MathWorks官网 2023-08-16
  6. MATLAB App 设计工具 MathWorks官网 2023-08-18
  7. 将 MATLAB 与其他编程语言结合使用 MathWorks官网 2023-08-16
  8. Matlab软件在大学物理课程教学中的辅助应用 中国知网 2023-08-16
  9. MATLAB软件辅助高等数学教学的探讨 中国知网 2023-08-16
  10. 【芯历史】“神器”也是“毒苹果”,MATLAB是如何长成的? 搜狐 2023-09-04
  11. MathWorks发布包含MATLAB和Simulink系列的2016a版本 中国知网 2023-08-16
  12. MathWorks发布Matlab和Simulink重大更新的版本 中国知网 2023-08-16
  13. MathWorks推出MATLAB重要新版本 中国知网 2023-08-16
  14. MATLAB和Simulink新版本Release 2018a发布众多更新 中国知网 2023-08-16
  15. MathWorks 2018b版本的MATLAB和Simulink中扩展深度学习功能 中国知网 2023-08-16
  16. matlab2019b 深度学习_Matlab R2019b新增功能介绍 CSDN博客 2023-08-16
  17. MathWorks发布MATLAB和Simulink R2020a版本 中国知网 2023-08-16
  18. MathWorks发布MATLAB和Simulink版本2021a 中国知网 2023-08-16
  19. MathWorks发布MATLAB和Simulink版本2021b 中国知网 2023-08-16
  20. MathWorks发布MATLAB和Simulink版本2022a 中国知网 2023-08-16
  21. Matlab 2022b如期而至,新增两款新产品 搜狐网 2023-08-16
  22. 数据的预处理 MathWorks官网 2023-08-23
  23. 初等数学 MathWorks官网 2023-08-23
  24. 线性代数 MathWorks官网 2023-08-23
  25. 数值积分和微分方程 MathWorks官网 2023-08-23
  26. 傅里叶分析和滤波 MathWorks官网 2023-08-23
  27. Statistics and Machine Learning Toolbox MathWorks官网 2023-08-24
  28. 描述性统计量和可视化 MathWorks官网 2023-08-24
  29. 概率分布 MathWorks官网 2023-08-24
  30. ANOVA MathWorks官网 2023-08-24
  31. 回归 MathWorks官网 2023-08-24
  32. 图形 MathWorks官网 2023-08-23
  33. MATLAB 绘图类型 MathWorks官网 2023-08-23
  34. 创建二维线图 MathWorks官网 2023-08-23
  35. 为图添加标题和轴标签 MathWorks官网 2023-08-23
  36. 格式和注释 MathWorks官网 2023-08-23
  37. Image Processing Toolbox-执行图像处理、可视化和分析 MathWorks官网 2023-08-24
  38. 图像-读取、写入、显示和修改图像 MathWorks官网 2023-08-23
  39. 对比度增强方法 MathWorks官网 2023-08-23
  40. 去除噪声 MathWorks官网 2023-08-23
  41. 帮助中心-医学影像工作箱 MathWorks官网 2023-09-04
  42. Lidar Toolbox-激光雷达工具箱 MathWorks官网 2023-09-04
  43. Simulink 与系统设计和仿真 MathWorks官网 2023-08-23
  44. 应用领域 MathWorks官网 2023-08-18
  45. 创建PPT对象 MathWorks官网 2023-08-23
  46. 使用 MATLAB 和 Simulink 生成报告 MathWorks官网 2023-08-23
  47. MATLAB R2023a Windows系统要求 MathWorks官网 2023-08-23
  48. 语言基础知识 MathWorks官网 2023-08-24
  49. 运算符和基本运算 MathWorks官网 2023-08-24
  50. 符号数学工具箱 MathWorks官网 2023-08-24
  51. 线图 MathWorks官网 2023-08-24
  52. 格式和注释 MathWorks官网 2023-08-24
  53. MATLAB Online MathWorks官网 2023-08-18
  54. MATLAB Online 的不同版本 MathWorks官网 2023-08-18
  55. 多高校被禁用Matlab 澎湃新闻 2023-08-18
  56. 哈工大也太难了!曝在全国大学生数学建模竞赛中被禁用“理工神器”MATLAB 搜狐网 2023-08-23