Octave 入门教程目录,请点击: https://blog.csdn.net/benzhujie1245com/article/details/83146777
本内容将介绍 Octave 中的向量的创建、引用及相关运算。
向量分为行向量和列向量,其创建方法如下:
输入方法 | 描述 | |
---|---|---|
行向量 | [ a 1 , a 2 , ⋯   , a n a_1, a_2, \cdots, a_n a1,a2,⋯,an] | 将元素使用方括号括起来,使用空格或者逗号分隔元素。 |
列向量 | [ a 1 ; a 2 ; ⋯   ; a n a_1;a_2;\cdots;a_n a1;a2;⋯;an] | 将元素使用方括号括起来,使用分号分隔元素。 |
例如:
>>a1 = [1, 2, 3, 4, 5, 6, 7, 8]
a1 =
1 2 3 4 5 6 7 8
>>a2 = [1; 2; 3; 4; 5; 6; 7; 8]
a2 =
1
2
3
4
5
6
7
8
>>
当我们需要创建一个等差元素的向量时,我们可以采用上面的直接输入法进行创建。但是当元素数量很多时,会很麻烦。
假如需要创建一个向量 v,其第一个元素为 s,最后一个元素为 e,元素之间的差异是 step,可以通过以下方法创建:
v = [s: step: e]
例如:
>> a = [1: 2 : 9]
a =
1 3 5 7 9
>>
可以通过多种方式来引用向量的一个或多个元素,具体方法如下:
方法 | 描述 |
---|---|
a(i) | 引用向量 a 的第 i 个元素(索引值从 1 开始) |
a(: ) | 引用向量 a 中的所有元素 |
a(m:n) | 引用向量 a 的第 m 到 n 个元素(索引值从 1 开始) |
例如:
>>a1 = [1, 2, 3, 4, 5, 6, 7, 8];
>>a2 = [1; 2; 3; 4; 5; 6; 7; 8];
>>a1(2) % 输出向量 a1 的第 2 个元素
ans = 2
>>a2(6) % 输出向量 a2 的第 6 个元素
ans = 6
>>a1(:) % 输出向量 a1 的所有元素
ans =
1
2
3
4
5
6
7
8
>>a2(3:6) % 输出向量 a2 的第 3 到 6 个元素
ans =
3
4
5
6
>>
当两个向量进行加减法时,这两个向量的元素必须有相同的类型和数量。向量加减法产生相同类型的新向量,原始向量的每个元素逐一进行加减法。
例如:
>>a = [6, 9, 7, 10];
>>b = [2, 3, 6, 9];
>>c = a + b;
>>d = a - b;
>>disp(c)
8 12 13 19
>>disp(d)
4 6 1 1
>>
将一个数字乘以一个标量,这称为标量乘法。标量乘法产生相同类型的新向量,原始向量的每个元素乘以数字。
例如:
>>a = [6, 9, 7, 10];
>>b = 5 * a
b =
30 45 35 50
>>
转置操作时将列向量更改为行向量,反之亦然。转置操作由单引号('
)表示。
Octave 允许将多个向量附加在一起从而创建新的向量。
假设存在两个行向量 r1(有 m 个元素) 和 r2(有 n 个元素),可以通过以下附加操作创建一个拥有 m+n 个元素的行向量 r:
v = [v1, v2]
如果上面的 m = n(即行向量 r1 和 r2 拥有相同数量的元素),可以通过以下附加操作,创建一个 2*m 的矩阵 rMatrix:
v = [v1; v2]
假设存在两个列向量 c1(有 m 个元素)和 c2(有 n 个元素),可以通过以下附加操作创建一个拥有 m+n 个元素的列向量 c:
v = [v1; v2]
如果上面的 m = n(即列向量 c1 和 c2 拥有相同数量的元素),可以通过以下附加操作创建一个拥有 m*2 的矩阵 cMatrix:
v = [v1; v2]
例如:
>> v1 = [1, 2, 3, 4];
>> v2 = [5, 6, 7, 8];
>> v = [v1, v2]
v =
1 2 3 4 5 6 7 8
>> v = [v1; v2]
v =
1 2 3 4
5 6 7 8
>> v3 = [1; 2; 3; 4];
>> v4 = [5; 6; 7; 8];
>> v = [v3; v4]
v =
1
2
3
4
5
6
7
8
>> v = [v3, v4]
v =
1 5
2 6
3 7
4 8
>>
假设向量 V V V 拥有 v 1 , v 2 , ⋯   , v n v_1, v_2,\cdots,v_n v1,v2,⋯,vn 元素,其模由以下公式求出:
∣ V ∣ = ( v 1 2 + v 2 2 + ⋯ + v n 2 ) |V|=\sqrt{(v_1^2+v_2^2+\cdots+v_n^2)} ∣V∣=(v12+v22+⋯+vn2)
在 Octave 中按照以下步骤求向量的模:
.*
)得到向量 sv(向量 sv 的元素是向量 v 的元素的平方),即 sv = v.*v
。sum
函数得到向量 v 的元素的平方和,即向量 v 的点积。sqrt
函数得到和的平方根,即向量的模。例如:
>> v = [1, 2, 3, 4];
>> sv = v.*v;
>> dp = sum(sv);
>> mag = sqrt(dp) % 实际上 dp 的值就是 v1 和 v1 的点积,可以通过下面的 dot 函数获取
mag = 5.4772
>>
两个向量 a = [ a 1 , a 2 , ⋯   , a n ] a=[a_1,a_2,\cdots,a_n] a=[a1,a2,⋯,an] 和 b = [ b 1 , b 2 , ⋯   , b n ] b=[b_1,b_2,\cdots,b_n] b=[b1,b2,⋯,bn] 的点积由以下公式求出:
a . b = ∑ i = 1 n ( a i × b i ) a.b=\sum_{i=1}^{n}(a_i\times b_i) a.b=i=1∑n(ai×bi)
在 Octave 中,通过 dot
求两个向量的点积,使用语法如下:
dot(a, b)
例如:
>> v1 = [1, 2, 3];
>> v2 = [2, 3, 4];
>> dot(v1, v2)
ans = 20
参考:
[1] https://www.w3cschool.cn/matlab/
[2] http://m.yiibai.com/matlab/