问题标签 [eigen3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2853 浏览

eigen3 - Eigen3 将矩阵展平为向量

在 MATLAB 中,我可以执行以下操作

要得到:

我将如何使用 Eigen3 矩阵执行此操作?

0 投票
0 回答
834 浏览

c++ - 特征稀疏矩阵乘法的分割错误

计算两个稀疏矩阵的乘积时出现问题。这是程序:

x 是大小为 (k,1) 的矩阵。adj_mat1 是大小为 nxn 的矩阵,adj_mat2 是大小为 mxm 的矩阵。它们都是对称的。首先,我必须将 x 重新缩放为大小为 (nxm) 的矩阵 Y(通过使用前 n 个元素作为第一列,第二个 n 作为第二列,依此类推。之后矩阵 adj_mat1*Y*adj_mat2^T 有计算。然后必须再次通过将彼此下方的所有列写入向量来对该结果进行向量化。

在将 adj_mat1 与 Y 相乘时出现分段错误。

仅当 adj_mat1 和 adj_mat 2 的大小不同时才会出现此问题。

如果您需要更多信息,请询问。

先感谢您。

亚历克斯

解决方案:

问题是值的插入。我不得不更改插入语句中的 quot 和 rem。现在它可以工作了

0 投票
1 回答
3425 浏览

c++ - 从 Eigen::VectorXd 获取矩阵视图/块而不复制(共享内存)

有谁知道如何从 Eigen::VectorXf 中提取可以解释为特定 Eigen::MatrixXf 而不复制数据的块的好方法?(向量应该包含几个扁平矩阵)

例如类似的东西(伪代码):

目的很简单,就是让多个表示指向内存中的相同数据。

这可以通过提取子矩阵视图并重塑它们来完成,例如在 python/numpy 中。

我不知道 Eigen 是否支持 Eigen::Block 的 reshape 方法。

我猜,Eigen::Map 非常相似,只是它需要普通的 c 数组/原始内存。(链接:Eigen::Map)。

克里斯

0 投票
1 回答
95 浏览

c++ - 将 .block() 与复矩阵特征库一起使用

当我想block()MatrixXcdIn 和一起使用时levyhorni

是正确的还是复杂的每个部分都是正确的?

和同样的.imag();

0 投票
1 回答
265 浏览

c++ - 没有制定目标的规则。这是什么?

我应该怎么办?

另一个问题是路径是什么"/usr/include/eigen3/Eigen/src/Core/../Plugins/"意思,两个点意味着什么?

0 投票
1 回答
6608 浏览

c++ - How to compile a C++ program using eigen without specifying the -I flag?

I have the following test program using eigen:

and I can compile it with g++ -I/usr/include/eigen3/ test1.cpp.

However, the compile command doesn't work if I don't specify the include flag. This seems strange to me because I thought that any headers under /usr/include will be picked up automatically by the compiler (e.g. Boost headers, also located under /usr/include, work perfectly fine without having to tell the compiler where to look for them). What changes do I need to make to the eigen setup so I don't have to specify the -I flag in the compile command?

0 投票
1 回答
541 浏览

eigen - 如何使用特征密集矩阵添加特征稀疏矩阵?

Eigen 文档表明提供了对常见 Sparse + Dense 操作的支持,但我找不到任何详细示例。

例如:

给了我以下我无法解决的错误:

0 投票
1 回答
179 浏览

templates - 逗号初始化列表的可变参数?

我想有一个类,它有一个构造函数,它接受可变数量的争论,并通过以某种方式解包到数组支持的逗号初始值设定项列表来填充数组,这里是示例:

这种逗号初始化方法尤其适用于 ArrayType 与 Eigen::Matrix 类 ( arr << 1,2,3;) 之间的关系。我想知道以下是否可行,如果有其他优雅的方式来填充数组,我们可以使用索引运算符 (i) 到第 i 个元素:-)

非常感谢 :)

0 投票
1 回答
10541 浏览

c++ - 如何有效地提取 Eigen3 库中复杂矩阵的实部/虚部?

我在 Eigen3 库中有一些复杂、密集的向量/矩阵,我想将实部和虚部提取到单独的数组中。在 Matlab 中,我可以做类似的事情

预期会产生

Eigen3中是否有类似real()imag()Matlab函数的东西?

现在,我唯一知道会起作用的是类似于

它可以工作,我什至可以把它放在一个函数中,但是我不得不自己做循环矢量化、展开等,我必须制作一个额外的副本。

我希望能够做的是Map<MatrixXd>用适当的步幅包裹几个cplxFoo以获得真实和想象的部分。但问题是MatrixXcdare的元素std::complex<double>,我不确定它的布局是什么。我的猜测是,std::complex<T>它的布局本质上是struct {T real; T imag;};这样的,当你制作一个数组时,实部和虚部是紧密排列和交错的std::complex<T>(这似乎也是这个 SO 问题的共识),但是 C++ 标准能保证吗?AFAICT,一个兼容的 C++ 编译器可以像这样struct {T imag; T real;};(注意改变的顺序),或者更奇特的东西

那么,是否可以Map<MatrixXd>以适当的步幅包裹几个cplxFoo?如果是这样,我该如何正确设置步幅?

或者,有没有办法让 Eigen 的复杂数据类型为实部和虚部使用单独的内存块?

对于它的价值,我需要这样做的原因是因为我需要将 Eigen 库与 MATLAB 接口,它只能处理实部和虚部的单独数组,而不是以任何方式交错。

0 投票
1 回答
357 浏览

c++ - 为 Xcode5 安装 Eigen3

我希望我不会被否决,但是我在网上和 Eigen wiki 上进行了搜索,但我找不到有关如何安装 Eigen3 以在 Xcode5 上使用它的说明。

我下载了 tar 文件并解压它,但后来我不知道该去哪里。