歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Octave入門備忘

Octave入門備忘

日期:2017/3/1 9:45:56   编辑:Linux編程

最近看機器學習相關教程,接觸到了Octave,完全類似於Matlab,區別是Octave是免費的,而且叫輕量級,用起來也很方便。Octave的入門是很簡單的,我參考的是《Octave入門教程》:http://www.linuxidc.com/Linux/2014-04/99848.htm

還有官網:http://www.gnu.org/software/octave/

官網手冊:http://www.gnu.org/software/octave/doc/interpreter/index.html

下面記錄一些常用的函數或者雜項。

● 自定義函數,格式是:

function [ret1, ret2 ...]=fname(arg1, arg2 ...)
%
% 函數說明
%
......
endfunction

arg1,arg2為傳入的參數,ret1,ret2為返回值,這些參數都可以是矩陣或者數值。function中一般用不著return語句,因為函數體中可以直接訪問ret1,ret2並進行修改。

● for語句的使用

格式1:

for variable=vector
.......
end

variable為循環變量,vector為需要循環的所有值的數組,例如:


a = [1, 2, 3];

for var = a

格式1:


for variable=start:end
.....
end

start:end其實是Octave中支持的連續列表(如1:10),這種方式是非常常用的,例如從1到10的循環可寫成:


for i=1:10 %或者for i=[1:10]
.....
end

● 有時候需要生成隨機矩陣,Octave中提供了rand函數和randn函數,區別是:

(1)rand:產生均值為0.5、幅度在0~1之間、均勻分布的隨機矩陣
(2)randn:產生均值為0方差為1、幅度在0~1之間、的高斯白噪聲(即正太分布)
(3)normrnd(a,b,c,d):產生均值為a方差為b、幅度在0~1之間、大小為cXd的隨機矩陣

有時候需要整數矩陣,可以使用ceil函數(上取整)、floor函數(下取整)或round函數(四捨五入)將上面得到的0~1之間的矩陣變成整數矩陣,例如要得到5 X 4的分布在0-100之間的隨機矩陣,可以寫成: ceil(100*rand(5,4))。

● 求矩陣的特征值用函數 eig(A),求零空間的基用nulbasis,如下例先求特征值再求特征空間的基,某特征值λ的特征空間的基也就是(A- λ*I)的零空間:

● rref函數求矩陣的簡化階梯型,可以利用其求解線性方程組。例如:

x1 + x2 = 3
2x1 + 3x2 = 8

因此x1 = 1,x2 = 2

● 擴展矩陣函數:repmat,常用格式:repmat(X, m, n)

Copyright © Linux教程網 All Rights Reserved