c++ - 用 Eigen 3 计算数组的特征值/向量而不是矩阵
问题描述
我想计算数组而不是矩阵的特征值/向量。
我试过EigenSolver<ArrayXf>
了,但这会产生编译错误。
我可以将数组复制到矩阵。但这是对内存的浪费。
以下代码给出了分段错误。
测试1:
#include <Eigen/Eigen>
using namespace Eigen;
int main() {
ArrayXf A = ArrayXf::Ones(3,3);
EigenSolver<MatrixXf> es(A);
}
结果:
<...>/Eigen/src/Core/util/XprHelper.h:130:
Eigen::internal::variable_if_dynamic<T, Value>::variable_if_dynamic(T)
[with T = long int; int Value = 1]: Assertion `v == T(Value)' failed.
Aborted (core dumped)
我也试过了EigenSolver<MatrixXf> es(A.matrix())
。但这也行不通。
测试2:
#include <Eigen/Eigen>
using namespace Eigen;
int main() {
ArrayXf A = ArrayXf::Ones(3,3);
EigenSolver<MatrixXf> es(A.matrix());
}
结果:
<...>/XprHelper.h:130: Eigen::internal::variable_if_dynamic<T, Value>::variable_if_dynamic(T) [with T = long int; int Value = 1]: Assertion `v == T(Value)' failed.
Aborted (core dumped)
解决方案
问题是这ArrayXf
是一个一维数组,而你想要一个二维数组:ArrayXXf
.
一些历史:我们在引入 Array 之前提出了 VectorXf/MatrixXf 名称,其中没有自然名称来区分 1D 和 2D,因此单 X 与双 XX...
推荐阅读
- sql - 使用 SQL 识别具有开始日期和结束日期的时间段
- r - 在嵌套列表中查找包含子元素的顶级元素
- javascript - 如何在 Cypress 中执行自定义命令?
- javascript - window.location.href 从 2019 年 3 月起在 chrome 中被屏蔽
- html - 使用链接媒体属性加载条件样式表失败
- sql - 加入日历表
- mysql - SQL 查询以选择具有 ID 的多行
- php - Wordpress yoast seo 插件 - 在元描述中解析片段 var
- c# - 你如何将 JWT 传递给服务?
- vue.js - 由于 v-model,Vue js 选择选项未出现