Eigen中稀疏矩阵与稠密向量相乘触发静态断言错误是什么原因?
错误原因
Eigen::SparseMatrix<double> 类型的稀疏矩阵和 Eigen::VectorXd 类型的稠密向量做乘法运算,返回的结果是稠密向量类型,你代码中把结果赋值给了 Eigen::SparseMatrix<double> 类型的deformed变量,类型不匹配触发了Eigen的静态断言报错。
修复代码
把deformed的类型修改为对应的稠密向量类型Eigen::VectorXd即可:
Eigen::SparseMatrix<double> bijection(2 * face_count, 2 * vert_count); /* 初始化 */ Eigen::VectorXd toggles(2 * vert_count); toggles.setOnes(); // 修正:将结果变量类型改为稠密向量VectorXd Eigen::VectorXd deformed; deformed = bijection * toggles;
补充说明
Eigen官方文档说明的稀疏矩阵与向量乘法支持是正确的,只要参与运算的对象和接收结果的对象类型匹配即可正常编译运行。
内容的提问来源于stack exchange,提问作者Makogan
相关产品推荐
相关产品推荐

