Octave 入门教程:向量

2019-04-13 16:57发布

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

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

一、向量

1.1 创建向量

  向量分为行向量和列向量,其创建方法如下: 输入方法 描述 行向量 [a1,a2,,ana_1, a_2, cdots, a_n] 将元素使用方括号括起来,使用空格或者逗号分隔元素。 列向量 [a1;a2;;ana_1;a_2;cdots;a_n] 将元素使用方括号括起来,使用分号分隔元素。   例如: >>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 向量的模
  假设向量 VV 拥有 v1,v2,,vnv_1, v_2,cdots,v_n 元素,其模由以下公式求出:
V=(v12+v22++vn2)|V|=sqrt{(v_1^2+v_2^2+cdots+v_n^2)}
  在 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=[a1,a2,,an]a=[a_1,a_2,cdots,a_n]b=[b1,b2,,bn]b=[b_1,b_2,cdots,b_n] 的点积由以下公式求出:
a.b=i=1n(ai×bi)a.b=sum_{i=1}^{n}(a_i imes b_i)
  在 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/