matlab代码用python替换_用python替换Matlab
我是一名工程專業的學生,我必須做大量的數值處理,繪圖,模擬等工作。我目前使用的工具是Matlab。 我在大學計算機上使用它來完成大部分任務。 但是,我想知道有哪些可用的免費選項。
我已經做過一些研究,許多人說python在各種情況下都可以替代matlab。 我想知道如何用python做所有這些事情。 我使用的是Mac,如何安裝不同的python軟件包。 那些包是什么? 真的可行嗎? 使用此python設置我可以做什么和不能做什么?
如果您正在尋找IDE,則spyder具有與matlab相同的功能:en.wikipedia.org/wiki/Spyder_(軟件)
Ive read MATLAB和Python之間最客觀的比較之一,其中提到了許多確實有所作為的功能。
在Mac上,最簡單的入門方法是(無特定順序):
有思想的Python發行版,其中包含您可能需要的大多數科學軟件包。免費用于學術/非商業用途。
Macports-最新版本,因此sudo port install py26-numpy py26-scipy py26-matplotlib py26-ipython應該會讓您入門。
Scipy Superpack-安裝所有重要軟件包的svn版本的腳本。
大約2年前,我已經做到了這一點(用Python代替了Matlab),并且沒有回頭。使用Python進行廣播,更直觀的內存模型和Numpy的其他優點使數值工作變得非常愉快。與f2py和cython一起使用,可以很容易地將內部循環放入另一種語言。這是一個很好的起點-PerformancePython和ParallelProgramming是其他令人振奮的頁面。一定要了解Python的"變量是對對象的引用"的語義……在進行了這種調整之后,一切都會順利進行。擊敗matlab的最酷的事情之一是我在8個內核上運行了2條線... p = Pool(8); res = p.map(analysis_function,list_of_data)-MATLAB并行工具箱非常昂貴,我還沒有看到實際上有它們的大學。
您可能還需要安裝開發人員工具。各種模塊確實需要gcc編譯器并進行安裝。
" MATLAB并行工具箱非常昂貴,我什至沒有看到一所真正擁有它們的大學。"實際上,"并行計算工具箱"只是一個標準工具箱,Ive使用的所有大學站點許可證都包含該工具箱。如果您談論的是Distribute Computing Server,那么您絕對正確,因為它很昂貴,但是您不需要它在8個本地內核上運行。
我的立場是正確的-我認為這更昂貴。雖然在英國還沒有看到它。為了讓您對我的前10名> 25,000名學生大學有一個了解,我們有2個優化工具箱許可證!我們有一個新的計算機套件,用于大約10臺計算機的MSc課程-我考慮購買DCS,而總成本是硬件成本的3倍。
哎喲!那很粗糙。 DCS的成本是我為某些小組較大的項目開始學習Python的部分原因。總體而言,很好的答案。 Enthought看起來非常方便(很遺憾,學術人員無法免費使用64位版本)。
EPD的64位版本對學者免費。您只需要給他們您的電子郵件地址即可。
我從事Matlab編程已有15年之久,而使用Python已有10年之久。通常會這樣分解:
如果可以滿足以下條件:
1.您主要使用矩陣和矩陣運算
2.您有錢購買Matlab許可證
3.您在Mathworks支持的平臺上工作
然后,一定要使用Matlab。否則,如果您具有矩陣以外的數據結構,則需要一個開放源代碼選項,該選項可讓您無需擔心許可證即可交付解決方案,并且需要在mathworks不支持的平臺上構建;然后,使用Python。
Matlab語言很笨拙,但用戶界面很漂亮。 Python語言非常好-具有matlab缺少的迭代器,生成器和函數式編程工具;但是,如果您不喜歡(或不能使用)SAGE,則必須選擇一個漂亮的光滑界面。
希望對您有所幫助。
同意一切。如果需要使用非雙重稀疏矩陣(matlab不支持),內存映射文件,內存的低級控制(復制事物等)時,將添加Python。我認為Python的漂亮接口現在已經開始出現,科學堆棧開始趨于穩定-例如,請參閱code.google.com/p/spyderlib-我希望它們在未來幾年內會迅速改善。
使用numpy時,使用python矩陣同樣容易。
用Python替換Matlab時需要考慮三個方面;核心語言功能,IDE和Price。
能力比較
本節概述了每個平臺的所有功能。簡而言之,Matlab可以做的一切,Python還能做的還很多。但是,諸如線性代數和快速原型制作Matlab之類的東西就更干凈了。
Matlab的
Matlab中的所有內容均已捆綁在一起,并且工具箱已無縫集成。它也更加成熟-但不是為通用編程而設計的,這意味著與線性代數無關的任何東西都難以實現。
工具箱:Matlab工具箱非常好,并且python實現常常很難與它們競爭(即使對于諸如優化算法之類的不太專門的東西)。
線性代數:Matlab具有簡潔的線性代數功能,易于閱讀和解釋。
可視化功能:具有非常好的和非常廣泛的可視化功能。
Python
Python將需要大量其他模塊才能使其成為良好的Matlab替代品。
通用編程:Python是一種合適的編程語言,與Matlab相比,它提供了更多的靈活性。
numpy:提供數組和線性代數例程,但是比Matlab語法更笨拙。我已經愛上了廣播功能,但是再也沒有repmat垃圾了。
SciPy:統計,優化和其他有用的數學知識。
MatPlotLib:我認為比Matlab提供更高質量的繪圖。此外,其設計在語法上與Matlab相似,因此應該易于使用。
SymPy:好的符號編程包。
IDE比較
我認為這是缺少python的地方。我只是發現算法開發(尤其是涉及很多線性代數)在Matlab IDE中不那么痛苦。
Matlab的
這是一些Matlab的關鍵功能,如果沒有工程專業的學生,??這些功能將很難實現。請注意,Python IDE確實也具有其中一些功能,但實現起來卻過于草率。
強大的調試功能:可以非限制性地輕松瀏覽功能。 Python還允許進行調試,但在IDE中通常沒有完全實現。
變量資源管理器:MATLAB有一個很好的變量資源管理器,它總是非常適合查看許多受支持的數據類型。一些python IDE努力顯示可能令人討厭的numpy數組。
變量生存期:如果代碼在運行時中斷,則變量仍然存在,這有助于調試。此外,假設持久變量,連續運行不同的腳本會更容易。在Python中,您將必須手動將變量保存在腳本中,以使變量可用于其他腳本。
事件探查器:非常有助于您了解算法瓶頸所在。
命令行可以在命令行上執行單行指令。 Python在所有好的IDE中也完全支持此功能。
GUI繪圖工具:可以從用戶界面快速輕松地繪制結果和變量。大多數Python IDE都面向軟件開發,因此不支持此功能(盡管sypder通過matplotlib的支持有限)。
文檔:所有功能在IDE中都有本機文檔。
Python
有一些新的python IDE正在與MATLAB的一些關鍵優勢競爭。我個人喜歡最近以免費社區版本發布的PyCharm。它具有以下功能,并且從UI角度進行了精心設計。
調試
變量瀏覽器
命令行
文獻資料
價格對比
Python是免費的,并且有一個活躍的支持社區。 Matlab也有一個很好的支持社區,但是免費。
Ive在matlab中發現了與您所說的狀態完全相反的IDE,也許是因為這是從2013年開始的,但是耶穌,即使是最基本的Python IDE(例如Spyder),即使是Matlabs IDE也絕對是恐怖的。實際上,在matlab IDE中進行編程要比使用帶有matlab插件的Visual Studio Code花費更長的時間,因為它的糟糕程度。令人遺憾的是mathworks仍然以與產品一樣多的價格銷售該產品,但甚至沒有為最基本的功能投入自己的IDE。
嘗試Sage-它被設計為Matlab,Mathematica等的開源替代品。它是用Python實現的,可以用Python編寫腳本,但是它還增加了許多特定于數學的功能。 Mac有一個安裝程序,因此您無需下載很多單獨的軟件包。
還有GNU Octave-Mathematica / Matab的另一個開源替代品,它具有自己的編程語言。但是,我還沒有找到有關Mac版本的任何信息(盡管看起來還不是很辛苦)。
也許您喜歡sagemath,它可以將許多現有的開源軟件包的功能組合到一個通用的基于Python的界面中。這是一個特色導覽。
python(x,y)非常強大,但僅適用于Windows或Linux,因此您必須使用Bootcamp或Linux。 Matplotlib是更輕量的數學軟件包,它基本上在Python語言中增加了繪圖功能(最好與IPython一起使用)。
如果sourcefourge上的從matlab到python的轉換mat2py項目起飛,那就太好了。
重復的。
我的感覺是,對于純數值/線性代數計算和可視化來說,Matlab是一個更為一致的開發環境。在我看來,Numpy / Scipy / Matplotlib有點偶然。如果您要構建一個完整的程序(以使系統自動化或在網頁上顯示結果),那么Python的優勢就是首先要成為一種真正的編程語言。但是對于交互式數值處理,我認為Matlab仍然可以勝出。 Python中缺少元素明智的中綴運算符是一個小例子(PEP 225)。對于統計計算,數據探索和可視化,很難擊敗R。
Numpy中數組運算的默認值是按元素排列的...如果您有很多線性代數(對于矩陣類正態*運算符是矩陣乘法),則可以通過使用dot()或矩陣類來輕松克服缺少矩陣乘法的運算符
我同意您可以解決此問題,但是對于一整天都在使用矩陣的人來說,這些解決方法并不像matlab樣式語言所提供的那樣好。尤其是在動態類型語言中,我不知道對象是數組還是矩陣,因此也不知道*的含義。元素和對象明智的運算符也遠不止于矩陣乘法。例如,元素和對象明智的邏輯運算符有不同的用途,而施加列一致性的加法運算符(如Statas mata語言)也很有幫助。
總結
以上是生活随笔為你收集整理的matlab代码用python替换_用python替换Matlab的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: protobuf android 编译,
- 下一篇: 程序员笔试之海康威视2021应用软件开发