66 lines
2.4 KiB
Markdown
66 lines
2.4 KiB
Markdown
|
||
|
||
# 1、其他可能替代的方案
|
||
|
||
## [nalgebra](https://github.com/dimforge/nalgebra):支持动态数组+数组的计算+数组分解,求解
|
||
- 1. matrix_construction.rs文件中,nalgebra支持多种矩阵创建方式:
|
||
|
||
- 直接指定元素值创建固定大小矩阵(Matrix2x3::new)
|
||
- 从行向量或列向量创建矩阵(from_rows, from_columns)
|
||
- 从切片创建矩阵(from_row_slice, from_column_slice)
|
||
- 使用函数生成矩阵元素(from_fn)
|
||
- 从迭代器创建矩阵(from_iterator)
|
||
- 创建动态大小矩阵(DMatrix)
|
||
- 创建对角矩阵(from_diagonal_element)
|
||
- 创建单位矩阵(identity)
|
||
|
||
- 2. matrix.rs文件,nalgebra支持多种矩阵操作:
|
||
|
||
- 矩阵转置(transpose)
|
||
- 矩阵共轭转置(adjoint)
|
||
- 矩阵共轭(conjugate)
|
||
- 矩阵缩放(scale, unscale)
|
||
- 矩阵元素映射(map, map_with_location)
|
||
- 矩阵元素折叠(fold, fold_with)
|
||
- 矩阵元素交换(swap)
|
||
- 矩阵复制(copy_from, copy_from_slice)
|
||
- 矩阵迹(trace)
|
||
- 矩阵对称部分(symmetric_part)
|
||
- 矩阵厄米特部分(hermitian_part)
|
||
- 矩阵对角化(diagonal, map_diagonal)
|
||
- 矩阵齐次坐标转换(to_homogeneous, from_homogeneous)
|
||
- 矩阵叉积(cross, perp)
|
||
- 矩阵叉积矩阵(cross_matrix)
|
||
- 矩阵夹角(angle)
|
||
|
||
- 3. src/base/ops.rs文件实现了矩阵的以下主要操作:
|
||
|
||
1. 索引操作:
|
||
|
||
- 实现了Index和IndexMut trait,支持通过usize或(usize, usize)索引访问矩阵元素
|
||
- 支持一维和二维索引,会自动进行边界检查
|
||
|
||
2. 取反操作:
|
||
|
||
- 实现了Neg trait,支持对矩阵进行取反操作
|
||
- 提供了neg_mut方法用于原地取反
|
||
|
||
3. 加法和减法操作:
|
||
|
||
- 通过componentwise_binop_impl宏实现了Add/Sub trait和AddAssign/SubAssign trait
|
||
- 支持矩阵与矩阵、矩阵与标量的加减运算
|
||
- 提供了add_to/sub_to等方法用于将结果存储到指定矩阵中
|
||
|
||
4. 乘法操作:
|
||
|
||
- 实现了Mul trait和MulAssign trait
|
||
- 支持矩阵与矩阵、矩阵与标量的乘法运算
|
||
- 提供了tr_mul/ad_mul等方法用于转置/共轭转置后的乘法
|
||
- 实现了Kronecker积运算
|
||
|
||
5. 其他操作:
|
||
|
||
- 实现了Sum和Product trait,支持对矩阵序列求和或求积
|
||
- 提供了mul_to等方法用于将结果存储到指定矩阵中
|
||
|
||
# 2 本身方法的速度 |