joa*_*dre 5 c++ pointers matrix eigen
我的代码需要一个 3D 矩阵/数组结构,现在我的矩阵和向量都依赖于 Eigen。
现在我正在使用new
以下方法创建 3D 结构:
MatrixXd* cube= new MatrixXd[60];
for (int i; i<60; i++) cube[i]=MatrixXd(60,60);
Run Code Online (Sandbox Code Playgroud)
和访问值:
double val;
MatrixXd pos;
for (int i; i<60; i++){
pos=cube[i];
for (int j; j<60; j++){
for (int k; k<60; k++){
val=pos(j,k);
//...
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,现在这部分代码的速度非常慢,这让我相信这可能不是最有效的方法。有没有其他选择?
另一种方法是创建一个非常大的内存块,并从中映射特征矩阵:
double* data = new double(60*60 * 60*60*60);
Map<MatrixXd> Mijk(data+60*(60*(60*k)+j)+i), 60, 60);
Run Code Online (Sandbox Code Playgroud)
在此阶段,您可以像 MatrixXd 对象一样使用 Mijk。但是,由于这不是 MatrixXd 类型,因此如果您想将其传递给函数,您的函数必须:
foo(Map<MatrixXd> mat)
template<typename Der> void foo(const MatrixBase<Der>& mat)
Ref<MatrixXd>
可以处理Map<>
和Matrix<>
对象的对象,而不是模板函数并且没有副本。(文档) 归档时间: |
|
查看次数: |
10122 次 |
最近记录: |