octave入門教程.doc_第1頁
octave入門教程.doc_第2頁
octave入門教程.doc_第3頁
octave入門教程.doc_第4頁
octave入門教程.doc_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

octave入門教程一,簡介1.1 Octave是什么?Octave是一款用于數(shù)值計算和繪圖的開源軟件。和Matlab一樣,Octave 尤其精于矩陣運算:求解聯(lián)立方程組、計算矩陣特征值和特征向量等等。1.2 Octave的適用對象Octave和Matlab被工程人員和科研人員廣泛使用來進行各種工業(yè)和學術(shù)上的數(shù)值計算和仿真。例如,NASA 使用它來開發(fā)飛行器的對接系統(tǒng);Jaguar Racing使用它來可視化和分析從 F1 賽車傳來的數(shù) 據(jù);Sheffield大學用它來開發(fā)用于識別癌細胞的軟件。Octave這樣的軟件讓編寫數(shù)值處理程序變得簡單,并提供數(shù)據(jù)可視化的多種方式。1.3 Octave的下載與安裝參照網(wǎng)上相關(guān)教程;二,簡單計算2.1 Octave最簡單的使用方式就是像使用一個計算器一樣在命令提示符下輸入相應(yīng)的計算式。Octave能識別通常的計算表達式。例如,在終端輸入octave:#2+2并按回車鍵, 你將得到以下的結(jié)果ans=4各種計算符號的優(yōu)先級與常規(guī)的一致,比如括號有最大優(yōu)先級,其次為乘方,其次為乘除運算,最后為加減運算2.2 內(nèi)建函數(shù)Octave中有很多內(nèi)建函數(shù),可以通過輸入函數(shù)名和括號中的輸入?yún)?shù)來調(diào)用函數(shù),例如:octave:# exp(1)ans=2.71813又如另一個更長的表達式:計算 1.2 sin(40+ ln(2.42), 輸入octave:#1.2*sin(40*pi/180+log(2.42)ans=0.76618其中基本的數(shù)學函數(shù)有:sin, cos, tan, log, exp, abs, floor, ceil等;如果你要退出Octave,只需要在命令提示符下輸入quit或者exit即可。三,Octave變量3.1 變量同C+,Java等變成語言一樣我們可以定義變量,但Octave 為解釋性語言。因此Octave中變量的類型是不用聲明的,但Octave中變量名是區(qū)分大小的,即變量a和變量A是不同的變量。octave:# deg=pi/180deg=0.017453如果你需要從當前的變量空間中刪除某個變量,clear命令能移出所有的變量,或者移出某個特定變量, 如:clear name 將移出名為 name 的某個變量。3.2 載入和保存數(shù)據(jù)當你退出Octave的時候,你將丟失你所創(chuàng)建的變量。如果你需要在工作的中途退出Octave,那么你可以保存當前會話的數(shù)據(jù)并在之后重新載入它。如果你輸入octave:# save anyname這將整個工作空間上的變量存儲到當前目錄下一個名為anyname.mat 的文件中 (注意.mat是Octave自動添加的)。這樣你可以退出Octave,之后重新啟動Octave程序,通過輸入octave:# loadanyname將重新載入之前保存的命名空間,并從你中斷的地方重新開始工作。同樣的,你可以載入或者保存特定的變量。格式為octave:#save filename var1 var2 .例如,如果你想存儲deg變量,那么你可以輸入octave:# save degconv deg這樣將deg變量存儲于名為degconv.mat的文件中,你可以通過以下命令重新載入變量octave:# loaddegconvOctave同樣能從文件中導入數(shù)據(jù),這樣的功能在你使用其他的數(shù)據(jù)來源進行畫圖或者計算的時候變得非常有用。例如:X=load(featureX.txt);3.3 獲得幫助如果你不清楚某個命令或者函數(shù)的用法,可也用help命令來獲得其詳細的用法。help commandname例如:help plot3.4 分號和隱藏結(jié)果分號在通常的編程語言中被用來表示程序塊或者單個語句的結(jié)束。在 Octave 中分號不是必需的,但它也有一個特殊的功能。我們目前的例子中,我們只要輸入一個 Octave 命令并不以分號結(jié)尾的話,Octave 總 會將語句執(zhí)行的結(jié)果隨即顯示出來。但是,如果我們在一行語句的末尾添上分號,Octave將不會顯出相應(yīng)的 結(jié)果。四 數(shù)組和向量及矩陣前面介紹過Octave的優(yōu)勢就是可以很方便的進行矩陣的相關(guān)計算。4.1 構(gòu)造向量構(gòu)造矩陣或者向量的方法有很多。其中最直接簡單的方法就是在一個方括號 中給出其元素,例如octave:# a=1 4 5a=1 4 5octave:# b=2,1,0b=2 1 0octave:# c=4;7;10c=4710在方括號中由空格或者逗號隔開的一組數(shù)據(jù)被定義為行向量; 而由分號或者回車隔開的一組數(shù)據(jù)被定義為列向量。你可以通過已經(jīng)定義的向量來定義新的向量,例如octave:# a=1 4 5a=1 4 5octave:# d=a 6d=1 4 5 64.2 冒號表達式利用冒號能夠非常方便的創(chuàng)建一些特殊的向量octave:# e=2:6e=2 3 4 5 6冒號表達式的規(guī)則是告訴octave創(chuàng)建一個以第一個數(shù)字開始并以一遞增至第二個數(shù)的向量。在第一和第 二個數(shù)之間可以插入第三個參數(shù)來聲明向量中元素之間的遞增量,形如 a : b : c。4.3 向量構(gòu)造函數(shù)zeros(M,N) 創(chuàng)建一個MXN的全零矩陣ones(M,N) 創(chuàng)建一個MXN的全一矩陣linspace(x1,x2,N) 創(chuàng)建一個N個元素的向量,均勻分布于x1和下x2eye(M) 創(chuàng)建一個MXM的單位矩陣rand(M,N) 創(chuàng)建一個MXN的矩陣,元素為隨機值4.4 向量中的元素操作向量中的元素通過括號(),而第一個元素的編號為1, 而不是像C或者 C+那樣從0開始。例如octave:#a=1:2:6 -1 0a=1 3 5 -1 0我們可以通過以下命令訪問到該向量的第三個元素octave:# a(3)ans=5冒號的表示法同樣可以用于聲明向量中的元素的范圍octave:#a(3:5)ans=5 -1 0octave:#a(1:2:5)ans= 1 5 04.5 向量的計算將一組數(shù)據(jù)存入一個向量之后能夠使用很多的Octave函數(shù)來進行計算。在C+中如果你想進行相同的計算,例如每個元素乘以2, 你需要使用for循環(huán)來對每個元素操作。在Octave中雖然也可以使用for循環(huán)來實現(xiàn),但是Octave本身由有簡單的向量操作方式。向量中每個都乘以一個數(shù)可以通過對該向量乘以一個數(shù)來實現(xiàn)。以之前定義的 a 向量為例:octave:1 a=1:2:6 -1 0a= 1 3 5 -1 0octave:2 a*2ans=2 6 10 -2 0對向量中所有元素都除以一個數(shù)的操作與乘法類似。使用+算符,你同樣可以對該向量中的每個元素都加上或者減去一個數(shù)值。兩個向量的相乘遵循矩陣的乘法法則,向量乘法并不是對應(yīng)元素的相乘。如果要進行對應(yīng)元素的乘除法,你可以使用.* 以及./ 算符注意每個算符前的.表示為一個元素對元素的計算。例如:octave:3 b=1:5b= 1 2 3 4 5octave:4 a.*bans=1 6 15 -4 0逐個元素的乘方計算同樣也很有用。該計算的算符為,例如octave:5 b.2ans =1 4 9 16 25octave:6 2.bans =2 4 8 16 32octave:7 a.bans = 1 9 125 1 0只要兩個向量又相同的大小和形狀,它們就可以進行元素之間的(element-by-element) 加減乘除和乘方運算。4.6 函數(shù)操作向量前面講到過的函數(shù)也是可以適用于向量。例如:exp, log,abs等octave:#abs(-1 2 -3)ans=1 2 3此外max, length,size, sum, mean, std, floor, ceil等函數(shù)也許要掌握,可以通過help命令獲得詳細用法。4.7 矩陣的轉(zhuǎn)置一個向量的轉(zhuǎn)置將其由行向量轉(zhuǎn)為列向量或者由列向量轉(zhuǎn)換為行向量。矩陣的轉(zhuǎn)置將其行和列交換。在數(shù)學上,矩陣A的轉(zhuǎn)置表示為AT 在octave中轉(zhuǎn)置操作用上引號實現(xiàn):octave:6 A=5 7 9;-1 3 -2A= 5 7 9-1 3 - 2octave:7 Aans =5 -17 39 -2此外inv求矩陣的逆,det求矩陣的特征值,trace求矩陣的跡。五 畫圖Octave通過調(diào)用另一個開源軟件 GNUPLOT來實現(xiàn)非常豐富的畫圖功能。最基本的畫圖命令是 plot(x,y), 其中 x,y 分別為橫軸和縱軸數(shù)據(jù)??梢赃M行相應(yīng)地顏色和樣式的選擇如:ro代表們紅色圓圈,b.代表藍色點點等;可以通過title,xlabel,ylabel添加標題以及x,y軸名稱;legend命令為該圖片添加相應(yīng)的圖例。5.1 如果你想保存當前的圖片內(nèi)容并將新創(chuàng)建的圖片層疊到原圖片上,你可以通過使用 hold on命令來實現(xiàn)。使用該命令,我們可以實現(xiàn)在同一幅圖上呈現(xiàn)由兩個plot 命令繪制的線條。octave:# x=linspace(-10,10);octave:# plot(x,sin(x),r-);octave:# hold onoctave:# plot(x,sin(x)./x,b*)octave:#title(Figure)octave:#xlabel(X)octave:#ylabel(Y)octave:#legend(sin(x),sin(x)/x)5.2 subplot(2,3,2)表示在一個格子中畫圖。因此該條語句的意思是分成一個2X3的格子,并在第2個格子里畫圖;其中子格的順序為從左到右從上到下遞增,即1 23 45 6例如:octave:# x=linspace(-10,10);octave:# subplot(2,1,1)octave:# plot(x,sin(x);octave:# subplot(2,1,2)octave:# plot(x,sin(x)./x)5.3 多幅圖片可以用figure命令來實現(xiàn).5.4 繪制曲面octave:# x=2:0.2:4;octave:#y=1:0.2:3;octave:#X,Y=meshgrid(x,y);% make the gridoctave:# Z=(X-3).2-(Y-2).2;octave:# subplot(2,2,1);surf(Z);title(surf)octave:# subplot(2,2,2);mesh(Z);title(mesh)octave:# subplot(2,2,3);meshz(Z);title(meshz)octave:# subplot(2,2,4);contour(Z);title(contour)六 Octave腳本如果你有一些重復(fù)輸入的命令的,你可以將這一系列的命令存入一個Octave 腳本之中。這種包含 Octave 命令的文本文件是 Octave 程序的基本形式。當你在 Octave 中執(zhí)行這樣的腳本的時候,其效果與將這些命令一行行輸入 Octave 中的效果是一樣的。而且當你對一系列要輸入 Octave 的命令不是很拿的準的時候,在一個腳本中修改這些命令會比在 Octave 終端中重新調(diào)出及修改命令要簡單方便許多。Octave的腳本是普通的文本文件,但是他們需要有一個.m 的后綴 (e.g.run.m)。因此,它們通常也被稱為M文件。除去后綴的文件名部分是你在執(zhí)行該命令時需要向 Octave 終端輸入的部分。你可以在任何的文本編輯器 (如,emacs, vi,notepad) 中創(chuàng)建并編輯一個腳本文件。在Octave中可以通過以下命令octave:# edit在新窗口中調(diào)出文本編輯器emacs。如果你想編輯一個已存在的腳本,你可以在edit命令后加上腳本的名字。例如,比如你有個名為 run.m的腳本,輸入edit run 將調(diào)出編輯器并打開該文件供你編輯。然后在 Octave中輸入 run執(zhí)行腳本:octave:# runOctave將運行該腳本中的命令并得到相應(yīng)的結(jié)果。七 控制語句到目前為止我們所看到的程序或者表達式都是一些簡單的順序執(zhí)行的操作。向量和矩陣的使用能夠讓Octave執(zhí)行更加高級的計算,但是要實現(xiàn)更加復(fù)雜的功能,我們還需要一些標準的程序語言。Octave提供了通常的循環(huán)和選擇語句。其語法類似于我們熟知的C,C+,Java等編程語言。在這里僅僅舉一個例子:octave:# x=1;octave:# while 1+x1x=x/2;endoctave:#xx=1.1102e-16八 Octave函數(shù)Octave中的腳本能實現(xiàn)一些簡單的程序,但是比腳本更加強大的是用戶自定義函數(shù)。自定義函數(shù)能夠讓你在命令行、其他函數(shù)中和腳本中調(diào)用。在Octave函數(shù)中參數(shù)是通過值傳遞的而不是通過reference傳遞并能返回多個返回值。Octave函數(shù)如同腳本一樣,是寫入一個純文本文件中的,不同的是函數(shù)文件的第一行遵循如下的格式functionoutput1,output2,.=name(input1,input2,.)每個函數(shù)都卸載了不同的M文件中,而且該M文件名不須與函數(shù)名一致。例如名為sind()的函數(shù)必需被定義在名為sind.m的M文件中。每個函數(shù)接受一定的參數(shù)輸入并輸出一定的數(shù)值。當你需要重復(fù)性的執(zhí)行一定表達式

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論