我需要对一个大矩阵进行原地转置(所以不能简单地分配另一个矩阵并将其转置)。不幸的是,这个大矩阵不是方阵。更糟糕的是,该矩阵存储在一个双精度数组中,列数和行数分别存储在不同的位置。
我发现boost有uBLAS库,但我没有找到一种方法将我的双精度数组包装成uBLAS矩阵。有没有办法做到这一点?
或者您推荐其他方法来完成此任务?
我发现boost有uBLAS库,但我没有找到一种方法将我的双精度数组包装成uBLAS矩阵。有没有办法做到这一点?
或者您推荐其他方法来完成此任务?
如果你有非常大的矩阵,不想存储临时副本,一种解决方案是将矩阵数组封装到类中,并提供不同的适配器,可以以正常或转置方式迭代元素。这种方法并不是非常高效,但对于大型矩阵来说可以节省内存。
在矩阵运算中,矩阵转置相对容易实现。我建议您自己动手实现,不必担心uBLAS(至少对于这个问题是这样的)。虽然有一些细节需要注意,但维基百科关于原地矩阵转置的文章非常详尽。
如果您能够控制数据表示,那么可以做得更好。如果您有一个矩阵M和它的转置T,那么显然M[x][y] == T[y][x],因此根据您需要转置矩阵的目的,您可能根本不需要执行任何数据转换。