- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Eigen
计算 SVD(奇异值分解)。 C
是一个 27x18 矩阵,秩为 15。
JacobiSVD<MatrixXd> svd( C, ComputeFullV | ComputeFullU );
cout << svd.computeU() << endl;
cout << svd.computeV() << endl;
MatrixXd Cp = svd.matrixU() * svd.singularValues().asDiagonal() * svd.matrixV().transpose();
MatrixXd diff = Cp - C;
PRINT_MAT( "diff", diff );
PRINT_MAT
只是一个cout
。令人惊讶的是,我看到 diff 的某些值是非常大的数字,例如 4.0733184565807887e+250
。
我会不会做错了什么?
最佳答案
如果您查看矩阵元素的大小,您会注意到 svd.matrixU()
是 18x18,svd.singularValues()
是 18,并且svd.matrixV()
是 27x27。当您编写 svd.matrixU() * svd.singularValues().asDiagonal()
时,结果是一个无法乘以 svd.matrixV()
的 18x18 矩阵。您已经定义了禁用边界检查的 -DNDEBUG。您看到的随机数是分配之前内存中的内容。您可以使用以下代码解决此问题:
MatrixXd res(C.rows(), C.cols());
res.setZero();
res.topLeftCorner(C.rows(), C.rows()) = (svd.matrixU() * svd.singularValues().asDiagonal());
MatrixXd Cp = res * svd.matrixV().transpose();
MatrixXd diff = Cp - C;
cout << "diff:\n" << diff.array().abs().sum();
正如 ggael 指出的那样,您可以要求只计算薄矩阵,这看起来像:
#include <Eigen/Core>
#include <Eigen/SVD>
#include <iostream>
using namespace Eigen;
using std::cout;
int main()
{
MatrixXd C;
C.setRandom(27,18);
JacobiSVD<MatrixXd> svd( C, ComputeThinU | ComputeThinV);
MatrixXd Cp = svd.matrixU() * svd.singularValues().asDiagonal() * svd.matrixV().transpose();
MatrixXd diff = Cp - C;
cout << "diff:\n" << diff.array().abs().sum() << "\n";
return 0;
}
关于c++ - Eigen 雅可比 SVD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34392115/
现在我使用 Jacoco 来了解整个测试套件的覆盖率,但我需要按测试用例分解覆盖率信息。 我需要创建一个程序来执行此操作,因为我们需要自动化大型套件。我想这应该通过使用 API 来完成... 有办法做
我有一个包含多个模块的 Java-Gradle 项目,这意味着多个 build.gradle 文件和多个测试文件夹。 我有一个主 build.gradle,我成功地将所有多 jacoco 报告聚合到一
我有一个 Maven 项目,我想使用 jacoco 进行代码覆盖。这是我的 pom 的相关部分 org.jacoco
当我运行 gradlew test jacocoTestReport 任务 jacocoTestReport 运行并且我得到一份测试报告。 当我运行 gradlew integTest jacocoT
尝试使用离线检测通过 jacoco 获取覆盖范围(无法使用即时检测:由于 powermock 测试用例)的 Maven 项目。将 jacocoagent.jar 添加到 Surefire 插件的类路径
我是一名优秀的程序员,十分优秀!