Octave学习笔记
最近在学习吴恩达老师的机器学习课程,课程中编程实践使用的Octave语言,谨以此文来记录学习过程,如有问题,欢迎指正,欢迎一起交流学习.
1.基本的算数运算
>> 2 + 3 ans = 5 >> 4 - 8 ans = -4 >> 2 * 4 ans = 8 >> 5 / 2 ans = 2.5000
>> A = [1,1;3,4]
A =
1 1
3 4
>> A > 1
ans =
0 0
1 1
2.基本的逻辑运算
>> 2 == 3 ans = 0 >> 2 ~= 3 ans = 1 >> 2 || 3 ans = 1 >> 0 && 2 ans = 0 >> 3 >= 4 ans = 0 >> 3 < 5 ans = 1
3.向量的基本表示以及取指定的元素
%1.行向量(空格或者逗号,分割) >> v = [1 2 3] v = 1 2 3 >> v = [1,2,3] v = 1 2 3 %行向量取指定列 >> v(2) ans = 2 >> v(4) error: v(4): out of bound 3 >> v(0) error: v(0): subscripts must be either integers 1 to (2^63)-1 or logicals %2.列向量(分号分割) >> v = [1;2;3] v = 1 2 3 %列向量取指定行 >> v(2) ans = 2 >> v(0) error: v(0): subscripts must be either integers 1 to (2^63)-1 or logicals >> v(4) error: v(4): out of bound 3
4.矩阵的表示
- 与向量一样,空格或逗号分割列,分号分割行
- 冒号:a:c 表示 从a到c, 步长(间隔)为1; 等价于a:>> A(2, 2)
- a:b:c 表示 从a到c, 步长(间隔)为b
>> A = [1,2;3,4] A = 1 2 3 4 >> A = [1 3; 4 5] A = 1 3 4 5 >> A = [1:2;4:6] error: vertical dimensions mismatch (1x2 vs 1x3) >> A = [1:3;4:6] %等价于 A = [1:1:3;4:1:6] A = 1 2 3 4 5 6 >> A = [1:1:3;4:1:6] A = 1 2 3 4 5 6 >> A = [1:3:7;5:2:9] A = 1 4 7 5 7 9
>> A(2, 2)
ans = 7 >> A(1,:) ans = 1 4 7 >> A(:,1) ans = 1 5 >> A(:, [1, 3]) ans = 1 7 5 9 >> A([1,2],:) ans = 1 4 7 5 7 9 >> A(:,:) ans = 1 4 7 5 7 9
5.矩阵的运算
% C = [A B],把B按列加到A上,生成C (此时 A和B的行数必须相同)
% C = [A; B],把B按行加到A上,生成C (此时 A和B的列数必须相同)
>> A = [1]
A = 1
>> A = [A,2]
A =
1 2
>> A = [A ; 3]
error: vertical dimensions mismatch (1x2 vs 1x1)
>> A = [A ; [3,4]]
A =
1 2
3 4
>> A = [A , [ 5 ; 6 ]]
A =
1 2 5
3 4 6
>> B = [7,8,9]
B =
7 8 9
>> [A ; B ]
ans =
1 2 5
3 4 6
7 8 9
% 将矩阵的所有数据放到一个向量中
>> A
A =
1 2 5
3 4 6
>> A(:)
ans =
1
3
2
4
5
6
>> A(:)'
ans =
1 3 2 4 5 6
>> A
A =
1 2 5
3 4 6
% 赋值:
>> A
A =
1 2 5
3 4 6
>> A(1,2) = 3
A =
1 3 5
3 4 6
>> A(1,:) = [0,0,0]
A =
0 0 0
3 4 6
>> A(2:3,1:2) = [1,1;1,1] % A本来没有第三行,追加了第三行,其余位置用0补上
A =
0 0 0
1 1 6
1 1 0
% 矩阵的加减乘除法:
>> A = [1 1;2,2]
A =
1 1
2 2
>> B = [3,3;4 4]
B =
3 3
4 4
>> A + B
ans =
4 4
6 6
>> A - B
ans =
-2 -2
-2 -2
>> A - 2
ans =
-1 -1
0 0
>> A * B
ans =
4 6
8 12
>> -A % 相当于 -1 * A
ans =
-1 -1
-2 -2
>> A / 2
ans =
0.50000 0.50000
1.00000 1.00000
>> B / A % Xa=b,X=b/a(代表b乘以a的逆)
warning: matrix singular to machine precision
ans =
0.30000 0.60000
0.70000 1.40000
>> B \ A % aX=b,求出X。那么X=a\b(代表a的逆乘以b);
ans =
2.4672e-17 2.4672e-17
5.0000e-01 5.0000e-01
% 点运算 (点乘 .*,点除./)
% 维度相同:对应元素相乘
% 行维度相同:每行对应元素相乘
% 列维度相同:每列对应元素相乘
% A .* B = B .* A
% 乘 *;除 /; 平方 ^;等
>> A
A =
1 1
2 2
>> B
B =
1 2
3 4
>> A .* B
ans =
1 2
6 8
>> A ./ B
ans =
1.00000 0.50000
0.66667 0.50000
6.常用的特殊矩阵
% 1.单位矩阵 % eye(N) 生成一个N行N列的单位矩阵。 % eye(M,N) 生成一个M行N列的"单位"矩阵,主对角线元素为1,其余元素为0。 % ~eye(N) 生成一个N行N列的对角线为0,其余位置均为1 的矩阵
>> eye(3) ans = Diagonal Matrix 1 0 0 0 1 0 0 0 1 >> eye(2,3) ans = Diagonal Matrix 1 0 0 0 1 0 >> ~eye(3) ans = 0 1 1 1 0 1 1 1 0 % 2.转置矩阵 >> A A = 1 4 7 5 7 9 >> A' ans = 1 5 4 7 7 9 % 3.逆矩阵 >> A A = 1 4 7 5 7 9 >> pinv(A) ans = -0.320513 0.230769 -0.051282 0.076923 0.217949 -0.076923 >> pinv(A) * A ans = 0.83333 0.33333 -0.16667 0.33333 0.33333 0.33333 -0.16667 0.33333 0.83333 % 4.全1矩阵: >> ones(3,2) ans = 1 1 1 1 1 1 % 5.全0矩阵 >> 0 * ones(2,3) ans = 0 0 0 0 0 0 >> zeros(2,3) ans = 0 0 0 0 0 0 % 6.随机矩阵 0~1的随机数 >> rand(1,3) ans = 0.57432 0.81374 0.92313 % 7.高斯分布矩阵: >> randn(2,3) ans = -0.057398 -0.526665 0.918251 -0.218253 0.984849 0.628937 >> randn(1,3) ans = -1.21260 1.06785 -0.71408 % 8.魔方矩阵: % magic是一种函数,用于产生魔方矩阵,它的每行、列以及对角线的数之和相等。n行n列的方阵,该和的值为1+2+3+.....+n^2的和再除以n,n必须为大于或等于3的整数。 ans = 8 1 6 3 5 7 4 9 2 >> magic(4) ans = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1
7.控制语句(未完待续)

浙公网安备 33010602011771号