特征库中的多维数组
Multidimensional arrays in eigen library
关于优秀eigen库的使用和未来的3个简单问题:
- 为什么不能通过
matrix[i][j]
访问矩阵,而只能通过 matrix(i,j)
访问矩阵?
- 是否有计划实现这样的语法?
- 是否会实现多维数组
matrix[n][m]...[l]
?
我非常喜欢 eigen 库,它快速且易于使用。我唯一缺少的是真正的多维数组。
我不能代表 eigen
库,因为我从未使用过它,但我可以代表代码的设计。为了使用 [][]
表示法,这通常意味着矩阵建立在基础向量之上,这些基础向量也重载了 []
运算符。
可能 eigen
库的作者不想经历将向量定义为矩阵 classes 的基础的麻烦。
举个例子。
class Matrix {
Vector& operator[](std::size_t ind);
};
class Vector {
double& operator[](std::size_t ind);
};
允许我们像这样使用 Matrix
class:
Matrix matrix;
matrix[0][0] = 1.2;
定义 peren 运算符通常更容易,因为它不依赖于 Vector
class:
的实现
class Matrix {
double& operator()(std::size_t i, std::size_t j);
const double& operator()(std::size_t i, std::size_t j) const;
};
允许我们像这样使用 Matrix
class:
Matrix matrix;
matrix(4, 3) = 9.2;
通过新的 Tensor 模块支持多维数组:
http://eigen.tuxfamily.org/dox-devel/unsupported/group__CXX11__Tensor__Module.html
关于优秀eigen库的使用和未来的3个简单问题:
- 为什么不能通过
matrix[i][j]
访问矩阵,而只能通过matrix(i,j)
访问矩阵? - 是否有计划实现这样的语法?
- 是否会实现多维数组
matrix[n][m]...[l]
?
我非常喜欢 eigen 库,它快速且易于使用。我唯一缺少的是真正的多维数组。
我不能代表 eigen
库,因为我从未使用过它,但我可以代表代码的设计。为了使用 [][]
表示法,这通常意味着矩阵建立在基础向量之上,这些基础向量也重载了 []
运算符。
可能 eigen
库的作者不想经历将向量定义为矩阵 classes 的基础的麻烦。
举个例子。
class Matrix {
Vector& operator[](std::size_t ind);
};
class Vector {
double& operator[](std::size_t ind);
};
允许我们像这样使用 Matrix
class:
Matrix matrix;
matrix[0][0] = 1.2;
定义 peren 运算符通常更容易,因为它不依赖于 Vector
class:
class Matrix {
double& operator()(std::size_t i, std::size_t j);
const double& operator()(std::size_t i, std::size_t j) const;
};
允许我们像这样使用 Matrix
class:
Matrix matrix;
matrix(4, 3) = 9.2;
通过新的 Tensor 模块支持多维数组:
http://eigen.tuxfamily.org/dox-devel/unsupported/group__CXX11__Tensor__Module.html