ピヨピヨ日記 シンガポール編

シンガポール生活の日記とかいろいろ

Octave の練習3

引き続き行列の計算の練習

次のようなマトリクスを用意。

> A = [1 2; 3 4; 5 6]
A =

   1   2
   3   4
   5   6

> B = [11 12; 13 14; 15 16]
B =

   11   12
   13   14
   15   16

> C = [1 1; 2 2]
C =

   1   1
   2   2

マトリクスA と Cのかけ算はつぎのようになる。3x2 と 2x2 のマトリクスなので、3 x 2 のマトリクスになる。

> A * C
ans =

    5    5
   11   11
   17   17

マトリクスの要素ごとのかけ算はつぎのように行える

> A
A =

   1   2
   3   4
   5   6

> B
B =

   11   12
   13   14
   15   16

> A .* B
ans =

   11   24
   39   56
   75   96

要素ごとのべき乗

> A
A =

   1   2
   3   4
   5   6

> A .^ 2
ans =

    1    4
    9   16
   25   36

要素ごとに徐算

> A
A =

   1   2
   3   4
   5   6

> A ./ 2
ans =

   0.50000   1.00000
   1.50000   2.00000
   2.50000   3.00000

その他いろいろ計算

> A
A =

   1   2
   3   4
   5   6

> log(A)
ans =

   0.00000   0.69315
   1.09861   1.38629
   1.60944   1.79176

> exp(A)
ans =

     2.7183     7.3891
    20.0855    54.5982
   148.4132   403.4288

> abs(A)
ans =

   1   2
   3   4
   5   6

> -A
ans =

  -1  -2
  -3  -4
  -5  -6
> v = [1 2 3]
v =

   1   2   3

> ones(length(v), 1)
ans =

   1
   1
   1

> v + ones(length(v), 1)
ans =

   2   3   4
   2   3   4
   2   3   4

> v + 1
ans =

   2   3   4
> A
A =

   1   2
   3   4
   5   6

> A'
ans =

   1   3   5
   2   4   6

> (A')'
ans =

   1   2
   3   4
   5   6

最大値

> a = [1 15 2 0.5]
a =

    1.00000   15.00000    2.00000    0.50000

> max(a)
ans =  15
> [val, index] = max(a)
val =  15
index =  2

element ごとの数値比較

> a
a =

    1.00000   15.00000    2.00000    0.50000

> a < 3
ans =

   1   0   1   1

element ごとの数値比較。index を返す方法

> a
a =

    1.00000   15.00000    2.00000    0.50000

> find(a < 3)
ans =

   1   3   4

縦、横、ななめ、の数の合計数が同じになるマトリクス。

> A = magic(3)
A =

   8   1   6
   3   5   7
   4   9   2
> A
A =

   8   1   6
   3   5   7
   4   9   2

> [row, col] = find(A >= 7)
row =

   1
   3
   2

col =

   1
   2
   3

> A(1,1)
ans =  8
> A(3,2)
ans =  9
> A(2,3)
ans =  7
> a
a =

    1.00000   15.00000    2.00000    0.50000

> sum(a)
ans =  18.500
> prod(a)
ans =  15
> floor(a)
ans =

    1   15    2    0

> ceil(a)
ans =

    1   15    2    1

列ごとの最大値

> A
A =

   8   1   6
   3   5   7
   4   9   2

> max(A, [], 1)
ans =

   8   9   7

行ごとの最大値

> max(A, [], 2)
ans =

   8
   7
   9

単に max(A)だと、列ごとの最大値と同じになる

> max(A)
ans =

   8   9   7

なので、A に含まれる値全体の最大値を取得したい場合は、次のようにする。

> A
A =

   8   1   6
   3   5   7
   4   9   2

> max(max(A))
ans =  9
> max(A(:))
ans =  9

列ごとの合計値

> A = [1 2; 3 4; 5 6]
A =

   1   2
   3   4
   5   6

> sum(A, 1)
ans =

    9   12

行ごとの合計値

> A
A =

   1   2
   3   4
   5   6

> sum(A, 2)
ans =

    3
    7
   11
> A
A =

   8   1   6
   3   5   7
   4   9   2

> A ^ -1
ans =

   0.147222  -0.144444   0.063889
  -0.061111   0.022222   0.105556
  -0.019444   0.188889  -0.102778

> pinv(A)
ans =

   0.147222  -0.144444   0.063889
  -0.061111   0.022222   0.105556
  -0.019444   0.188889  -0.102778