日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

Octave入门基础

發(fā)布時(shí)間:2023/12/31 综合教程 28 生活家
生活随笔 收集整理的這篇文章主要介紹了 Octave入门基础 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Octave入門基礎(chǔ)

一。簡(jiǎn)單介紹

1.1 Octave是什么?

Octave是一款用于數(shù)值計(jì)算和畫圖的開源軟件。和Matlab一樣,Octave 尤其精于矩陣運(yùn)算:求解聯(lián)立方程組、計(jì)算矩陣特征值和特征向量等等。

1.2 Octave的適用對(duì)象

Octave和Matlab被project人員和科研人員廣泛使用來(lái)進(jìn)行各種工業(yè)和學(xué)術(shù)上的數(shù)值計(jì)算和仿真。

比如,NASA 使用它來(lái)開發(fā)飛行器的對(duì)接系統(tǒng);Jaguar Racing使用它來(lái)可視化和分析從 F1 賽車傳來(lái)的數(shù) 據(jù);Sheffield大學(xué)用它來(lái)開發(fā)用于識(shí)別癌細(xì)胞的軟件。

Octave這種軟件讓編寫數(shù)值處理程序變得簡(jiǎn)單,并提供數(shù)據(jù)可視化的多種方式。

1.3 Octave的下載與安裝

參照網(wǎng)上相關(guān)教程;


二,簡(jiǎn)單計(jì)算

2.1 Octave最簡(jiǎn)單的使用方式就是像使用一個(gè)計(jì)算器一樣在命令提示符下輸入對(duì)應(yīng)的計(jì)算式。

Octave能識(shí)別通常的計(jì)算表達(dá)式。

比如,在終端輸入

octave:##>2+2

并按回車鍵, 你將得到下面的結(jié)果ans=4

各種計(jì)算符號(hào)的優(yōu)先級(jí)與常規(guī)的一致,比方括號(hào)有最大優(yōu)先級(jí),其次為乘方,其次為乘除運(yùn)算,最后為加減運(yùn)算

2.2 內(nèi)建函數(shù)

Octave中有非常多內(nèi)建函數(shù)。能夠通過(guò)輸入函數(shù)名和括號(hào)里的輸入?yún)?shù)來(lái)調(diào)用函數(shù),比如:

octave:##> exp(1)

ans=2.71813

又如還有一個(gè)更長(zhǎng)的表達(dá)式:計(jì)算 1.2 sin(40?+ ln(2.42)), 輸入octave:##>1.2*sin(40*pi/180+log(2.4^2))

ans=0.76618

當(dāng)中主要的數(shù)學(xué)函數(shù)有:sin, cos, tan, log, exp, abs, floor, ceil等。

假設(shè)你要退出Octave,僅僅須要在命令提示符下輸入quit或者exit就可以。


三。Octave變量

3.1 變量

同C++。Java等變成語(yǔ)言一樣我們能夠定義變量,但Octave 為解釋性語(yǔ)言。

因此Octave中變量的類型是不用聲明的,但Octave中變量名是區(qū)分大小的,即變量a和變量A是不同的變量。

octave:##> deg=pi/180

deg=0.017453

假設(shè)你須要從當(dāng)前的變量空間中刪除某個(gè)變量,clear命令能移出全部的變量,或者移出某個(gè)特定變量, 如:

clear name?將移出名為 name 的某個(gè)變量。

3.2 加載和保存數(shù)據(jù)

當(dāng)你退出Octave的時(shí)候,你將丟失你所創(chuàng)建的變量。假設(shè)你須要在工作的中途退出Octave,那么你能夠保存當(dāng)前會(huì)話的數(shù)據(jù)并在之后又一次加載它。假設(shè)你輸入

octave:##> save anyname?

這將整個(gè)工作空間上的變量存儲(chǔ)到當(dāng)前文件夾下一個(gè)名為anyname.mat 的文件里 (注意.mat是Octave自己主動(dòng)加入的)。這樣你能夠退出Octave,之后又一次啟動(dòng)Octave程序,通過(guò)輸入

octave:##> loadanyname

將又一次加載之前保存的命名空間,并從你中斷的地方又一次開始工作。

相同的,你能夠加載或者保存特定的變量。格式為

octave:##>save filename var1 var2 ...

比如,假設(shè)你想存儲(chǔ)deg變量,那么你能夠輸入

octave:##> save degconv deg?

這樣將deg變量存儲(chǔ)于名為degconv.mat的文件里,你能夠通過(guò)下面命令又一次加載變量

octave:##> loaddegconv

Octave
相同能從文件里導(dǎo)入數(shù)據(jù),這種功能在你使用其它的數(shù)據(jù)來(lái)源進(jìn)行繪圖或者計(jì)算的時(shí)候變得很實(shí)用。

比如:

X=load(‘featureX.txt’);

3.3 獲得幫助

假設(shè)你不清楚某個(gè)命令或者函數(shù)的使用方法,可也用help命令來(lái)獲得其具體的使用方法。

help commandname

比如:help plot

3.4 分號(hào)和隱藏結(jié)果

分號(hào)在通常的編程語(yǔ)言中被用來(lái)表示程序塊或者單個(gè)語(yǔ)句的結(jié)束。在 Octave 中分號(hào)沒(méi)必要的,但它也有一個(gè)特殊的功能。我們眼下的樣例中,我們僅僅要輸入一個(gè) Octave 命令并不以分號(hào)結(jié)尾的話,Octave 總 會(huì)將語(yǔ)句運(yùn)行的結(jié)果隨即顯示出來(lái)。

可是,假設(shè)我們?cè)谝恍姓Z(yǔ)句的末尾添上分號(hào),Octave將不會(huì)顯出對(duì)應(yīng)的 結(jié)果。

四 數(shù)組和向量及矩陣

前面介紹過(guò)Octave的優(yōu)勢(shì)就是能夠非常方便的進(jìn)行矩陣的相關(guān)計(jì)算。

4.1 構(gòu)造向量

構(gòu)造矩陣或者向量的方法有非常多。當(dāng)中最直接簡(jiǎn)單的方法就是在一個(gè)方括號(hào) [] 中給出其元素,比如

octave:##> a=[1 4 5]

a=1 4 5

octave:##> b=[2,1,0]

b=2 1 0

octave:##> c=[4;7;10]

c=4

7

10

在方括號(hào)里由空格或者逗號(hào)隔開的一組數(shù)據(jù)被定義為行向量; 而由分號(hào)或者回車隔開的一組數(shù)據(jù)被定義為列向量。你能夠通過(guò)已經(jīng)定義的向量來(lái)定義新的向量,比如

octave:##> a=[1 4 5]

a=1 4 5

octave:##> d=[a 6]

d=1 4 5 6

4.2 冒號(hào)表達(dá)式

利用冒號(hào)可以很方便的創(chuàng)建一些特殊的向量

octave:##> e=2:6

e=2 3 4 5 6

冒號(hào)表達(dá)式的規(guī)則是告訴octave創(chuàng)建一個(gè)以第一個(gè)數(shù)字開始并以一遞增至第二個(gè)數(shù)的向量。在第一和第 二個(gè)數(shù)之間能夠插入第三個(gè)參數(shù)來(lái)聲明向量中元素之間的遞增量,形如 a : b : c。

4.3 向量構(gòu)造函數(shù)

zeros(M,N) 創(chuàng)建一個(gè)MXN的全零矩陣

ones(M,N) 創(chuàng)建一個(gè)MXN的全一矩陣

linspace(x1,x2,N) 創(chuàng)建一個(gè)N個(gè)元素的向量。均勻分布于x1和下x2

eye(M) 創(chuàng)建一個(gè)MXM的單位矩陣

rand(M,N) 創(chuàng)建一個(gè)MXN的矩陣,元素為隨機(jī)值

4.4 向量中的元素操作

向量中的元素通過(guò)括號(hào)(),而第一個(gè)元素的編號(hào)為1, 而不是像C或者 C++那樣從0開始。比如

octave:##>a=[1:2:6 -1 0]

a=1 3 5 -1 0

我們能夠通過(guò)下面命令訪問(wèn)到該向量的第三個(gè)元素

octave:##> a(3)

ans=5

冒號(hào)的表示法相同能夠用于聲明向量中的元素的范圍

octave:##>a(3:5)

ans=5 -1 0

octave:##>a(1:2:5)

ans= 1 5 0

4.5 向量的計(jì)算

將一組數(shù)據(jù)存入一個(gè)向量之后可以使用非常多的Octave函數(shù)來(lái)進(jìn)行計(jì)算。

在C++中假設(shè)你想進(jìn)行同樣的計(jì)算,比如每一個(gè)元素乘以2, 你須要使用for循環(huán)來(lái)對(duì)每一個(gè)元素操作。

在Octave中盡管也可以使用for循環(huán)來(lái)實(shí)現(xiàn),可是Octave本身由有簡(jiǎn)單的向量操作方式。

向量中每一個(gè)都乘以一個(gè)數(shù)能夠通過(guò)對(duì)該向量乘以一個(gè)數(shù)來(lái)實(shí)現(xiàn)。

以之前定義的 a 向量為例:

octave:1> a=[1:2:6 -1 0]

a=?1 3 5 -1 0

octave:2> a*2

ans=2 6 10 -2 0

對(duì)向量中全部元素都除以一個(gè)數(shù)的操作與乘法類似。

使用+?算符,你相同能夠?qū)υ撓蛄恐械拿恳粋€(gè)元素都加上或者減去一個(gè)數(shù)值。兩個(gè)向量的相乘遵循矩陣的乘法法則,向量乘法并非相應(yīng)元素的相乘。假設(shè)要進(jìn)行相應(yīng)元素的乘除法,你能夠使用.* 以及./ 算符注意每一個(gè)算符前的‘.’表示為一個(gè)元素對(duì)元素的計(jì)算。比如:

octave:3> b=1:5

b= 1 2 3 4 5

octave:4> a.*b

ans=1 6 15 -4 0

逐個(gè)元素的乘方計(jì)算相同也非常實(shí)用。

該計(jì)算的算符為,比如

octave:5> b.^2

ans =1 4 9 16 25

octave:6> 2.^b

ans =2 4 8 16 32

octave:7> a.^b

ans =?1 9 125 1 0

僅僅要兩個(gè)向量又同樣的大小和形狀,它們就能夠進(jìn)行元素之間的(element-by-element) 加減乘除和乘方運(yùn)算。

4.6 函數(shù)操作向量

前面講到過(guò)的函數(shù)也是能夠適用于向量。

比如:exp, log,abs等

octave:##>abs([-1 2 -3])

ans=1 2 3

此外max, length,size, sum, mean, std, floor, ceil等函數(shù)或許要掌握,能夠通過(guò)help命令獲得具體使用方法。

4.7 矩陣的轉(zhuǎn)置

一個(gè)向量的轉(zhuǎn)置將其由行向量轉(zhuǎn)為列向量或者由列向量轉(zhuǎn)換為行向量。

矩陣的轉(zhuǎn)置將其行和列交換。

在數(shù)學(xué)上,矩陣A的轉(zhuǎn)置表示為AT 在octave中轉(zhuǎn)置操作用上引號(hào)實(shí)現(xiàn):

octave:6> A=[5 7 9;-1 3 -2]

A= 5 7 9

-1 3 - 2

octave:7> A'

ans =5 -1

7 3

9 -2

此外inv求矩陣的逆,det求矩陣的特征值。trace求矩陣的跡。

五 繪圖

Octave通過(guò)調(diào)用還有一個(gè)開源軟件 GNUPLOT來(lái)實(shí)現(xiàn)很豐富的繪圖功能。最主要的繪圖命令是 plot(x,y), 當(dāng)中 x,y 分別為橫軸和縱軸數(shù)據(jù)。

能夠進(jìn)行對(duì)應(yīng)地顏色和樣式的選擇如:’ro’代表們紅色圓圈,’b.’代表藍(lán)色點(diǎn)點(diǎn)等;能夠通過(guò)title,xlabel。ylabel加入標(biāo)題以及x,y軸名稱。legend命令為該圖片加入對(duì)應(yīng)的圖例。

5.1 假設(shè)你想保存當(dāng)前的圖片內(nèi)容并將新創(chuàng)建的圖片層疊到原圖片上,你能夠通過(guò)使用 hold on命令來(lái)實(shí)現(xiàn)。使用該命令,我們能夠?qū)嵢缃裢环鶊D上呈現(xiàn)由兩個(gè)plot 命令繪制的線條。

octave:##> x=linspace(-10,10);

octave:##> plot(x,sin(x),’r-’);

octave:##> hold on

octave:##> 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)表示在一個(gè)格子中繪圖。因此該條語(yǔ)句的意思是分成一個(gè)2X3的格子,并在第2個(gè)格子里繪圖;當(dāng)中子格的順序?yàn)閺淖蟮接覐纳系较逻f增,即

1 2

3 4

5 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)

<img src="http://img.blog.csdn.net/20141026162026127?

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3N0b3Bjb2Rlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

5.3 多幅圖片能夠用figure命令來(lái)實(shí)現(xiàn).

5.4 繪制曲面

octave:##> x=2:0.2:4;

octave:##>y=1:0.2:3;

octave:##>[X,Y]=meshgrid(x,y);% make the grid

octave:##> 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')

<img src="http://img.blog.csdn.net/20141026162116859?

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3N0b3Bjb2Rlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

六 Octave腳本

假設(shè)你有一些反復(fù)輸入的命令的,你能夠?qū)⑦@一系列的命令存入一個(gè)Octave 腳本之中。這種包括 Octave 命令的文本文件是 Octave 程序的基本形式。當(dāng)你在 Octave 中運(yùn)行這種腳本的時(shí)候,其效果與將這些命令一行行輸入 Octave 中的效果是一樣的。

并且當(dāng)你對(duì)一系列要輸入 Octave 的命令不是非常拿的準(zhǔn)的時(shí)候,在一個(gè)腳本中改動(dòng)這些命令會(huì)比在 Octave 終端中又一次調(diào)出及改動(dòng)命令要簡(jiǎn)單方便很多。

Octave的腳本是普通的文本文件,可是他們須要有一個(gè).m 的后綴 (e.g.run.m)。因此,它們通常也被稱為M文件。

除去后綴的文件名稱部分是你在運(yùn)行該命令時(shí)須要向 Octave 終端輸入的部分。

你能夠在不論什么的文本編輯器 (如,emacs, vi,notepad) 中創(chuàng)建并編輯一個(gè)腳本文件。

在Octave中能夠通過(guò)下面命令

octave:##> edit

在新窗體中調(diào)出文本編輯器emacs。假設(shè)你想編輯一個(gè)已存在的腳本,你能夠在edit命令后加上腳本的名字。比如,比方你有個(gè)名為 run.m的腳本,輸入edit run 將調(diào)出編輯器并打開該文件供你編輯。

然后在 Octave中輸入 run運(yùn)行腳本:

octave:##> run

Octave將執(zhí)行該腳本中的命令并得到對(duì)應(yīng)的結(jié)果。

七 控制語(yǔ)句

到眼下為止我們所示程序或者表達(dá)式都是一些簡(jiǎn)單的順序運(yùn)行的操作。

向量和矩陣的使用可以讓Octave運(yùn)行更加高級(jí)的計(jì)算,可是要實(shí)現(xiàn)更加復(fù)雜的功能,我們還須要一些標(biāo)準(zhǔn)的程序語(yǔ)言。Octave提供了通常的循環(huán)和選擇語(yǔ)句。其語(yǔ)法類似于我們熟知的C,C++,Java等編程語(yǔ)言。

在這里只舉一個(gè)樣例:

octave:##> x=1;

octave:##> while 1+x>1

x=x/2;

end

octave:##>x

x=

1.1102e-16

八 Octave函數(shù)

Octave中的腳本能實(shí)現(xiàn)一些簡(jiǎn)單的程序,可是比腳本更加強(qiáng)大的是用戶自己定義函數(shù)。自己定義函數(shù)可以讓你在命令行、其它函數(shù)中和腳本中調(diào)用。

在Octave函數(shù)中參數(shù)是通過(guò)值傳遞的而不是通過(guò)reference傳遞并能返回多個(gè)返回值。

Octave函數(shù)如同腳本一樣,是寫入一個(gè)純文本文件里的,不同的是函數(shù)文件的第一行遵循例如以下的格式

function[output1,output2,...]=name(input1,input2,...)

每一個(gè)函數(shù)都卸載了不同的M文件里,并且該M文件名稱不須與函數(shù)名一致。

比如名為sind()的函數(shù)必需被定義在名為sind.m的M文件里。每一個(gè)函數(shù)接受一定的參數(shù)輸入并輸出一定的數(shù)值。

當(dāng)你須要反復(fù)性的運(yùn)行一定表達(dá)式,這表明你須要將這與的操作封裝為一個(gè)函數(shù)。封裝為函數(shù)之后 Octave 將更加易用,添加了代碼的可讀性并能夠供他人使用。

我們能夠創(chuàng)建這么一個(gè)函數(shù),創(chuàng)建一個(gè)名為 sind.m 的 文本文件并包括下面內(nèi)容:

function s=sind(x)

% SIND(x)Calculates sine(x) in degrees

s=sin(x*pi/180);

end

然后就能夠使用該函數(shù)了,比如:

octave:##> sind(0)

ans=0

octave:##> sind(45)

ans= 0.7071

octave:##> t=sind([30 60 90])

t= 0.50000.8660 1.0000

總結(jié)

以上是生活随笔為你收集整理的Octave入门基础的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。