ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

第 16 章 · 向量与矩阵

第 16 章 · 向量与矩阵 进入线性代数。别怕这部分我们重直觉、轻公式用图形和生活例子讲清楚向量和矩阵是什么让你为 Eigen 打好数学基础。16.1 标量、向量、矩阵在数学和计算机里数据常分成三个层次概念是什么例子标量scalar一个单独的数温度 36.5、价格 99向量vector一列或一行数三维坐标 (x, y, z)矩阵matrix一个二维的数表一张表格标量 5 向量 [ 1 ] 3 维列向量 [ 2 ] [ 3 ] 矩阵 [ 1 2 3 ] 2 行 3 列 [ 4 5 6 ]16.2 向量一个有方向有长度的箭头向量最常见的理解是一个箭头有方向、有长度。在二维平面里向量(3, 4)表示从原点出发向右走 3向上走 4画出的箭头。↑ | · (3,4) | / | / ← 这个箭头就是向量 (3,4) |/______ 原点向量的两个关键属性长度模/范数箭头的长短。(3,4)的长度是 √(3²4²) 5勾股定理。方向箭头指向哪。向量的应用向量无处不在物理速度、力、加速度计算机图形三维空间里的点、方向、颜色机器学习一个样本的特征如 [身高, 体重, 年龄]机器人位置、朝向16.3 向量的表示一个 n 维向量就是 n 个数排成一列或一行。列向量竖着v [ 1 ] [ 2 ] [ 3 ]行向量横着v [ 1 2 3 ]在 Eigen 里Vector3d是列向量3 行 1 列RowVector3d是行向量1 行 3 列。默认说的向量通常指列向量。16.4 矩阵一个二维数表矩阵matrix是排成行列的数表。A [ 1 2 3 ] ← 2 行 3 列 [ 4 5 6 ]说2×3 矩阵指 2 行、3 列行在前列在后。每个数叫元素位置用行列表示如第 1 行第 2 列是 2。矩阵的应用矩阵本质是批量处理数据的工具图片一张灰度图就是一个矩阵每个元素是像素亮度数据表100 个样本 × 10 个特征就是一个 100×10 矩阵变换旋转、缩放、平移都能用矩阵表示第 21 章方程组线性方程组的系数可以写成矩阵第 18 章16.5 特殊的矩阵方阵行数 列数的矩阵如 3×3。方阵才能求行列式、逆、特征值。[ 1 2 3 ] [ 4 5 6 ] ← 3×3 方阵 [ 7 8 9 ]单位矩阵 I对角线全 1、其余全 0 的方阵。它相当于数字里的 “1”任何矩阵乘以它都等于自己。I [ 1 0 0 ] [ 0 1 0 ] [ 0 0 1 ]零矩阵所有元素都是 0。对角矩阵只有对角线上有非零值其余都是 0。对称矩阵关于对角线对称第 i 行第 j 列 第 j 行第 i 列转置等于自己第 17 章讲。[ 1 2 3 ] [ 2 5 6 ] ← 对称A(0,1)A(1,0)2等等 [ 3 6 8 ]对称矩阵在物理、机器学习里特别常见Eigen 对它有专门的高效算法。16.6 维度与索引向量(1, 2, 3)是 3 维的有 3 个分量。矩阵2×3有 2 行 3 列。注意计算机里索引从 0 开始第 7 章讲过。数学里矩阵第 1 行第 1 列在代码里是m(0,0)。这是用 Eigen 时最要小心的一点。16.7 在 Eigen 里创建向量和矩阵先睹为快看 Eigen 怎么表示它们第 24 章详解#includeEigen/DenseEigen::Vector3dv(1,2,3);// 3 维向量Eigen::Matrix3d m;// 3x3 矩阵m1,2,3,4,5,6,7,8,9;16.8 本章完整示例把上面的片段装进一个完整程序存成ch16.cpp按附录 C.3 编译#includeEigen/Dense#includeiostreamintmain(){Eigen::Vector3dv(1,2,3);// 3 维向量列向量Eigen::Matrix3d m;// 3x3 矩阵m1,2,3,4,5,6,7,8,9;std::cout向量 v \nv\n;std::cout矩阵 m \nm\n;std::coutv 的维度v.rows() x v.cols()\n;std::coutm 的维度m.rows() x m.cols()\n;std::coutm(0,1) m(0,1)第 1 行第 2 列\n;std::coutm(2,2) m(2,2)第 3 行第 3 列\n;return0;}运行结果向量 v 1 2 3 矩阵 m 1 2 3 4 5 6 7 8 9 v 的维度3 x 1 m 的维度3 x 3 m(0,1) 2第 1 行第 2 列 m(2,2) 9第 3 行第 3 列注意向量的维度是3 x 1三行一列——这正是 16.3 说的列向量。m(0,1)取到的却是数学上第 1 行第 2 列那个元素代码的下标从 0 开始这个差异第 25 章还会再强调。16.9 小结标量 一个数向量 一列数矩阵 二维数表。向量是有方向有长度的箭头有长度范数和方向。矩阵是批量处理数据的工具尺寸用行×列表示。特殊矩阵单位矩阵 I、零矩阵、对角矩阵、对称矩阵。下一章学习矩阵的运算加减、数乘、矩阵乘法、转置。练习题画一个二维向量 (3,4)计算它的长度。写出一个 3×3 的单位矩阵。判断一个 2×3 矩阵有多少行、多少列、多少个元素举例说明向量和矩阵各有什么实际应用。一个 5 维向量[1,2,3,4,5]用代码的下标从 0 开始取它的第 3 个数下标应该写几取到的值是几
返回列表