向量简介(A Vector in MATLAB)

在 MATLAB 中,向量 被定义为只有一个维度且大小大于 1 的数组。例如,数组 [1, 2, 3] 就是一个向量。有许多操作适用于向量而不适用于其他类型的数组(如矩阵)。然而,由于向量本质上是矩阵的一种特殊情况,所有适用于矩阵的函数在数学上合理的情况下也适用于向量(例如,可以将一个行向量与一个列向量做矩阵乘法)。

本节重点介绍仅适用于向量的操作。


声明向量(Declaring a Vector)

声明向量与声明普通数组一样,只要除了一个维度外其他维度长度为 1 即可。数组是横向或纵向都可以。例如:

>> Horiz = [1, 2, 3];      % 行向量
>> Vert = [4; 5; 6];       % 列向量

你可以使用 isvector 函数判断一个变量是否为向量,在程序中用于错误检测:

>> isvector(Horiz)
ans = 1
>> isvector(Vert)
ans = 1

你还可以通过提取矩阵的一行或一列来创建向量:

>> A = [1, 2, 3; 4, 5, 6];
>> Vec = A(1,:)
Vec = 1   2   3

这在存储多个向量并按需提取时非常有用,比如雅可比矩阵(Jacobian)中存储多个变量的梯度。


创建等间距或对数间距的向量(Declaring a Vector with Linear or Logarithmic Spacing)

如果你希望生成在两个端点间线性变化的向量,例如 [1,2,3][1,1.1,1.2,...,3],可以使用 linspace 函数:

>> LinVector = linspace(1,3,21)

输出为从 1 到 3 的 21 个等间距点。注意linspace 返回的是行向量,如果需要列向量可使用转置操作(')。

如果你希望生成对数间距的向量,可使用 logspace 函数。它不是在 ab 之间生成点,而是在 10^a10^b 之间生成点:

>> LogVector = logspace(1,3,21)

这两个函数都很适合用于生成要在绘图中进行函数评估的点(线性/对数坐标轴)。


向量模长(Vector Magnitude)

使用 norm 函数可以求出向量的模长:

>> Magnitude = norm(inputvector,2);

示例:

>> magHoriz = norm(Horiz)
magHoriz = 3.7417

>> magVert = norm(Vert)
magVert = 8.7750

无论是行向量还是列向量都可以。


点积(Dot Product)

对两个长度相同的向量,使用 dot 函数求点积:

>> DP = dot(Horiz, Vert)
DP = 32

点积结果是一个标量,可以结合向量模长求夹角:

>> theta = acos(DP / (magHoriz * magVert))
theta = 0.2257   % 单位为弧度

叉积(Cross Product)

对于长度为 3 的向量,可使用 cross 函数计算叉积:

>> CP = cross(Horiz, Vert)
CP = -3   6   -3

叉积结果是一个向量,它始终垂直于原始两个向量。可以通过叉积模长结合向量模长来求夹角:

>> CPMag = norm(CP);
>> theta = asin(CPMag / (magHoriz * magVert))
theta = 0.2257

如果叉积为 0,说明两个向量平行。


这就是 MATLAB 中向量的定义、创建方式、间距生成、模长、点积与叉积的完整用法。


Last modified: Tuesday, 15 April 2025, 11:03 AM