文自:西班牙 馬德里 盧卡斯·加西亞 Lucas García <數(shù)學(xué)家,機(jī)器學(xué)習(xí)>
My favorite features in MATLAB R2021b/Exploring some of the new features in yet another interesting software release
文章總結(jié)了10個MATLAB R2021b版本推出的新功能,大家一起來看看MATLAB R2021b新功能:
1. 在實時編輯器中導(dǎo)出動畫
使用實時編輯器導(dǎo)出動畫變?nèi)菀住?/p>
可以簡單地通過使用新的導(dǎo)出動畫按鈕,將動畫導(dǎo)出為視頻或gif。
點(diǎn)擊圖片播放從MATLAB導(dǎo)出的動畫
2. 測試類模板
測試代碼是開發(fā)高質(zhì)量軟件不可分割的一部分。
對我來說,測試就像呼吸。
如果你不(充分)測試你的代碼,它最終會消亡。
使用MATLAB中現(xiàn)有的測試框架,您可以編寫單元測試,進(jìn)行性能測試,測試你的應(yīng)用程序,或者使用mock對象替換依賴的部分,從而單獨(dú)測試完整系統(tǒng)中的一個部分。
MATLAB R2021b包括一個TestCase類模板來加速您的測試的創(chuàng)建。你需要在首頁、編輯器或?qū)崟r編輯器標(biāo)簽頁中打開“新建>測試類”:
新測試類
這會打開下面的模板,這樣你就可以更方便地創(chuàng)建測試:
TestCase模板
有趣的是,模板中出現(xiàn)的默認(rèn)測試類會立即失敗,因此您可以開始實現(xiàn)測試和代碼。
此外,它還包括幾個方法塊(TestClassSetup、TestMethodSetup和Test)來開始定制您的測試。
我的同事Heather Gorr博士有一篇精彩的演講,她在演講中涉及了測試驅(qū)動開發(fā)以及其他主題:
Would you trust your model with your life? Research vs. reality in AI
3. 全新的實時任務(wù)Live Tasks
我必須承認(rèn)我不經(jīng)常使用Live Tasks。
然而,每次我這么做,都讓我腦洞大開。這個新版本將Compute by group和Normalize Data實時任務(wù)引入MATLAB,并將Cluster Data實時任務(wù)引入統(tǒng)計和機(jī)器學(xué)習(xí)工具箱。其中,我最喜歡的,可能也是由于用戶體驗,就是Compute by group。對每個組進(jìn)行數(shù)據(jù)分組、統(tǒng)計計算、轉(zhuǎn)換或過濾操作,對于這個實時任務(wù)來說是再簡單不過了。當(dāng)然,它還能自動為您生成MATLAB代碼。
你可以自己看看它是如何運(yùn)作的:(GIF動畫)
按組計算實時任務(wù)
4. 為ROS節(jié)點(diǎn)生成優(yōu)化過的CUDA代碼
在過去,將GPU Coder為深度神經(jīng)網(wǎng)絡(luò)生成的CUDA代碼引入ROS節(jié)點(diǎn)的過程令我深受折磨。
這需要手動地將生成的庫集成到一個手寫的C++ ROS節(jié)點(diǎn)中。
在這個版本的ROS Toolbox中,您現(xiàn)在可以直接從您的Simulink模型中為ROS節(jié)點(diǎn)生成和部署優(yōu)化過的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
我經(jīng)常收到來自MATLAB用戶的反饋,他們想要異步運(yùn)行代碼,這迫使他們使用并行計算工具箱。
通常,MATLAB在運(yùn)行計算時得暫停對其它操作的響應(yīng)。
如果你正在開發(fā)一個應(yīng)用程序,這可能會影響它的交互性。
無需再提,Parallel Computing Toolbox(mathworks.com/products/parallel-computing.html)為廣泛的并行編程范式、GPU計算提供了API,并為集群和HPC(包括Hadoop或Spark這樣的大數(shù)據(jù)框架)提供了API。
雖然訪問并行計算工具箱會有額外的好處(獲得更多的基礎(chǔ)線程),MATLAB用戶現(xiàn)在可以在MATLAB主進(jìn)程中以一個線程的方式運(yùn)行單個任務(wù)。
這就有了異步工作流(使用backgroundPool(mathworks.com/help/matlab/ref/parallel.backgroundpool.html)打開池,然后使用parfeval【mathworks.com/help/matlab/ref/parfeval.html】在后臺運(yùn)行你的函數(shù))。
你可以點(diǎn) 這里【mathworks.com/help/matlab/matlab_prog/use-the-background-to-make-your-apps-more-responsive.html】 查看一個樣例程序,如何利用 backgroundPool 讓你的應(yīng)用程序可以隨時響應(yīng)界面操作。
6. PointNet++
有關(guān)PointNet和PointNet++的文章(1, 2),我已經(jīng)仔細(xì)閱讀過。
mathinking.github.io/blog/en/my-favorite-features-matlab-r2021b/#pointnet
mathinking.github.io/blog/en/my-favorite-features-matlab-r2021b/#pointnetplusplus
有一天我可能會針對這兩篇論文發(fā)篇文章,說明為什么PointNet++是分割點(diǎn)云數(shù)據(jù)的絕佳選擇。
但是現(xiàn)在,您不再需要弄清楚如何在MATLAB中使用深度學(xué)習(xí)自定義框架來創(chuàng)建PointNet++網(wǎng)絡(luò)(就像在R2021a中的情況一樣),
有pointnetplusplusLayers就可以了。mathworks.com/help/lidar/ref/pointnetpluslayers.html
例如,你將能藉此解決航空激光雷達(dá)的點(diǎn)云數(shù)據(jù)的語義分割問題:
使用PointNet++進(jìn)行語義分割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.024137. 一鍵式部署你的機(jī)器學(xué)習(xí)模型到生產(chǎn)環(huán)境
一旦你使用分類學(xué)習(xí)器或回歸學(xué)習(xí)器訓(xùn)練機(jī)器學(xué)習(xí)模型,將它帶到生產(chǎn)只需點(diǎn)擊幾下鼠標(biāo)。
導(dǎo)出模型用于部署
這將為MATLAB Production Server創(chuàng)建一個部署項目,并自動生成所需的MATLAB代碼,以服務(wù)于生產(chǎn)中的模型。
你可以在這里和這里找到分類學(xué)習(xí)器和回歸學(xué)習(xí)器兩個應(yīng)用程序的例子。
8. pyrun 與 pyrunfile(輕松運(yùn)行Python代碼)
自從Python接口的第一個版本在MATLAB R2014b中發(fā)布以來,我一直是一個忠實的粉絲。
這個接口不僅完成了從MATLAB調(diào)用Python的工作,而且我也相信它是一個美麗的實現(xiàn)設(shè)計。
如果你想查看文檔,你當(dāng)然可以這樣做。
然而,我建議你看一個線上的演講視頻,我的同事Heather和Yann討論用例,工作流程,以及使用這兩種語言的技巧 (視頻: youtu.be/MzoFK0_UbOA)
盡管這個接口在我或其他人看來難以置信,但我理解它對于那些只需要運(yùn)行Python代碼片段或腳本的人來說可能并不那么實用。
現(xiàn)在,使用pyrun和pyrunfile,你可以如下從MATLAB調(diào)用Python命令和腳本:
>> pyrun("from __future__ import braces") Python Error: SyntaxError: not a chance (這是CPython中關(guān)于用大括號來控制流的有趣的彩蛋之一。
你可以做一些更有意義的事情來舉例說明你的用例;事
實上,我只是覺得這個很有趣。
9. MATLAB中的Git工作流程
簡單來說,MATLAB Online是您的web瀏覽器中的簡化MATLAB。mathworks.com/products/matlab-online.html
無需下載,不用安裝。
Git集成已經(jīng)成為MATLAB的一部分很長時間了。
從R2021b開始,MATLAB Online也提供了對基本Git工作流的支持:
從Git導(dǎo)入
你現(xiàn)在可以clone, commit, pull, push and fetch files到你的MATLAB Drive:
Clone a Repository
10. 全新的MATLAB Editor
如果你讀到這里,我的首選是MATLAB編輯器的更新。
這對你來說可能不是一個花哨的選擇。
在相當(dāng)長的一段時間里,有相當(dāng)多的編碼特性可以用于Live Scripts(.mlx文件),但不能用于普通代碼(.m文件)。
對于我們這些仍然用普通代碼維護(hù)大量代碼的人來說,這常常伴隨著生產(chǎn)力的下降。
MATLAB 編輯器現(xiàn)在支持您的 MATLAB 代碼(在 .m 文件中)的豐富功能集:
放大和縮小代碼 制表符補(bǔ)全 協(xié)助自動完成語法 填寫函數(shù)調(diào)用時的智能參數(shù)建議 增強(qiáng)調(diào)試 代碼重構(gòu) 代碼塊選擇 書簽 文本大小寫變化 …有了 R2021b,我的生活變得輕松多了。
責(zé)任編輯:Rex_08