Octave入门备忘

来源:互联网 发布:太田宏介数据 编辑:程序博客网 时间:2024/06/06 06:45

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

http://www.baidu.com/s?wd=Octave+%E5%85%A5%E9%97%A8&rsv_bp=0&ch=&tn=baidu&bar=&rsv_spt=3&ie=utf-8&rsv_sug3=2&rsv_sug1=2&rsv_sug4=24&rsv_n=2&inputT=1359

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


原创粉丝点击