1
我對Eigen相對較新,在特徵中使用稀疏矩陣時遇到以下問題。特徵庫,使用稀疏矩陣的簡單線性代數運算增加分配的大小
當我使用下面的代碼時,變量C的分配大小在加法後增加到20。我失去了爲什麼會發生這種情況。
Eigen::SparseMatrix<double> A(10, 1);
A.reserve(Eigen::VectorXi::Constant(1,3));
A.coeffRef(2, 0) = 2;
A.coeffRef(3, 0) = 3;
A.coeffRef(7, 0) = 7;
Eigen::SparseMatrix<double> B(10, 1);
B.reserve(Eigen::VectorXi::Constant(1,3));
B.coeffRef(0, 0) = 0;
B.coeffRef(1, 0) = 1;
B.coeffRef(8, 0) = 8;
Eigen::SparseMatrix<double> C(10, 1);
C.reserve(Eigen::VectorXi::Constant(1,6));
C = A + B;
感謝您花時間回覆。 因此,在您的意見和經驗中,您是否知道如何在不浪費我所有的記憶的情況下繼續下去?我的矩陣並不總是N×1。因此,我選擇使用列矩陣而不是稀疏向量。 – Ashesh
您是否嘗試使用'temp.reserve(src.nonZeroEstimate())修補本地特徵安裝;'而不是我引用的行? – chtz
我不想弄亂源代碼。在稀疏矩陣操作之後,我最終使用.squeeze功能來控制內存使用情況。 – Ashesh