有没有办法在特征库中设置动态矢量或矩阵?如果没有,是否还有一种方法可以将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>
的操作。
如果我没有意义,或者我的问题不清楚,请告诉我,我会尽可能地澄清。
答案 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
。
MatrixXd
是Matrix
模板的便捷typedef,它使用Dynamic
作为Rows
和Cols
的模板值。它基本上是Matrix<double, Dynamic, Dynamic>
。
因此,您不仅可以拥有动态大小的矢量和矩阵,还可以拥有任意大的固定大小的矢量和矩阵。 Eigen对小矩阵进行了非常好的优化,因此使用固定大小可能会有所帮助。