3.1 矩阵运算
向下取整
向上取整
四舍五入
正弦
余弦
正切
反正弦
反余弦
反正切
双曲正弦
双曲余弦
双曲正切
有限值检查
无穷大检查
NaN检查
最小值
最大值
自然对数
常用对数
指数
平方根
平方
立方
幂运算
乘法
绝对值
转置
共轭
矩阵乘法
点积
叉积
标量乘法
标量除法
加法
减法
3.1.1 矩阵的加减运算
3.1.2 标量乘除法
3.1.3 乘法、点积和叉积
3.1.4 转置和共轭
3.1.5 系数运算
3.1.6 幂和根
3.1.7 对数和指数
3.1.8 两个矩阵的最小值和最大值
3.1.9 矩阵相似性检查
3.1.10 三角函数
3.1.11 取整操作
3.1.12 元素掩码
3.2 矩阵约简
计数大于1的元素
检查所有元素是否为正
检查任意元素是否为正
矩阵的2范数
矩阵的无穷范数
乘积
迹
整个矩阵的平均值
逐行/逐列的平均值
所有元素的和
矩阵中的最小/最大元素
逐行/逐列的最小/最大元素
3.2.1 最小/最大元素
3.2.2 矩阵元素和
3.2.3 矩阵的平均值
3.2.4 矩阵的迹
3.2.5 所有元素的乘积
3.2.6 矩阵的范数
3.2.7 矩阵元素检查
3.2.8 矩阵元素计数
3.3 矩阵的条件数和数值稳定性
高斯消去法(行约简)
行梯形形式
列梯形形式
全秩矩阵
秩亏矩阵
3.3.1 矩阵的秩
3.3.2 解矩阵的方法
3.4 广播机制
Eigen::MatrixXf matrix1, matrix2;
// 矩阵 matrix1 和 matrix2 的加法
Eigen::MatrixXf result = matrix1 + matrix2;
// 结果矩阵 result 是 matrix1 和 matrix2 对应元素相加的结果
Eigen::MatrixXf matrix1, matrix2;
// 矩阵 matrix1 和 matrix2 的减法
Eigen::MatrixXf result = matrix1 - matrix2;
// 结果矩阵 result 是 matrix1 和 matrix2 对应元素相减的结果
Eigen::MatrixXf matrix;
float scalar = 2.0f;
// 矩阵 matrix 乘以标量 scalar
Eigen::MatrixXf result = matrix * scalar;
// 结果矩阵 result 是 matrix 的每个元素都乘以 scalar 的结果
Eigen::MatrixXf matrix;
float scalar = 2.0f;
// 矩阵 matrix 除以标量 scalar
Eigen::MatrixXf result = matrix / scalar;
// 结果矩阵 result 是 matrix 的每个元素都除以 scalar 的结果
Eigen::MatrixXf matrix1, matrix2;
// 矩阵 matrix1 和 matrix2 的乘法
Eigen::MatrixXf result = matrix1 * matrix2;
// 结果矩阵 result 是 matrix1 和 matrix2 的矩阵乘法结果
Eigen::VectorXf vector1, vector2;
// 向量 vector1 和 vector2 的点积
float result = vector1.dot(vector2);
// 结果 result 是 vector1 和 vector2 的点积
Eigen::Vector3f vector1, vector2;
// 向量 vector1 和 vector2 的叉积
Eigen::Vector3f result = vector1.cross(vector2);
// 结果向量 result 是 vector1 和 vector2 的叉积
Eigen::MatrixXf matrix;
// 矩阵 matrix 的转置
Eigen::MatrixXf result = matrix.transpose();
// 结果矩阵 result 是 matrix 的转置
Eigen::MatrixXcf matrix;
// 矩阵 matrix 的共轭
Eigen::MatrixXcf result = matrix.conjugate();
// 结果矩阵 result 是 matrix 的共轭
Eigen::MatrixXf matrix1, matrix2;
// 矩阵 matrix1 和 matrix2 的系数乘法
Eigen::MatrixXf result = matrix1.array() * matrix2.array();
// 结果矩阵 result 是 matrix1 和 matrix2 对应元素相乘的结果
Eigen::MatrixXf matrix;
// 矩阵 matrix 的系数绝对值
Eigen::MatrixXf result = matrix.array().abs();
// 结果矩阵 result 是 matrix 的每个元素的绝对值
Eigen::MatrixXf matrix;
// 矩阵 matrix 的系数平方根
Eigen::MatrixXf result = matrix.array().sqrt();
// 结果矩阵 result 是 matrix 的每个元素的平方根
Eigen::MatrixXf matrix;
// 矩阵 matrix 的系数平方
Eigen::MatrixXf result = matrix.array().square();
// 结果矩阵 result 是 matrix 的每个元素的平方
Eigen::MatrixXf matrix;
// 矩阵 matrix 的系数立方
Eigen::MatrixXf result = matrix.array().cube();
// 结果矩阵 result 是 matrix 的每个元素的立方
Eigen::MatrixXf matrix;
float exponent = 3.0f;
// 矩阵 matrix 的系数幂运算
Eigen::MatrixXf result = matrix.array().pow(exponent);
// 结果矩阵 result 是 matrix 的每个元素的 exponent 次幂
Eigen::MatrixXf matrix;
// 矩阵 matrix 的系数自然对数
Eigen::MatrixXf result = matrix.array().log();
// 结果矩阵 result 是 matrix 的每个元素的自然对数
Eigen::MatrixXf matrix;
// 矩阵 matrix 的系数常用对数
Eigen::MatrixXf result = matrix.array().log10();
// 结果矩阵 result 是 matrix 的每个元素的常用对数
Eigen::MatrixXf matrix;
// 矩阵 matrix 的系数指数
Eigen::MatrixXf result = matrix.array().exp();
// 结果矩阵 result 是 matrix 的每个元素的指数
Eigen::MatrixXf matrix1, matrix2;
// 矩阵 matrix1 和 matrix2 的系数最小值
Eigen::MatrixXf result = matrix1.array().min(matrix2.array());
// 结果矩阵 result 是 matrix1 和 matrix2 对应元素的最小值
Eigen::MatrixXf matrix1, matrix2;
// 矩阵 matrix1 和 matrix2 的系数最大值
Eigen::MatrixXf result = matrix1.array().max(matrix2.array());
// 结果矩阵 result 是 matrix1 和 matrix2 对应元素的最大值
Eigen::MatrixXf matrix;
// 检查矩阵 matrix 的每个元素是否有限
Eigen::ArrayXXf result = matrix.array().isFinite();
// 结果数组 result 是 matrix 的每个元素是否为有限值的布尔数组
Eigen::MatrixXf matrix;
// 检查矩阵 matrix 的每个元素是否为无穷大
Eigen::ArrayXXf result = matrix.array().isInf();
// 结果数组 result 是 matrix 的每个元素是否为无穷大的布尔数组
Eigen::MatrixXf matrix;
// 检查矩阵 matrix 的每个元素是否为 NaN
Eigen::ArrayXXf result = matrix.array().isNaN();
// 结果数组 result 是 matrix 的每个元素是否为 NaN 的布尔数组
Eigen::MatrixXf matrix;
// 矩阵 matrix 的系数正弦
Eigen::MatrixXf result = matrix.array().sin();
// 结果矩阵 result 是 matrix 的每个元素的正弦值
Eigen::MatrixXf matrix;
// 矩阵 matrix 的系数余弦
Eigen::MatrixXf result = matrix.array().cos();
// 结果矩阵 result 是 matrix 的每个元素的余弦值
Eigen::MatrixXf matrix;
// 矩阵 matrix 的系数正切
Eigen::MatrixXf result = matrix.array().tan();
// 结果矩阵 result 是 matrix 的每个元素的正切值
Eigen::MatrixXf matrix;
// 矩阵 matrix 的系数反正弦
Eigen::MatrixXf result = matrix.array().asin();
// 结果矩阵 result 是 matrix 的每个元素的反正弦值
Eigen::MatrixXf matrix;
// 矩阵 matrix 的系数反余弦
Eigen::MatrixXf result = matrix.array().acos();
// 结果矩阵 result 是 matrix 的每个元素的反余弦值
Eigen::MatrixXf matrix;
// 矩阵 matrix 的系数反正切
Eigen::MatrixXf result = matrix.array().atan();
// 结果矩阵 result 是 matrix 的每个元素的反正切值
Eigen::MatrixXf matrix;
// 矩阵 matrix 的系数双曲正弦
Eigen::MatrixXf result = matrix.array().sinh();
// 结果矩阵 result 是 matrix 的每个元素的双曲正弦值
Eigen::MatrixXf matrix;
// 矩阵 matrix 的系数双曲余弦
Eigen::MatrixXf result = matrix.array().cosh();
// 结果矩阵 result 是 matrix 的每个元素的双曲余弦值
Eigen::MatrixXf matrix;
// 矩阵 matrix 的系数双曲正切
Eigen::MatrixXf result = matrix.array().tanh();
// 结果矩阵 result 是 matrix 的每个元素的双曲正切值
Eigen::MatrixXf matrix;
// 矩阵 matrix 的系数向下取整
Eigen::MatrixXf result = matrix.array().floor();
// 结果矩阵 result 是 matrix 的每个元素向下取整后的值
Eigen::MatrixXf matrix;
// 矩阵 matrix 的系数向上取整
Eigen::MatrixXf result = matrix.array().ceil();
// 结果矩阵 result 是 matrix 的每个元素向上取整后的值
Eigen::MatrixXf matrix;
// 矩阵 matrix 的系数四舍五入
Eigen::MatrixXf result = matrix.array().round();
// 结果矩阵 result 是 matrix 的每个元素四舍五入后的值
以下示例展示了如何使用 P 或 Q 矩阵中的元素替换矩阵中的元素。如果矩阵中的值小于某个阈值,我们用 P 中的元素替换它,否则用 Q 中的元素替换。
int cols, rows;
cols =2;
rows =3;
// 创建随机矩阵 R
Eigen::MatrixXf R = Eigen::MatrixXf::Random(rows, cols);
// 创建零矩阵 Q
Eigen::MatrixXf Q = Eigen::MatrixXf::Zero(rows, cols);
// 创建全为 1.0 的矩阵 P
Eigen::MatrixXf P = Eigen::MatrixXf::Constant(rows, cols,1.0);
double threshold =0.5;
// 应用掩码操作,根据阈值选择元素
Eigen::MatrixXf masked =(R.array()< threshold).select(P, Q);
// 如果 R 的元素小于阈值 threshold,则选择 P 中对应的元素,否则选择 Q 中对应的元素
Eigen::MatrixXf matrix;
int min_element_row_index, min_element_col_index;
// 找到矩阵 matrix 中的最小元素
float min_value = matrix.minCoeff(&min_element_row_index, &min_element_col_index);
// min_value 是 matrix 中的最小值,min_element_row_index 和 min_element_col_index 是最小值所在的行列索引
Eigen::MatrixXf matrix;
// 找到矩阵 matrix 中逐行的最大元素
Eigen::VectorXf max_rowwise = matrix.rowwise().maxCoeff();
// max_rowwise 是一个向量,包含每行的最大值
Eigen::MatrixXf matrix;
// 计算矩阵 matrix 所有元素的和
float sum = matrix.sum();
// sum 是 matrix 中所有元素的和
Eigen::MatrixXf matrix;
// 计算矩阵 matrix 的平均值
float mean = matrix.mean();
// mean 是 matrix 中所有元素的平均值
Eigen::MatrixXf matrix;
// 计算矩阵 matrix 中每列的平均值
Eigen::VectorXf col_mean = matrix.colwise().mean();
// col_mean 是一个向量,包含每列的平均值
Eigen::MatrixXf matrix;
// 计算矩阵 matrix 的迹
float trace = matrix.trace();
// trace 是 matrix 的迹,即对角线元素的和
Eigen::MatrixXf matrix;
// 计算矩阵 matrix 所有元素的乘积
float prod = matrix.prod();
// prod 是 matrix 中所有元素的乘积
Eigen::MatrixXf matrix;
// 计算矩阵 matrix 的2范数
float norm2 = matrix.lpNorm<2>();
// norm2 是 matrix 的2范数
Eigen::MatrixXf matrix;
// 计算矩阵 matrix 的无穷范数
float norm_inf = matrix.lpNorm();
// norm_inf 是 matrix 的无穷范数
Eigen::MatrixXf matrix;
// 检查矩阵 matrix 所有元素是否为正
bool all_positive = (matrix.array() > 0).all();
// all_positive 为 true 表示 matrix 所有元素都为正
Eigen::MatrixXf matrix;
// 检查矩阵 matrix 任意元素是否为正
bool any_positive = (matrix.array() > 0).any();
// any_positive 为 true 表示 matrix 中存在至少一个正元素
Eigen::MatrixXf matrix;
// 计数矩阵 matrix 中大于 1 的元素
int count = (matrix.array() > 1).count();
// count 是 matrix 中大于 1 的元素数量
矩阵的列秩是该矩阵中线性无关列的最大数量。列秩与行秩相等,这一点可以通过证明。一个矩阵的秩等于其行数和列数中较小的那个数值。
如果其秩等于矩阵的最大可能秩,则称其为全秩矩阵。
如果矩阵没有全秩,则称其为秩亏矩阵。
这种方法还可以用于计算矩阵的秩、方阵的行列式和可逆矩阵的逆矩阵。
指的是高斯消去法对行的操作。
指的是高斯消去法对列的操作。
矩阵的广播机制允许对不同尺寸的矩阵进行操作,将较小的矩阵扩展到与较大的矩阵相同的尺寸进行运算。