C ++中的Eigen Library是否具有动态矢量或矩阵

时间:2017-01-31 03:21:17

标签: c++ eigen

有没有办法在特征库中设置动态矢量或矩阵?如果没有,是否还有一种方法可以将Eigen库与另一个类vector结合使用?

例如,假设我有一个名为n*1的{​​{1}}矩阵。为简单起见,我们MatrixXd S(n,1);n=3。假设S = 4 2 6中的元素是未来股票价格,并让S成为执行价格。不要担心,您不需要了解选项的术语。现在说我想知道K = 2我们会S的位置,并说我希望将这些位置存储在向量调用S - K > 0中。

显然,根据b的元素,向量S将具有不同的大小。因此,我需要让b成为动态变量。我熟悉的唯一一个类允许这是矢量类,即b

我的问题如下:是否可以将Eigen库和#include <vector>类一起使用?请注意,我将使用我创建的特征库向量和矩阵执行#include <vector>的操作。

如果我没有意义,或者我的问题不清楚,请告诉我,我会尽可能地澄清。

1 个答案:

答案 0 :(得分:2)

是的,确实如此。它出现在&#34; 一个简单的第一个程序&#34; Getting started

#include <iostream>
#include <Eigen/Dense>
using Eigen::MatrixXd;
int main()
{
  MatrixXd m(2,2);
  m(0,0) = 3;
  m(1,0) = 2.5;
  m(0,1) = -1;
  m(1,1) = m(1,0) + m(0,1);
  std::cout << m << std::endl;
}

您需要将大小传递给构造函数,但它的工作方式类似于vector。你也可以稍后resize

MatrixXdMatrix模板的便捷typedef,它使用Dynamic作为RowsCols的模板值。它基本上是Matrix<double, Dynamic, Dynamic>

因此,您不仅可以拥有动态大小的矢量和矩阵,还可以拥有任意大的固定大小的矢量和矩阵。 Eigen对小矩阵进行了非常好的优化,因此使用固定大小可能会有所帮助。