Matlab上成熟的函數庫,進行數值計算和繪圖很方便,在國內的應用也很廣。不過授權也是大問題,所以目前有很多的替代開源實現,在Python上,我目前接觸過Scipy(www.Scipy.org)和Matplotlib(http://matplotlib.sourceforge.net/)2個項目。
" SciPy 是一個基於 Python 的項目,它旨在再現 MATLAB 的所有功能,最佳化其效能並簡化與其它軟體的整合,同時仍保持完全免費以及至少和 MATLAB 一樣便於使用。"
(http://www-128.ibm.com/developerworks/cn/linux/l-oslab/index.html)
Scipy每年都有SciPy Conference,目前的版本還是04年的0.3.2,需要Python2.3 wxPython2.4 Numeric23等支援。Scipy的結構是scipy_core和scipy_lib兩個部分,不過自己編譯比較麻煩,要C和Fortran編譯器。如果你需要比較完整的Matlab功能支援,可以選擇它。建議安裝Enhanced Python (http://www.enthought.com/python/) ,一次安裝,該有的都有了。
“Matplotlib 是一個由 John Hunter 等開發的,用以繪製二維圖形的 Python 模組。它利用了 Python 下的數值計算模組 Numeric 及 Numarray,複製了許多 Matlab 中的函數, 用以協助使用者輕鬆地獲得高品質的二維圖形。Matplotlib 可以繪製多種形式的圖形包括普通的線圖,長條圖,餅圖,散佈圖以及誤差線圖等;可以比較方便的定製圖形的各種屬性比線的類型,顏色,粗細,字型的大小等;它能夠很好地支援一部分 TeX 排版命令,可以比較美觀地顯示圖形中的數學公式。Matplotlib 掌握起來也很容易,由於 Matplotlib 使用的大部分函數都與 Matlab 中對應的函數同名,且各種參數的含義,使用方法也一致,這就使得熟悉 Matlab 的使用者使用起來感到得心應手。對那些不熟悉的 Matlab 的使用者而言,這些函數的意義往往也是一目瞭然的,因此只要花很少的時間就可以掌握。”(http://www-128.ibm.com/developerworks/cn/linux/l-matplotlib/?ca=dwcn-newsletter-linux)
Matplotlib /Pylab,是一個比較輕量級的仿Matlab實現,版本更新也很快,目前最新的是支援Python2.4/2.3的 今年9月發布的0.84,和Python 2.4 wxPython2.6u等新版本的相容都很好 ,數值計算支援Numeric 和 Numarray,個人建議用Numarray,如果是Numeric,目前最好用23,不用24版本。如果你想使用Python 2.4,並且主要是一些2維圖形的開發,Matplotlib就很適合你。
Scipy,Matplotlib,Numeric 和 Numarray,他們一起的組合就成了Python在數值計算繪圖方面的利器,而且值得注意的是,他們都有一些共同的開發人員,比如John Hunter, Jay T Miller等人,所以在相容上很好。目前值得關注的還有一個東西就是numpy(http://sourceforge.net/projects/numpy)上新發布的 scipy_core0.4,個人猜測,這個因該將用於Scipy的新版本和Numarray 的接替,比較scipy0.32的core代碼和scipy_core0.4的代碼,如果修改代碼 ,scipy0.32_lib+scipy_core0.4應該可以用在python2.4上。