Octave 入门教程:向量

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



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

一、向量

1.1 创建向量

  向量分为行向量和列向量,其创建方法如下:

输入方法 描述
行向量 [ 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

>>

1.2 创建等差元素向量

  当我们需要创建一个等差元素的向量时,我们可以采用上面的直接输入法进行创建。但是当元素数量很多时,会很麻烦。
  假如需要创建一个向量 v,其第一个元素为 s,最后一个元素为 e,元素之间的差异是 step,可以通过以下方法创建:

v = [s: step: e]

  例如:

>> a = [1: 2 : 9]
a =

   1   3   5   7   9

>>

1.3 引用向量的元素

  可以通过多种方式来引用向量的一个或多个元素,具体方法如下:

方法 描述
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

>>

1.4 向量运算

1.4.1 向量的加减法

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

>>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
>>
1.4.2 标量向量乘法

  将一个数字乘以一个标量,这称为标量乘法。标量乘法产生相同类型的新向量,原始向量的每个元素乘以数字。
  例如:

>>a = [6, 9, 7, 10];
>>b = 5 * a
b =

   30   45   35   50

>>
1.4.3 转置向量

  转置操作时将列向量更改为行向量,反之亦然。转置操作由单引号(')表示。

1.4.4 附加向量

  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

>>
1.4.5 向量的模

  假设向量 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
>>
1.4.6 向量点积

  两个向量 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=1n(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/

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