MATLAB `norm`:轻松计算欧几里得距离和向量长度 – wiki基地

MATLAB norm:轻松计算欧几里得距离和向量长度

在数据分析、机器学习和工程计算中,我们经常需要处理向量和矩阵。其中一个最基本的操作就是计算向量的长度(或称为范数)以及点与点之间的距离。MATLAB 提供了一个强大而便捷的函数——norm,它使得这些计算变得异常简单。

本文将详细介绍 norm 函数的用法,从基础的向量长度计算到更复杂的矩阵范数,帮助你轻松掌握这一核心工具。

什么是范数(Norm)?

在数学上,范数是赋予向量空间中每个向量一个“长度”或“大小”的函数。它满足一些特定的数学属性,但从应用角度来看,我们可以将其理解为对向量或矩阵大小的一种度量。

最常见和直观的是 L2 范数,也就是我们熟知的欧几里得范数(Euclidean Norm)。对于一个向量,它的 L2 范数就是其所有元素平方和的平方根,这恰好是向量在空间中的几何长度。

norm 函数的基本用法

1. 计算向量的长度(L2 范数)

这是 norm 函数最常见的用途。想象一个从原点 (0,0) 指向 (3,4) 的向量,它的长度可以通过勾股定理计算。在 MATLAB 中,使用 norm 函数可以一步到位。

语法: n = norm(V)

此语法返回向量 V 的欧几里得范数(L2 范数)。

示例:
“`matlab
% 创建一个二维向量
v = [3, 4];

% 计算向量的长度
length_v = norm(v);

fprintf(‘向量 [3, 4] 的长度是: %f\n’, length_v);
% 输出: 向量 [3, 4] 的长度是: 5.000000

% 创建一个三维向量
u = [1, 2, -2];
length_u = norm(u);
fprintf(‘向量 [1, 2, -2] 的长度是: %f\n’, length_u);
% 输出: 向量 [1, 2, -2] 的长度是: 3.000000
``
在这个例子中,
norm(v)的计算过程等同于sqrt(3^2 + 4^2) = sqrt(9 + 16) = sqrt(25) = 5`。

2. 计算两点间的欧几里得距离

欧几里得距离是衡量多维空间中两点之间“直线”距离的常用方法。如果点 A 的坐标是 P1,点 B 的坐标是 P2,那么它们之间的距离就是向量 P1 - P2 的范数。

示例:
假设我们有两个点:A = (1, 2)B = (4, 6)

“`matlab
% 定义两个点的坐标向量
P1 = [1, 2];
P2 = [4, 6];

% 计算两点之间的差向量
diff_vec = P1 – P2; % 或者 P2 – P1,结果的范数相同

% 使用 norm 计算欧几里得距离
distance = norm(diff_vec);

fprintf(‘点 (1, 2) 和点 (4, 6) 之间的欧几里得距离是: %f\n’, distance);
% 输出: 点 (1, 2) 和点 (4, 6) 之间的欧几里得距离是: 5.000000
``
这里的计算过程是
norm([1-4, 2-6]) = norm([-3, -4]) = sqrt((-3)^2 + (-4)^2) = 5`。

norm 函数的进阶用法

norm 函数不仅限于计算 L2 范数,它还支持多种其他类型的范数,通过第二个参数 p 来指定。

语法: n = norm(V, p)

1. 其他向量范数(p-范数)

  • L1 范数 (p = 1):向量元素绝对值之和,也称为“曼哈顿距离”。

matlab
v = [3, -4, 5];
norm_1 = norm(v, 1); % 计算 |3| + |-4| + |5|
fprintf('L1 范数是: %f\n', norm_1);
% 输出: L1 范数是: 12.000000

  • 无穷范数 (p = inf):向量中绝对值最大的元素。

matlab
v = [3, -4, 5];
norm_inf = norm(v, inf); % 寻找 max(|3|, |-4|, |5|)
fprintf('无穷范数是: %f\n', norm_inf);
% 输出: 无穷范数是: 5.000000

2. 矩阵范数

norm 函数也可以用于计算矩阵的范数,这在数值分析和线性代数中非常重要。

语法: n = norm(X, p)

  • 2-范数 (p = 2 或默认):矩阵的最大奇异值。它衡量了矩阵能够对向量产生的最大“拉伸”程度。

matlab
A = [1, 2; 3, 4];
norm_2 = norm(A); % 默认计算 2-范数
fprintf('矩阵 A 的 2-范数是: %f\n', norm_2);
% 输出: 矩阵 A 的 2-范数是: 5.464986

  • Frobenius 范数 (p = 'fro'):矩阵所有元素平方和的平方根,类似于将矩阵视为一个长向量后计算其 L2 范数。

matlab
A = [1, 2; 3, 4];
norm_fro = norm(A, 'fro'); % sqrt(1^2 + 2^2 + 3^2 + 4^2)
fprintf('矩阵 A 的 Frobenius 范数是: %f\n', norm_fro);
% 输出: 矩阵 A 的 Frobenius 范数是: 5.477226

  • 1-范数 (p = 1):矩阵的最大“列和”(每列元素绝对值之和的最大值)。
  • 无穷范数 (p = inf):矩阵的最大“行和”(每行元素绝对值之和的最大值)。

总结

MATLAB 的 norm 函数是一个功能强大且灵活的工具,远不止计算向量长度这么简单。

  • 对于向量
  • norm(V) 是计算其欧几里得长度的最快方式。
  • norm(P1 - P2) 是计算两点间欧几里得距离的简洁方法。
  • norm(V, p) 可以让你探索不同的范数定义,如 L1 或无穷范数。

  • 对于矩阵

  • norm(A)norm(A, 'fro') 等提供了衡量矩阵“大小”的不同标准。

无论你是在进行几何计算、数据标准化还是复杂的算法分析,norm 函数都将是你不可或缺的得力助手。掌握它,你就能更高效地在 MATLAB 中解决各种科学计算问题。

滚动至顶部