Octave 入门教程目录,请点击: https://blog.csdn.net/benzhujie1245com/article/details/83146777
本内容将介绍 Octave 中的矩阵的创建、引用及相关运算。
在 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
>>
除了上面的直接输入创建矩阵外,还可以使用***创建特殊数组的函数***创建矩阵,详见请参照这里。
方法 | 描述 |
---|---|
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
>>
通过向某行或某列分配一组空的方括号 []
来删除矩阵的整行或列。
例如:
>> 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
>>
当两个矩阵进行加减法时,这两个矩阵必须具有相同数量的行和列,并且具有相同的元素。矩阵加减法产生相同类型的矩阵,原始矩阵的每个元素逐一进行加减法。
例如:
>> 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
>>
Octave 中两种矩阵除法符号,即左除(\
)和右除(/
)。两个矩阵必须具有相同数量的行和列。
当矩阵相加、相减、相乘或相除一个数组时,被称为标量运算。
标量运算产生一个具有相同数量的行与列的新矩阵,其原始矩阵的每个元素都相加、相减、乘以或除以数字。
例如:
>> 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
>>
矩阵的转置切换矩阵的行和列。在 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
>>
可以连接两个矩阵来创建一个新矩阵。使用中括号([]
,连接运算符)来实现。
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
>>
假设有两个矩阵 A(m*n) 和 B(n*p),则它们相乘可以产生一个 m*p 的新矩阵 C。只有当 A 中的列数 n 等于 B 中的函数 n 时,才能进行矩阵乘法。
所得的矩阵 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
>>
在 Octave 中使用 det
函数计算矩阵的行列式。矩阵 A 的行列式由 det()
计算。
矩阵 A A A 的逆矩阵记为 A − 1 A^{-1} A−1,使得下面的关系成立:
A A − 1 = A − 1 = 1 AA^{-1}=A^{-1}=1 AA−1=A−1=1
并不是每个矩阵都有逆矩阵,如果一个矩阵的行列式为零,则不存在逆矩阵,这样的矩阵是奇异的。
在 Octave 中使用 inv
函数求逆矩阵。矩阵 A 的逆矩阵由 inv(A) 计算。
参考:
[1] https://www.w3cschool.cn/matlab/
[2] http://m.yiibai.com/matlab/