文自:西班牙 马德里 卢卡斯·加西亚 Lucas García <数学家,机器学习>

My favorite features in MATLAB R2021b/Exploring some of the new features in yet another interesting software release

文章总结了10个MATLAB R2021b版本推出的新功能,大家一起来看看MATLAB R2021b新功能:

1. 在实时编辑器中导出动画

使用实时编辑器导出动画变容易。

可以简单地通过使用新的导出动画按钮,将动画导出为视频或gif。

点击图片播放从MATLAB导出的动画

2. 测试类模板

测试代码是开发高质量软件不可分割的一部分。

对我来说,测试就像呼吸。

如果你不(充分)测试你的代码,它最终会消亡。

使用MATLAB中现有的测试框架,您可以编写单元测试,进行性能测试,测试你的应用程序,或者使用mock对象替换依赖的部分,从而单独测试完整系统中的一个部分。

MATLAB R2021b包括一个TestCase类模板来加速您的测试的创建。你需要在首页、编辑器或实时编辑器标签页中打开“新建>测试类”:

新测试类

这会打开下面的模板,这样你就可以更方便地创建测试:

TestCase模板

有趣的是,模板中出现的默认测试类会立即失败,因此您可以开始实现测试和代码。

此外,它还包括几个方法块(TestClassSetup、TestMethodSetup和Test)来开始定制您的测试。

我的同事Heather Gorr博士有一篇精彩的演讲,她在演讲中涉及了测试驱动开发以及其他主题:

Would you trust your model with your life? Research vs. reality in AI

3. 全新的实时任务Live Tasks

我必须承认我不经常使用Live Tasks。

然而,每次我这么做,都让我脑洞大开。这个新版本将Compute by group和Normalize Data实时任务引入MATLAB,并将Cluster Data实时任务引入统计和机器学习工具箱。其中,我最喜欢的,可能也是由于用户体验,就是Compute by group。对每个组进行数据分组、统计计算、转换或过滤操作,对于这个实时任务来说是再简单不过了。当然,它还能自动为您生成MATLAB代码。

你可以自己看看它是如何运作的:(GIF动画)

按组计算实时任务

4. 为ROS节点生成优化过的CUDA代码

在过去,将GPU Coder为深度神经网络生成的CUDA代码引入ROS节点的过程令我深受折磨。

这需要手动地将生成的库集成到一个手写的C++ ROS节点中。

在这个版本的ROS Toolbox中,您现在可以直接从您的Simulink模型中为ROS节点生成和部署优化过的CUDA代码。简单而美丽。

自己体验这个示例吧: Lane and Vehicle Detection example.

mathworks.com/help/ros/ug/lane-and-vehicle-detection-in-ros-using-yolov2-deep-learning-algorithm.html

5. BackgroundPool

我经常收到来自MATLAB用户的反馈,他们想要异步运行代码,这迫使他们使用并行计算工具箱。

通常,MATLAB在运行计算时得暂停对其它操作的响应。

如果你正在开发一个应用程序,这可能会影响它的交互性。

无需再提,Parallel Computing Toolbox(mathworks.com/products/parallel-computing.html)为广泛的并行编程范式、GPU计算提供了API,并为集群和HPC(包括Hadoop或Spark这样的大数据框架)提供了API。

虽然访问并行计算工具箱会有额外的好处(获得更多的基础线程),MATLAB用户现在可以在MATLAB主进程中以一个线程的方式运行单个任务。

这就有了异步工作流(使用backgroundPool(mathworks.com/help/matlab/ref/parallel.backgroundpool.html)打开池,然后使用parfeval【mathworks.com/help/matlab/ref/parfeval.html】在后台运行你的函数)。

你可以点 这里【mathworks.com/help/matlab/matlab_prog/use-the-background-to-make-your-apps-more-responsive.html】 查看一个样例程序,如何利用 backgroundPool 让你的应用程序可以随时响应界面操作。

6. PointNet++

有关PointNet和PointNet++的文章(1, 2),我已经仔细阅读过。

mathinking.github.io/blog/en/my-favorite-features-matlab-r2021b/#pointnet

mathinking.github.io/blog/en/my-favorite-features-matlab-r2021b/#pointnetplusplus

有一天我可能会针对这两篇论文发篇文章,说明为什么PointNet++是分割点云数据的绝佳选择。

但是现在,您不再需要弄清楚如何在MATLAB中使用深度学习自定义框架来创建PointNet++网络(就像在R2021a中的情况一样),

有pointnetplusplusLayers就可以了。mathworks.com/help/lidar/ref/pointnetpluslayers.html

例如,你将能藉此解决航空激光雷达的点云数据的语义分割问题:

使用PointNet++进行语义分割mathworks.com/help/lidar/ug/aerial-lidar-segmentation-using-pointnet-network.html

Charles R. Qi, Hao Su, Kaichun Mo and Leonidas J. Guibas, “PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation”, 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2017 https://arxiv.org/abs/1612.00593v2Charles R. Qi, Li Yi, Hao Su, and Leonidas J. Guibas. “PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space”, ArXiv:1706.02413 [Cs], June 7, 2017. https://arxiv.org/abs/1706.02413

7. 一键式部署你的机器学习模型到生产环境

一旦你使用分类学习器或回归学习器训练机器学习模型,将它带到生产只需点击几下鼠标。

导出模型用于部署

这将为MATLAB Production Server创建一个部署项目,并自动生成所需的MATLAB代码,以服务于生产中的模型。

你可以在这里和这里找到分类学习器和回归学习器两个应用程序的例子。

8. pyrun 与 pyrunfile(轻松运行Python代码)

自从Python接口的第一个版本在MATLAB R2014b中发布以来,我一直是一个忠实的粉丝。

这个接口不仅完成了从MATLAB调用Python的工作,而且我也相信它是一个美丽的实现设计。

如果你想查看文档,你当然可以这样做。

然而,我建议你看一个线上的演讲视频,我的同事Heather和Yann讨论用例,工作流程,以及使用这两种语言的技巧 (视频: youtu.be/MzoFK0_UbOA)

尽管这个接口在我或其他人看来难以置信,但我理解它对于那些只需要运行Python代码片段或脚本的人来说可能并不那么实用。

现在,使用pyrun和pyrunfile,你可以如下从MATLAB调用Python命令和脚本:

>> pyrun("from __future__ import braces") Python Error: SyntaxError: not a chance (, line 1)

这是CPython中关于用大括号来控制流的有趣的彩蛋之一。

你可以做一些更有意义的事情来举例说明你的用例;事

实上,我只是觉得这个很有趣。

9. MATLAB中的Git工作流程

简单来说,MATLAB Online是您的web浏览器中的简化MATLAB。mathworks.com/products/matlab-online.html

无需下载,不用安装。

Git集成已经成为MATLAB的一部分很长时间了。

从R2021b开始,MATLAB Online也提供了对基本Git工作流的支持:

从Git导入

你现在可以clone, commit, pull, push and fetch files到你的MATLAB Drive:

Clone a Repository

10. 全新的MATLAB Editor

如果你读到这里,我的首选是MATLAB编辑器的更新。

这对你来说可能不是一个花哨的选择。

在相当长的一段时间里,有相当多的编码特性可以用于Live Scripts(.mlx文件),但不能用于普通代码(.m文件)。

对于我们这些仍然用普通代码维护大量代码的人来说,这常常伴随着生产力的下降。

MATLAB 编辑器现在支持您的 MATLAB 代码(在 .m 文件中)的丰富功能集:

放大和缩小代码 制表符补全 协助自动完成语法 填写函数调用时的智能参数建议 增强调试 代码重构 代码块选择 书签 文本大小写变化 …

有了 R2021b,我的生活变得轻松多了。

推荐内容