Я схожу с ума от этого: я просто использовал SVD таким образом:
Eigen::BDCSVD<Eigen::MatrixXcd> svd(A, Eigen::ComputeThinU | Eigen::ComputeThinV);
const Eigen::MatrixXcd U = svd.matrixU();
const Eigen::MatrixXcd V = svd.matrixV();
const Eigen::VectorXd S = svd.singularValues();
После того, как мне нужно прочитать некоторые значения, как здесь:
valsingn = S/S(0);
или здесь:
tmp_var = U(i, j);
Теперь я хотел бы удалить копии U V
а также S
чтобы избежать потери памяти (мои матрицы огромны 262144x576
), но я не знаю, как получить доступ U
от svd.matrixU()
,
просто пишу svd.matrixU(i, j)
не работает …
Итак, мой вопрос, как я могу получить доступ U S V
не копируя их?
Задача ещё не решена.
Других решений пока нет …