Octave常用技巧

初始化技巧

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常用技巧)