MATLAB有什麼突出優勢和劣勢?

只提優勢有失偏頗


優勢要看和誰比吧,某一項有可能和 A 比是優勢,和 B 比就是劣勢了。

不過最近可能最經常拿來和 python 對比,這裡貼一下 Mathworks 官方的和 python 的對比:

https://www.mathworks.com/products/matlab/matlab-vs-python.html

官方對比當然是主要宣傳自己的優勢,這也難免有所偏頗甚至有錯誤,比方說裡邊第一幅圖:

python 的 outer product 是想說明自己不會用呢還是什麼?

除此之外,後邊部分對於 python 使用者來說也有一些槽點,總之可以想像出這個 Mathworks 的官方對比要被批判的體無完膚的樣子了哈哈

————

上邊之所以只提優勢是因為回答時問題只問「有什麼突出的優勢?」,不知為何被編輯了,說是覺得偏頗。。。這不是偏不偏頗的問題吧,就好像問某地有什麼好吃的,一定要問成某地有什麼好吃的和難吃的,才行么。。。有興趣的話完全可以重新發起一個話題只問劣勢或者優劣勢,而且其實類似的話題應該也已經有人問過了。


優勢:

1、科學計算方面工具無比完善,所有的的變數都是矩陣對象,採用矩陣運算而不是循環,速度快。

2、最接近通用語言的科學計算語言,寫個爬蟲、gui非常方便。

3、支持各種語言的擴展python、c、cuda等等

4、語法簡單

5、並行實現超級容易,parfor和gpuarray真的實現了out of box,而且gpu工具箱是把整個cuda打包了。

6、本身就是一個完善的張量運算系統,實現深度學習框架簡單。

7、容易破解(逃

劣勢:

1、工具箱太多,慣的編程水平降低

2、嚴格的說是一個軟體,整個安裝要10~20g,運行核心(類似解釋器)也有幾百m,開發出的程序便攜性差。

3、面向對象是積累

4、循環速度慢


對工科學生和信號處理相關從業人員來說,除了要錢,全是優勢,沒有劣勢………


MATLAB大法好

天滅C++,退C保平安

人在做,天在看,大段循環留禍患

內存泄露電腦滅,跳出遞歸保平安

誠心誠念矩陣好,批量操作平安保

兩行代碼問題解,演算法查錯有保障

眾生都是碼農命,老闆PUSH忘前緣


使用Matlab也有幾年了,就說自己感受最深的兩點。

1、Matlab 內部各種工具箱,完備的幫助文檔,工程技術人員只要了解最基本的語法知識,就可以藉助工具箱內函數實現各類工程問題模型的求解,讓使用者從程序實現中解放出來,更多關注所求解問題本身。

2、方便易用的圖形顯示,畫出各種常見的折線圖,散點圖,餅圖等只需要一行就可以實現,當然如果要對細節調整,還需要進一步對句柄進行操作。

當然,也可以用於複雜三維模型建模、圖形顯示,下面給兩個自己在Matlab做的圖形顯示的例子。

Example 1:葉輪模型及其局部放大

Example 2:二維多塊單流道結構化網格

這個網格細節還要繼續調整,輕噴。


開發很快,算得不快


突出的優勢是矩陣下標第一個就是1,而不是0。因為很多時候循環判斷用小於號還是小於等於號就能差1,還有時看計算這個矩陣第幾個後倒數還有幾個值之類的都會有差1的問題,而Python(以及其他語言)的」從0開始」急劇增加了複雜度,真是很反人類。

突出的劣勢可能就是要花錢。


推薦閱讀:

請問學習網頁製作,需要學習什麼呢?
可不可以跳過彙編,直接學習SWIFT語言?
同時學習多門編程語言是否會降低學習效率?
學習多門編程語言有哪些好處?
為什麼中國大學MOOC網課程結束後就看不了了?

TAG:編程語言 | MATLAB |