MATLAB编程-简介
向量简介(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
函数。它不是在 a
和 b
之间生成点,而是在 10^a
到 10^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 中向量的定义、创建方式、间距生成、模长、点积与叉积的完整用法。