gpt4 book ai didi

c++ - 在 Eigen 中计算 SparseMatrix 1-范数、Inf-范数的有效方法

转载 作者:太空宇宙 更新时间:2023-11-04 13:04:53 26 4
gpt4 key购买 nike

在 Eigen 库中,我知道有 visitorsreductions 用于密集的 Eigen::Matrix 类,我可以有效地使用它们来计算他们的 1-norm, inf-norm, etc. 是这样的:

Eigen::MatrixXd A;
...
A.colwise().lpNorm<1>().maxCoeff();
A.rowwise().lpNorm<1>().maxCoeff();
// etc.

现在我有了稀疏 Eigen::SparseMatrix 类。在这种情况下,我如何有效地计算这些范数?

最佳答案

您可以使用带有 vector 1 的乘积来计算 colwise/rowwise 1-范数:

(Eigen::RowVectorXd::Ones(A.rows()) * A.cwiseAbs()).maxCoeff();
(A.cwiseAbs() * Eigen::VectorXd::Ones(A.cols()).maxCoeff();

检查生成的程序集,看看它是否针对您的目的进行了充分优化。如果没有,或者如果您需要其他 lpNorm,您可能需要编写两个带有稀疏迭代器的嵌套循环。

关于c++ - 在 Eigen 中计算 SparseMatrix 1-范数、Inf-范数的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42874976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com