MATLAB 新增功能

新版本带来一系列新工具,帮助您预处理和分析数据、编写脚本和算法、构建 App、携手团队开发软件。

与此同时,MATLAB 的运行速度再获提升。以下是详细介绍。

环境

全新 实时编辑器控件:添加数值微调器以增大和减小实时脚本中的变量值 (R2022b);通过将变量链接到实时编辑器控件的值来创建动态控件 (R2021a);以及设置默认值 (R2021b)

全新 实时编辑器任务:指定控件值更改时运行哪些代码 (R2022b);开发您自己的实时编辑器任务以在实时脚本中使用 (R2022a)

全新 MATLAB Online 主题:更改 MATLAB 桌面的颜色以匹配您的操作系统颜色方案 (R2022b)

编辑器 Python 支持:查看和编辑带有语法高亮、自动缩进和分隔符匹配的 Python 文件 (R2022a)

实时编辑器颜色:更改实时脚本和函数的文本和背景颜色 (R2022a)

实时编辑器导出:使用 export 函数以编程方式导出实时脚本和函数 (R2022a)

编辑器:代码重构和模块编辑、更为友好的代码建议、代码自动填充和内联调试控件 (R2021b)

实时编辑器动画:使用交互式界面来控制动画 (R2021a),并将其导出为影片或 GIF 动画 (R2021b)

语言和编程

使用新的数据类型和语言构造,编写运行更快、结构更清晰且更易于维护的代码。 

全新 dictionary 对象:将唯一键映射到值以便快速查找 (R2022b)

全新 代码分析器:标识并探查您的代码库中的问题 (R2022b)

全新 输出参数验证:验证函数和类方法中的输出参数 (R2022b)

函数输入参数验证:声明函数输入参数,以简化输入错误检查(R2020b、R2019b)

name=value 语法:在使用名称-值参数的函数中使用 name=value 语法 (R2021a)

pcode 函数:带有增强混淆的 P 代码文件 (R2022a)

backgroundPool:在不阻止 MATLAB 命令提示符的情况下异步执行函数 (R2021b);查询排队和运行的 Future 对象和后台池的状态 (R2022a)

模块化索引:使用新的超类分别自定义各项类索引操作 (R2021b)

类图查看器:创建图形化的类图来探查类详细信息和共享设计 (R2021a)

部分用于搜索球的图像的函数和参数代码。

使用 arguments 代码块的函数参数验证示例。

数据导入和分析

访问、组织、清理和分析来自多个数据源的数据。

全新 数据清理器:以交互方式识别和清理时间表 (R2022a) 和表 (R2022b) 中的杂乱数据;查看迷你图和汇总统计量 (R2022b)

全新 数据分析:新增和更新的数据分析函数,包括 trenddecomp、detrend、mape、rmse 和 isuniform(R2022b、R2021b)

全新 MATLAB Online 中的变量编辑器:查看表格数据的迷你图和汇总统计量,使用“查找”和“转至”对话框导航变量,以交互方式保存数据选择的逻辑索引,以及用空数组替换表格数据 (R2022b)

全新 并行处理:在基于线程的环境中使用底层文件 I/O 操作 (R2022b)

数据预处理函数:将变换后的变量追加到输入数据 (R2022a)

数据预处理实时编辑器任务:将简单的点击式界面添加到实时脚本中,以执行一组特定的操作,包括删除缺失值和离群值、进行平滑处理和归一化以及分组和联接 (R2019b-R021b)

HDF5:支持 HDF5 版本 1.10,包括单写/多读 (SWMR)、虚拟数据集 (VDS) 和元数据缓存微调 (R2021b)

NetCDF:支持 NetCDF 版本 4.7.4,包括读写 NC_STRING 数据 (R2021b);启用远程数据集的字节范围读取 (R2022a)

使用清理离群数据实时编辑器任务进行数据预处理。

大数据

轻松扩展大数据分析,无需大动干戈。

全新 Parquet 文件:使用 rowfilter 进行条件筛选(谓词下推)来限制导入的数据量;支持行组和嵌套数据结构体的读写(R2022b、R2022a)

数据存储性能在数据存储中指定 FileSet 对象以提高性能 (R2021b)

数据存储:使用并行处理从数据存储中读取所有数据 (R2021a);合并和变换数据存储 (R2019a)

数据存储写入:将数据存储中的大型数据集合写出到磁盘,用于数据工程和基于文件的工作流 (R2020a)

tall 数组:在更多函数中支持 tall 数组,包括:

  • groupfiltermatches (2020a)
  • setdiff、xcorrouterjoin (2019b)
  • groupcounts、intersectsvd (2019a)
着色表显示 1987 年至 2008 年间按月份和年份排列的航班。

tall 数组可对行数太多而无法放入内存的数据进行运算。

数学

数学函数为分析数据、开发算法和创建模型提供一系列数值计算方法。

全新 N 维数组数学:计算范数 (pagenorm),求解线性方程(pagemldivide、pagemrdivide),计算矩阵求逆 (pageinv),以及对 N 维数组的页执行奇异值分解 (pagesvd)(R2022b、R2022a、R2021b)

全新 数学函数的代码生成:为多个函数生成 C 代码(使用 MATLAB Coder),包括 ode15、shortestpathnearest (R2022b)、integralinterpft (R2022a) 以及 digraph、graph、hess、ode78ode89 (R2021b)

tensorprod 函数:计算两个数组之间的张量积 (R2022a)

ode78ode89 函数:对常微分方程使用高阶 Runge-Kutta 求解器 (R021b)

图算法:计算所有路径、所有循环和循环基 (R2021a)

“优化”实时编辑器任务:以交互方式求解优化问题 (R2020b)

优化窗口显示在具有或不具有约束的情况下最小化函数的选项。

使用优化实时编辑器任务以交互方式定义和求解优化问题。

数据可视化

使用新的绘图函数和自定义功能对您的数据进行可视化。

全新 绘制表数据:将表直接传递给针状、阶梯和地理图 (R2022b)、plot、plot3、polarplot 和其他线图绘制函数 (R2022a) 以及散点图、气泡图和分簇散点图 (R2021b)

全新 MATLAB Online 中的图窗代码:编辑图形对象属性时生成代码 (R2022b)

全新 MATLAB Online 中的绘图选项:自定义图窗创建、数据链接和标注 (R2022b)

exportgraphics 函数:创建动画 GIF 文件 (R2022a);捕获图形并将其追加到现有的 PDF (R2021b)

创建绘图实时编辑器任务:以交互方式创建绘图并生成代码 (R2021a);向生成的绘图添加可视化效果 (R2021b)

新的绘图函数:使用 bubblecloud 可视化部分与整体对比关系 (R2021a);使用 bubblechartbubblechart3polarbubblechart 在二维坐标、三维坐标和极坐标中创建气泡图 (R2020b);使用 swarmchart 可视化离散数据的分布 (R2020b)

exportgraphicscopygraphics 函数:保存和复制图形,增强了对发布工作流的支持 (R2020a)

tiledlayout 函数:在图窗中创建可配置的绘图布局 (R2019b);定位、嵌套和更改布局的网格大小 (R2020a)

App 构建

借助 App 设计工具,您无需成为专业的软件开发人员即可创建专业的 App。

全新 App 性能:更快的启动时间和更敏捷的图形交互响应能力 (R2022b)

实时编辑器任务:开发您自己的实时编辑器任务以用于实时脚本 (R2022a)

自定义 UI 组件:在 App 设计工具中以交互方式创建自定义 UI 组件 (R2022a),或以编程方式创建您自己的类 (R2020b),以制作包含算法以及图形和 UI 对象的复合 UI 组件

表 UI 组件:以交互方式重新排列表 UI 组件的列 (R2022a);使用 scroll 函数以编程方式滚动到表 UI 组件中的某个位置 (R2021a)

辅助功能:使用 focus 函数以编程方式修改 App 设计工具中组件的 Tab 键焦点顺序并将键盘焦点给予 UI 组件 (R2022a)

样式:在表单元格和树节点中添加图标 (R2022a);创建样式并添加到树 UI 组件中的节点和级别 (R2021b);为表 UI 组件中的行、列或单元格创建和添加样式 (R2019b)

在后台运行代码:使用并行语言 (backgroundPool) 创建响应速度更快的 App (R2021b)

App 设计工具:在代码视图中使用实时编辑器中的工具和快捷方式 (R2021b);在设计视图画布中缩放和平移 (R2021a)

比较工具:比较与合并使用 App 设计工具创建的 App (R2020b)

外部语言接口

MATLAB 可与其他编程语言进行灵活的双向集成。这使得编程语言的差异不再是团队协作的障碍,他们可以投入更多的时间来开发产品,花费较少的时间来换用其他语言重新编码。

全新 .NET 引擎 API:从 .NET 应用程序调用 MATLAB (R2022b)

全新 .NET 接口:支持 .NET 5 和 .NET Core (R2022b)

全新 Python 引擎:将 NumPy 数组直接传递给 MATLAB 函数 (R2022b)

Python:将 Python 列表和元组类型转换为 MATLAB 类型 (R2022a)

Python:使用 name=value 语法将关键字参数传递给 Python 函数 (R2022a)

pyrunpyrunfile 函数:在 MATLAB 中运行 Python 命令和脚本 (R2021b)

Python:支持复数多维数组 (R2021b)

C++ 接口:使用头文件、源文件或库文件构建 C++ 库的 MATLAB 接口(R2021a、R2020b)

性能

MATLAB 每个版本的性能都在提升,并且无需修改任何一行代码。

全新 prctile、quantileiqr 函数:改进了使用少量输入数据时的性能 (R2022b)

全新 mldividepagemldivide 函数:改进了使用小型矩阵时的性能 (R2022b)

全新 conv、conv2convn 函数:改进了进行两个向量、矩阵和数组的卷积时的性能 (R2022b)

全新 App 性能:更快的启动时间和更敏捷的图形交互响应能力 (R2022b);改进了在 uifigure 中创建图的性能 (R2021b)

:改进了脚本中静态方法、常量属性访问和包函数的性能 (R2022a)

Python 数据类型转换:改进了在进程外模式下在 Python 和 MATLAB 数据类型之间转换的性能 (R2022a)

用于 Python 的 MATLAB 引擎 API:改进了调用 Python 中大型多维数组的性能 (R2022a)

表索引:改进了通过使用花括号、圆点表示法或多级索引进行下标对元素赋值时的性能(R2022a、R2021b)

fzero 函数:改进了性能 (R2022a)

稀疏矩阵乘法:提升了大型稀疏矩阵乘法的性能 (R2021a)

稀疏线性方程组:改进了求解稀疏线性方程组 A*X = B(B 为多列)的性能 (R2021a)

条形图显示了 MATLAB 逐年的性能提高。

软件开发

软件开发工具可帮助您管理和测试代码、集成其他软件系统,以及将应用程序部署到云。

全新 编译工具:创建和运行软件编译任务 (R2022b)

全新 依存关系分析器:查找所需的附加功能 (R2021a),识别包含语法错误的文件 (R2022b),并将依存关系图保存为图像 (R2022a)

全新 MATLAB Online:在 MATLAB Online 中使用工程和 Git 进行协作 (R2021b),包括管理 Git 分支和仓库 (R2022b)

代码兼容性分析器:根据当前版本的 MATLAB 识别并解决兼容性问题 (R2022a)

单元测试框架:使用 TestCase 类模板更快更准确地创建测试 (R2021b);收集源代码的语句和函数覆盖率指标 (R2022a);在集群和云上并行运行测试 (R2020b)

适用于 MATLAB 的 Jenkins 插件:运行 MATLAB 测试,生成 JUnit、TAP 等格式的测试报告和 Cobertura 代码覆盖率报告

新参考架构:在 Amazon Web Services (AWS) 和 Microsoft Azure 上部署和运行 MATLAB

图片显示了从当前文件夹中选择一个文件后点击右键,从显示的菜单中选择“源代码管理”,然后在下一个菜单中选择“从 SVN 更新”。

直接从 MATLAB 使用第三方源代码管理工具,如 SVN。

控制硬件

控制 Arduino 和 Raspberry Pi 等常见微控制器,通过网络摄像头采集图像,还可以获取无人机传感器数据和图像数据。

全新 Arduino:支持 ESP32 MCU 开发板 (R2022a),包括对伺服和旋转编码器外设的支持 (R2022b)

全新 Arduino:使用 Arduino 资源管理器连接和控制开发板 (R2021b),包括管理 Arduino 库以及与 I2C、SPI 和串行外设的对接 (R2022b);对 Arduino 提供 BLE 连接 (R2021b)

硬件管理器:从 MATLAB 中发现并连接到您的硬件 (R2022a)

传感器支持:从连接到 Arduino 的 APDS9960 传感器读取数据 (R2021b)

Raspberry Pi:支持 CAN 扩展板 (R2021b)

无人机:连接到多个 Ryze Tello 无人机,以控制和读取传感器数据 (2021b)

打开着的 Arduino 资源管理器,显示了引脚配置和标绘引脚的图形。

使用 Arduino 资源管理器理解传感器测量值。