美文网首页
Octave常用技巧

Octave常用技巧

作者: geekpy | 来源:发表于2018-04-30 18:41 被阅读21次

    初始化技巧

    octave:28> zeros(3) # 初始化一个3x3方阵
    ans =
    
       0   0   0
       0   0   0
       0   0   0
    
    octave:29> zeros(3,4) # 初始化一个3x4 matrix
    ans =
    
       0   0   0   0
       0   0   0   0
       0   0   0   0
    
    octave:30> zeros(3, 1) # 初始化一个3维的vector
    ans =
    
       0
       0
       0
    
    octave:31> rand(2, 3) # 初始化一个随机数的2x3 matrix
    ans =
    
       0.95362   0.17699   0.34522
       0.81294   0.26008   0.38269
    

    赋值技巧

    octave:34> x
    x =
    
       0.00000   0.52007   0.60424
       0.28051   0.10614   0.11762
    
    octave:35> x(1, 2) = 5 # 将第1行第2列的数值赋值为5
    x =
    
       0.00000   5.00000   0.60424
       0.28051   0.10614   0.11762
    
    octave:36> x(:, 3) = 3 # 将第三列的值全部赋值为3
    x =
    
       0.00000   5.00000   3.00000
       0.28051   0.10614   3.00000
    
    octave:37> x(1) # 如果只有一个参数,那么这个参数就是一个总的index
    ans = 0
    octave:38> x(2)
    ans =  0.28051
    octave:39> x(3)
    ans =  5
    

    公式计算技巧

    vector中的所有数值相加

    octave:13> vec = [1; 3; 2];
    octave:14> sum(vec)
    ans =  6
    

    matrix中所有数值相加

    octave:15> mat = [1, 2, 3; 4, 5, 6; 7, 8, 9];
    octave:16> mat
    mat =
    
       1   2   3
       4   5   6
       7   8   9
    
    # 注意如果直接使用sum,则只能得到每列的相加的和
    octave:17> sum(mat)
    ans =
    
       12   15   18
    
    # 要计算所有的值的和,需要unroll成一个vector再计算
    octave:18> sum(mat(:))
    ans =  45
    
    # sum的第二个参数是指明DIM(Dimension), 1是按列计算,2是按行计算
    octave:26> sum(mat, 1) # 等价于sum(mat)
    ans =
    
       12   15   18
    
    octave:27> sum(mat, 2) # 按行相加
    ans =
    
        6
       15
       24
    
    

    这个技巧由于可以将矩阵中的数值相加求和,所以在机器学习中计算cost Function和正则项的时候非常有用。

    求解最大值

    octave:45> mat
    mat =
    
       1   2   3
       4   5   6
       7   8   9
    
    octave:41> max(mat)  # 默认返回每列的最大值
    ans =
    
       7   8   9
    
    octave:46> max(mat, [], 2) # 第三个参数设置DIM,当为2时返回每行的最大值
    ans =
    
       3
       6
       9
    octave:48> [value, index] = max(mat, [], 2) # 当有两个返回值的时候(注意必须在中括号中),第二个返回值是最大值的位置索引
    value =
    
       3
       6
       9
    
    index =
    
       3
       3
       3
    octave:50> max(max(mat)) # 取matrix中所有元素的最大值
    ans =  9
    

    计算多项式

    针对类似下面的公式我们可以用vector相乘来进行计算

    多项式
    # 如何有theta vector和x vector,我们就可以通过vectory相乘来计算上述公式
    theta = [theta1; ... ; thetam];
    x = [x1; ...; xm];
    y = theta'*x; 
    

    注意这里是(theta)T

    相关文章

      网友评论

          本文标题:Octave常用技巧

          本文链接:https://www.haomeiwen.com/subject/ewqtrftx.html