Octave——linux下的科學計算環境
描述:Octave
1.1簡介
====================================================================
GNU Octave是一款與matlab十分兼容的數值計算軟件。它為GNU項目裡的一部分,並遵循GPL發布的一款自由開源軟件。GNU Octave最早於發布於1988年。一開始它主要應用於一個化學反應課程設計之中。直到1992年該項目才真正的由John W.Eaton開展。目前其最新版本為2009年3月發布的3.0.5版。
GNU Octave與matlab一樣,為解釋性編程語言。GNU Octave運用STL庫並由C++編寫而成,並可以通過加載模塊來擴展其功能。GNU Octave通過調用gnuplot來制作圖形、曲線和圖表. Octave語言為如同C語言一樣的結構化編程語言。它支持許多的C標准庫函數、UNIX系統調用函數等。Octave的語法與matlab很相似,優秀的腳本可以在兩個環境下面運行。由於Octave遵循GPL規范,人們可以自由的復制和使用該軟件並能夠根據自己的需要修改相關的源代碼或添加自己的一些工具模塊。該軟件目前能夠廣泛地運用於各種平台:UNIX以及類UNIX平台(如GNU/Linux)以及微軟windows環境等。
目前,GNU Octave能夠完成matlab所支持的大多數功能,如高等數學計算、統計、信號處理、圖形處理、最優化、音頻處理、非線性方程組求解、控制理論等。而相關的代碼可以通過任何一款文本編輯器編輯,比較常用的是vim和emacs等。因而,GNU Octave是linux下數值計算的理想工具。有一定matlab基礎的用戶可以很快的熟悉該科學計算環境。
1.2 個人體會
==================================================================
我這次的畢業設計是一個物理問題的計算機仿真,老師在任務書上寫的是用matlab來編程實現。由於我是一個linux fan, 所以我一直嘗試在linux下面來完成我的工作,因此對幾個數值計算軟件都有所涉及。我折騰了一段時間,有一些使用Octave的體會寫給大家分享一下。
1.2.1為什麼是Octave?
我們知道在linux下面的編程方面的語言是很多的,比如C、java、C++還有比較強大的腳本語言 Shell、Perl、Tcl、Python、Emacs Lisp 等等。但用它們做為科學計算的環境對於我們這種非計算機專業的人來說都過於復雜了(至少對我如此)。就拿C來說吧,C語言的最佳之處是資源效率和接近機器語言,與硬件的距離較近。但C同時有一些缺點,如編程要花大量的時間來進行數據結構和內存的管理,復數、矩陣運算的支持需要自己去找一些可用的庫 (gsl:GNU sciencific library不錯)。
其實說起來,我還是喜歡像matlab這樣的軟件,編程設計比較的簡單明了,雖然它的代碼效率要低很多,但對於我現在的計算量和機器配置來說,這些時間要遠遠小於我們去調試C這樣程序的時間。
Linux下面與matlab這樣的軟件有:
1.matlab
2.scilab
3.Octave
matlab就不說了,它的強大是大家所熟知,有了它幾乎可以上天入地了。matlab有linux的版本(其實是matlab這樣的軟件都是先有 Unix或者linux下的版本,然後在移植到windows平台的,這點我沒有真正的考證過,不過matlab下面居然支持ls 、pwd這樣的linux&Unix命令)。但是我覺得matlab的Unix或者Linux版本的獲取過於麻煩,文件過大,所以我沒有選擇它。
Scilab是由主要有法國人做的一款開源軟件,它與Octav一樣,能夠完成matlib的大部分功能。但是
我在用Scilab的時候,發現了一個讓我很郁悶並沒有解決的問題——路徑的設置問題。這個問題我沒有解決掉,也讓我不得不放棄了它。
Octave能夠很好的克服上述軟件的一些缺點,所以我選擇了Octave 。它是GNU項目裡的一部分,因此它的全稱應該是GNU Octave。這也保證了它的質量。
1.2.2使用Octave的一些具體體會
1.Octave的啟動
只需要在終端(一般為bash)下輸入 Octave即可啟動程序。
2.Octave中獲得幫助
可以通過在 Octave的終端下輸入 doc +函數名來實現。其中單獨的使用 doc將會給你呈現所有的幫助話題。
3. Octave中的函數名稱與matlab完全一致
因此你完全可以無縫的移植到Octave中來。比如:
octave:1> x=1:1:10
x =
1 2 3 4 5 6 7 8 9 10
octave:2>y=sin(x);
octave:3>figure;
octave:4>plot(x,y,'*');
等等。
3. Octave 的同樣的支持腳本和函數文件
他們的功能與matlab的m文件一樣的,後綴也是.m。
4. 與matlab一致,Octave同樣需要注意Path的設置。
所謂PATH是指程序搜索你在終端中輸入的函數名稱的一些路徑。我個人建議自己的一個項目都新定義一個文件夾來放自定義的函數。
這裡我以自己的畢設為例:
我為我的畢設專門新建了一個文件夾:
/home/kasion/mywork/octave/soamodel
那麼在啟動Octave之後,我用了以下的命令來添加該路徑
addpath("/home/kasion/mywork/octave/soamodel");
savepath;
就可以了。然後我在那個文件夾裡放上了自己的函數,都是.m文件。
5.Octave的函數文件與matlab函數文件有以下的不同點:
a. matlab下用%來表示注釋,而在Octve下則是用的#號。
b.matlab 下面的函數文件 一般是這樣的
function Output=Functionname(Input)
.......
而對於Octave,它要多一個endfunction,具體將:
function Output=Functionname(Input)
.......
endfunction
c. matlab下面的 條件語句等是這樣的
if (x>1)
x=x+1;
end
而對於Octave,它有一點點差異
if (x>1)
x=x+1;
endif
同樣的有endfor, endwhile等。雖然Octave的文檔說明了用end也可以,但是用endif更不容易出錯。
免責聲明:本網站內容收集於互聯網,本站不承擔任何由於內容的合法性及健康性所引起的爭議和法律責任。如果侵犯了你的權益,請通知我們,我們會及時刪除相關內容,謝謝合作! 聯系信箱:[email protected]
Copyright © 電驢下載基地 All Rights Reserved