如何使用Armadillo中现有矩阵的非连续视图的内存生成矩阵?

时间:2015-10-22 05:28:16

标签: subview armadillo

目前我可以使用现有矩阵的连续视图的相同内存生成矩阵,以便可以有效地更改现有矩阵的子视图。 可以按如下方式完成

mat mat1(4,4,fill::zeros);
double *auxmem = mat1.memptr();
mat sub1 = mat(auxmem[startIndex], n_rows, n_cols, false, false);

但是对于非连续的视图,不能这样做。 在阅读了关于subview和subview_elem2的头文件后,我找到了另一种方法来完成它。

subview_elem2<unsigned, umat, umat> sub1 = mat1.submat(v, v);//non-contiguous index
subview<unsigned> sub2 = mat2.submat(1, 1, 2, 2);            //contiguous index

更改sub1可能会影响mat1,而更改sub2可能会影响mat2,这似乎是达到目标的更好方式。

sub1sub2不是Mat<double>的类型,因此无法对其进行大量操作。是否有任何体面的方法来生成具有相同内存的非连续子视图?谢谢。

0 个答案:

没有答案