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.控制语句(未完待续)

 

posted @ 2019-08-01 18:28  Zoey12  阅读(587)  评论(0编辑  收藏  举报