MATLAB是美国MathWorks公司开发的一款商业数学软件。是较多工程师和数学家都在使用的编程和数值计算平台。
历史溯源
编辑技术缘起
初版MATLAB 的数学基础源自 J. H. Wilkinson 及 18 个同事于1965到1970年间发表的一系列研究论文。这些论文主要阐述了解决矩阵线性方程和特征值问题的算法。
1970年阿贡国家实验室的一组研究人员在美国国家科学基金会(NSF)的支持下,开发出叫做EISPAC++K的矩阵特征系统软件包,1975年克里夫·莫勒尔和其他几位学者在深入研究后,一起研发出名为LINPACK的线性方程软件包。由于借助FORTRAN调用这两个程序库太过于复杂和繁琐,这两个项目是失败的。
1975年,克里夫·莫勒尔(Cleve Moler)提交了一项“调研数学软件的开发方法”研究项目,目的是“调研满足研发、测试和推广高质量数学软件所需要的方法、成本和资源”。
版本初现
20世纪80年代初,创始人克里夫·莫勒尔(Cleve Moler)作为大学教授,希望学生可以方便地使用LINPACK和EISPACK,在学习了如何解析编程语言后,克里夫·莫勒尔用Fortran编写了初版的MATLAB。该名称是矩阵实验室(Matrix Laboratory)的缩写,其只是一个简单的交互式矩阵计算器,数据类型只有矩阵。并且保存于库中的文字和函数只有71个,若用户想添加库外的函数,须在获得源代码的前提下编写Fortran子程序,在解析表里添加自己的函数名称,然后重新编译MATLAB。
初版MATLAB保留的71个文字和函数
商业化发展
初版MATLAB出现后,受到许多涉及数学矩阵运算专业的老师和学生追捧。1983年,在斯坦福攻读研究生工程学位的Jack Little提议开发基于MATLAB的商用产品。而后,Little、Moler、Steve Bangert合作于1984年成立了MathWorks公司。由于当时的IBM台式机还不能够完全承载MATLAB的运行,Little在购买的Compaq电脑克隆机上不断修改和更新MATLAB运行程序。终于,1984年可以在电脑上运行的PC-MATLAB首次发布;次年Pro-MATLAB正式问世,这一新版本主要针对20世纪70年代初出现的操作系统Unix工作站。
PC-MATLAB
现代版本更新
1990年开始,各种新技术添加应用于MATLAB中,更多表示数据的方法被引入。如1992年在MATLAB 4中引入了稀疏矩阵,用于表示表示非常大的,有很少非零值的数组;1990年在MATLAB中嵌入了Simulink工具,开启可视化仿真阶段;1996年MATLAB 5中引入的元胞数组,它是MATLAB对象的索引;2004年由MATLAB 7完成了对单精度算术的支持;2008年面对对象的编程进行了重大改进。
在不断的更新和优化过程中,有两个非常重要的功能上线。一个是于2000年推出的MATLAB桌面版,该版中的任一面板都可以关闭或在取消停靠后在独立窗口中打开,十分便捷。另一个是2016年推出的实时编辑器,能够在单一的交互式环境中编写、运行和修改代码。
桌面版MATLAB截图
重要版本发布
编辑自2012年以来,MATLAB不断推出重要版本及重大更新,优化功能服务,拓展涉及领域。
MATLAB重大更新
时间 | 版本 | 主要更新 |
2012年 | MATLAB R2012b | MATLAB桌面版添加MATLAB工具条和应用程序库;Simulink更新外观,引入Simulink Projects管理项目文件和连接源控制软件 |
2014年 | MATLAB R2014b | 更新图形系统样式;增添更改图形对象属性新语法,方便自定义可视化;简化大数据文本文件和数据库访问及分析方式 |
2016年 | MATLAB R2016a | 新增MATLAB实时编辑器,包括App Designer及Simulink加快仿真速度等新功能 |
2018年 | MATLAB R2018a | 更新MATLAB、Simulink及其94个系列产品。包括两个新产品用于设计和测试状态监控和预测性维护算法的Predictive Maintenance Toolbox,集成了三维虚拟环境的车辆动态性能建模和仿真工具箱Vehicle Dynamics Blockset |
2018年 | MATLAB R2018b | 增强MATLAB深度学习功能,修复各系列产品中存在的bug;加入ONNX社区,实现MATLAB用户与其他深度学习框架用户间的协作;提供参考模型,且其模型导入器支持来自Caffe和Keras-Tensorflow的模型 |
2019年 | MATLAB R2019b | 增添了面向人工智能和汽车行业的垂类功能;加入Deep Learning Toolbox功能 |
2020年 | MATLAB R2020a | 扩展深度学习方面的AI功能;更新可训练神经网络的Deep Network Designer |
2021年 | MATLAB R2021a | 支持在实时脚本中使用动态控件,以及在实时脚本中使用任务添加绘图;推出针对卫星通信、雷达和DDS领域新产品 |
2021年 | MATLAB R2021b | MATLAB支持用户进行代码重构和列编辑;Simulink支持在编辑器中针对不同场景进行多个仿真,以及在工具条中创建自定义选项卡 |
2022年 | MATLAB R2021a | MATLAB新功能包括新App和App设计工具函数、图形增强以及自定义实时编辑器任务的功能;Simulink更新让用户能够使用新的封装编辑器简化封装工作流,或使用模型引用局部求解器加速仿真 |
2022年 | MATLAB R2021b | 新增医学成像工具箱(Medical Imaging Toolbox)、设计和仿真电池和储能系统(Simscape Battery)功能,深入医学和电气工程专业领域 |
软件功能
编辑数据预处理
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概率分布拟合分析图
绘图及数据可视化
MATLAB具有较强的绘图能力,其自带的图形函数可以进行二维及三维静态图形的绘制。另外,还可以借助animate、movie等生成动画或视频的函数实现动态图形绘制。另外,使用hold on函数还可进行多线条的同步绘制,将多条图线共同展示于一块MATLAB面板上。
MATLAB可以通过调用不同函数绘制不同图像。主要绘图类型包括:线图、散点图和气泡图、数据分布图、离散数据图、地理图、极坐标图、等高线图、向量场、曲面图和网格图和读取图像,除此之外,还能够进行三维可视化和动画呈现。例如,plot函数可以进行二维曲线的绘制,area函数可以填充区二维绘图,fplot3函数可以绘制三维参数化曲线,scatter函数可以绘制散点图,histogram2函数可完成二元直方图的绘制,bar函数可以进行条形图的绘制等。
在使用MATLAB进行绘图时,还会使用以下函数对图像进行辅助信息的调整及呈现:title 函数向图中添加标题; xlabel 和 ylabel 函数向图中添加轴标签;legend 函数向图中添加标识每个数据集的图例;还可以通过设置FontSize属性来控制标题、标签和图例的字体大小。
MATLAB绘制的二维图像
MATLAB绘制的三维图像
MATLAB绘制动态圆
数字图像处理
MATLAB以其库内丰富的函数更加深入应用于数字图像处理领域,可以实现对图像格式转换、图像色彩变更、图像增强、图像去噪等操作。
在数字图像处理方面,可利用MATLAB中的imread、imshow等函数读取并显示图像;imwrite函数可以实现图像文件的保存;rgb2hsv函数、rgb2ycbcr函数可以实现数字图像的格式转换;gb2gray函数可以实现彩色图像灰度化;im2bw可以实现彩色图像的黑白化。
MATLAB实现图像格式转换
MATLAB实现彩色图像灰度化
在图像增强方面,MATLAB可对灰度图像和彩色图像实现增强。可以通过调用库中的imadjust函数将输入强度图像的值映射到新值,提高图像对比度;histeq函数可以对图像执行直方图均衡化,以实现对比度增强;adapthisteq函数可实现自适应直方图均衡化,可以对每个图块对比度的增强,同时限制整体对比度增强,以避免放大图像中可能存在的噪声。
运用imadjust函数、histeq函数及adapthisteq函数进行的灰度图像增强
运用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对PPT内容进行修改
快速构建MATLAB应用程序
MATLAB中提供的App Designer是快速构建MATLAB应用程序的工具,可以帮助用户进行专业App的创建。MATLAB为用户提供了大量的App 组件和自定义交互,帮助复现仪表面板的外观和操作。由于并不要求软件开发专业背景,用户只需拖放可视化组件即可实现图形用户界面 (GUI) 设计布局,或通过使用集成的编辑器快速为其行为编程,就可以完成App基本创建。
同时,MATLAB中创建的App还可以实现共享,不论对方是否拥有MATLAB,都可以从 App 库单击即访问。另外用户在打包时可以直接打包为交互式 Web App ,并使用 MATLAB Web App Server 进行共享。最终用户可直接基于浏览器运行 Web App,而无需额外安装任何软件,并且只要获得用户的允许,还能够实现多人协作模式。
创建打包的 App,以便与其他 MATLAB 用户共享
系统要求
编辑截止2023年8月,MATLAB最新版本为MATLAB R2023a。以该版本为例,Windows系统及macOS系统要求如下:
Windows系统要求
类别 | 最低要求 | 推荐使用 |
操作系统 | Windows Server 2019 | Windows 11、Windows 10(版本20H2或更高版本)、Windows服务器2022 |
中央处理器 | 任何英特尔或AMD x86-64处理器 | 任何具有四个逻辑内核和AVX2指令集支持的英特尔或AMD x86-64处理器 (未来版本的MATLAB将需要支持AVX2指令集的处理器) |
内存 | 4 GB | 8 GB |
磁盘空间 | 仅MATLAB的3.8 GB 典型安装需要 5-8 GB | 23 GB用于所有产品的安装,强烈建议使用(SSD固态硬盘) |
显卡 | 不需要特定显卡 | 建议使用支持带有1GB GPU内存的OpenGL 3.3的硬件加速显卡 (使用并行计算工具箱的GPU加速需要具有特定计算能力范围的GPU) |
统计时间:2023年7月,参考来源 |
macOS系统要求
类别 | 最低要求 | 推荐使用 |
版本 | macOS Big Sur(11.6) (不再支持macOS Big Sur(11)) | macOS文图拉(13)、macOS Monterey(12.6) |
处理器 | 任何英特尔x86-64处理器、任何M系列芯片 (在Mac上,MATLAB使用Rosetta 2运行) | 任何具有四个逻辑核心和AVX2指令集支持的英特尔x86-64处理器 (未来版本的MATLAB将需要支持AVX2指令集的处理器) |
内存 | 4 GB | 8 GB |
磁盘空间 | 仅MATLAB的3.8 GB 典型安装需要 5-8 GB | 16 GB用于所有产品的安装,强烈建议使用SSD(固态硬盘) |
显卡 | 不需要特定显卡(使用并行计算工具箱的GPU加速在macOS上不可用) | 任何能够运行 macOS Big Sur 的 Mac 都具有能够运行 MATLAB 的 GPU |
统计时间:2023年7月,参考来源 |
常用函数
编辑向量、矩阵相关函数
函数 | 功能 |
size(A) | 返回矩阵的行数和列数 |
size(C,1)/size(C,2) | 返回矩阵的行数/列数 |
length(A) max(size(A)) | 返回长度最大的维度的长度 |
numel(A) | 返回矩阵元素的总个数 |
sum(A) | 返回矩阵所有元素的和 |
inv(A) | 返回矩阵A的逆矩阵 |
ndims(A) | 返回矩阵A的维度 |
iscolumn(x)/isrow(x) | 判断是否为列向量/行向量 |
isvector(x)/ismatrix(x) | 判断是否为向量/矩阵 |
isempty(x)/isscalar(x) | 判断是否为空向量/单个数值 |
dot(a,b) | 向量a点乘向量b(点积) |
cross(a,b) | 向量a叉乘向量b(叉乘) |
repmat(A,m,n) | 通过将A复制m行n列,返回m*n的矩阵 |
参考来源 |
符号、方程相关函数
函数 | 功能 |
simplity(f) | 简化公式f |
collect(f) | 合并同类项 |
expand(f) | 展开公式 |
horner(f) | 将乘法嵌套 |
factor(f) | 因式分解 |
pretty(f) | 相对直观显示公式 |
[n,d]=numden(f) | 通分,返回分母n及分子d |
参考来源 |
绘图及可视化相关函数
函数 | 功能 |
figure( ) | 创建画布 |
clf( ) | 清空画布内容 |
set( ) | 设置图形对象属性 |
plot(X,Y) | 创建Y中数据对X中对应值的二维线图 |
plot3( ) | 绘制三维图像 |
xlabel( ),ylabel( ) | 横轴、纵轴标签 |
xlim( ),ylim( ) | 横轴、纵轴范围 |
text( ) | 标注图线名称 |
title( ) | 添加图题 |
hold on/hold off | 不刷新画布/刷新画布 |
legend( ) | 添加图例 |
grid on/grid off | 打开/关闭网格线 |
grid minor | 打开最小网格线 |
save( ) | 保存工作区变量 |
saveas( )/imwrite( ) | 保存图片 |
参考来源 |
MATLAB Online
编辑使用MATLAB Online版本,用户可以通过 Web 浏览器使用 MATLAB。无需下载,不必安装,只要接入互联网并登录,就能够直接使用 MATLAB 和 Simulink;还可以通过在线共享和发布,与他人协作;在任何位置存储、管理和访问文件。这一版本受到高校师生及科研工作者的青睐,基本版 MATLAB Online 每月提供 20 小时的免费使用时间,用户可以访问 10 个常用工具箱。
争议事件
编辑美国BIS曾将中国多所高校拉进MATLAB使用“黑名单”,宣布禁止师生使用
2020年5月开始,网友发现哈工大、哈工程等学校的学生陆续收到了MATLAB正版软件取消激活的通知,在与其开发公司MathWorks交涉之后,才得知因为美国商务部工业与安全局以国家安全或外交政策利益为由,将33 家中国科技公司和机构、高校等拉进实体名单,因此相关授权已被中止。
百科词条作者:小小编,如若转载,请注明出处:https://glopedia.cn/21008/