Octave 入门教程:矩阵

Octave 入门教程目录,请点击: https://blog.csdn.net/benzhujie1245com/article/details/83146777



  本内容将介绍 Octave 中的矩阵的创建、引用及相关运算。

一、矩阵

1.1 创建矩阵

  在 Octave 中创建矩阵有以下规则:

  • 矩阵元素必须在 [] 内;
  • 矩阵的同行元素之间用空格或逗号(,)分隔;
  • 矩阵的行与行之间用分号(;)分隔;
  • 矩阵的元素可以是数值、变量、表达式或函数;
  • 矩阵的尺寸不必预先定义。

  下面的例子中创建了一个 4x5 的矩阵:

>>a = [1,2,3,4; 2,3,4,5; 3,4,5,6]
a =

   1   2   3   4
   2   3   4   5
   3   4   5   6

>>

  通过复制一个矩阵的元素创建一个新的矩阵:

>> a = [1,2,3,4; 2,3,4,5; 3,4,5,6];
>> b = a([2,3,2,3], :) % 复制矩阵 a 的第 2 和 3 行两次来创建新的矩阵 b
b =

   2   3   4   5
   3   4   5   6
   2   3   4   5
   3   4   5   6

>>

  除了上面的直接输入创建矩阵外,还可以使用***创建特殊数组的函数***创建矩阵,详见请参照这里。

1.2 引用矩阵的元素

方法 描述
a(m, n) 引用矩阵 a 的第 m 行和第 n 列的元素(索引值从 1 开始)
a(m, : ) 引用矩阵 a 的第 m 行的所有元素
a(m1:m2, ) 引用矩阵 a 的第 m1 行到 m2 行的所有元素
a(:, n) 引用矩阵 a 的第 n 列中的所有元素
a(:, n1:n2) 引用矩阵 a 的第 n1 列到 n2 列的所有元素
a(:, : ) 引用矩阵 a 的所有元素

  例如:

>>a = [1,2,3,4; 2,3,4,5; 3,4,5,6];
>>a(3,4)
ans =  6
>>a(2,:)
ans =

   2   3   4   5

>>a(2:3, :)
ans =

   2   3   4   5
   3   4   5   6

>>a(:, 2)
ans =

   2
   3
   4

>>a(:, 2:4)
ans =

   2   3   4
   3   4   5
   4   5   6

>>a(2:3, 2:4)
ans =

   3   4   5
   4   5   6

>>a(:, :)
ans =

   1   2   3   4
   2   3   4   5
   3   4   5   6

>>

1.3 删除矩阵中的行或列

  通过向某行或某列分配一组空的方括号 [] 来删除矩阵的整行或列。
  例如:

>> a = [1,2,3,4; 2,3,4,5; 3,4,5,6]
a =

   1   2   3   4
   2   3   4   5
   3   4   5   6

>> a(2, :) = []  % 删除第 2 行
a =

   1   2   3   4
   3   4   5   6

>> a(:, 3) = []  % 删除第 3 列
a =

   1   2   4
   3   4   6

>>

1.4 矩阵运算

1.4.1 矩阵的加减法

  当两个矩阵进行加减法时,这两个矩阵必须具有相同数量的行和列,并且具有相同的元素。矩阵加减法产生相同类型的矩阵,原始矩阵的每个元素逐一进行加减法。
  例如:

>> a = [1,2,3; 4,5,6; 7,8,9];
>> b = [15, 13, 11; 9,7,5; 3,1,1];
>> c = a + b
c =

   16   15   14
   13   12   11
   10    9   10

>> d = b - a
d =

   14   11    8
    5    2   -1
   -4   -7   -8

>>
1.4.2 矩阵的除法

  Octave 中两种矩阵除法符号,即左除(\)和右除(/)。两个矩阵必须具有相同数量的行和列。

1.4.3 矩阵的标量运算

  当矩阵相加、相减、相乘或相除一个数组时,被称为标量运算。
  标量运算产生一个具有相同数量的行与列的新矩阵,其原始矩阵的每个元素都相加、相减、乘以或除以数字。
  例如:

>> a = [1,2,3; 4,5,6; 7,8,9];
>> b = 2;
>> c = a + b
c =

    3    4    5
    6    7    8
    9   10   11

>> d = a - b
d =

  -1   0   1
   2   3   4
   5   6   7

>> e = a * b
e =

    2    4    6
    8   10   12
   14   16   18

>> f = a / b
f =

   0.50000   1.00000   1.50000
   2.00000   2.50000   3.00000
   3.50000   4.00000   4.50000

>>
1.4.4 矩阵的转置

  矩阵的转置切换矩阵的行和列。在 Octave 中使用单引号(')表示。
  例如:

>> a = [1,2,3; 4,5,6; 7,8,9]
a =

   1   2   3
   4   5   6
   7   8   9

>> b = a'
b =

   1   4   7
   2   5   8
   3   6   9

>>
1.4.5 矩阵连接

  可以连接两个矩阵来创建一个新矩阵。使用中括号([],连接运算符)来实现。
  Octave 允许以下两种类型的连接:

  • 水平连接:使用逗号(,)分隔两个矩阵,它们进行水平附加。
  • 垂直连接:使用分号(;)分隔两个矩阵,它们进行垂直附加。

  例如:

>> a = [10,12,23; 14,8,6]
a =

   10   12   23
   14    8    6

>> b = [12,31,45; 8,0,9]
b =

   12   31   45
    8    0    9

>> c = [a, b]
c =

   10   12   23   12   31   45
   14    8    6    8    0    9

>> d = [a; b]
d =

   10   12   23
   14    8    6
   12   31   45
    8    0    9

>>
1.4.6 矩阵乘法

  假设有两个矩阵 A(m*n) 和 B(n*p),则它们相乘可以产生一个 m*p 的新矩阵 C。只有当 A 中的列数 n 等于 B 中的函数 n 时,才能进行矩阵乘法。
  所得的矩阵 C 中的(i,j)位置的元素值的求取步骤:

  • 矩阵 A 的第 i 行元素与矩阵 B 的第 j 行元素逐一相乘得到一个新的向量 d。
  • 然后将得到的向量 d 的所有元素相加得到一个标量 f,标量 f 的值即矩阵 C 中的(i,j)位置的元素值。

  例如:

>> a = [1,2,3; 4,5,6; 7,8,9];
>> b = [3,4; 5,6; 7,8];
>> c = a * b
c =

    34    40
    79    94
   124   148

>>
1.4.7 矩阵的行列式

  在 Octave 中使用 det 函数计算矩阵的行列式。矩阵 A 的行列式由 det() 计算。

1.4.8 逆矩阵

  矩阵 A A A 的逆矩阵记为 A − 1 A^{-1} A1,使得下面的关系成立:
A A − 1 = A − 1 = 1 AA^{-1}=A^{-1}=1 AA1=A1=1
  并不是每个矩阵都有逆矩阵,如果一个矩阵的行列式为零,则不存在逆矩阵,这样的矩阵是奇异的
  在 Octave 中使用 inv 函数求逆矩阵。矩阵 A 的逆矩阵由 inv(A) 计算。

参考:
[1] https://www.w3cschool.cn/matlab/
[2] http://m.yiibai.com/matlab/

你可能感兴趣的:(04_工具使用,#,04.01_Octave,入门教程)