初始化技巧
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
网友评论