Octave入门备忘


最近看机器学习相关教程,接触到了Octave,完全类似于Matlab,区别是Octave是免费的,而且叫轻量级,用起来也很方便。Octave的入门是很简单的,我参考的是《Octave入门教程》:

还有官网: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)

相关内容