- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果你去this Eigen page ,你会看到你可以初始化 VectorXd
带有 <<
的对象运算符(operator)。您还可以将一些 vector 对象转储到一个大的 VectorXd
中。对象(例如,查看“逗号初始值设定项”一节中的第三个示例)。
我想将几个 vector 转储到一个大 vector 中,但我很难编写适用于任意大小的 vector 集合的代码。以下行不通,我很难以行之有效的方式编写它(这不是双 for 循环)。有什么建议吗?
#include <iostream>
#include <Eigen/Dense>
#include <vector>
int main(int argc, char **argv)
{
// make some random VectorXds
std::vector<Eigen::VectorXd> vOfV;
Eigen::VectorXd first(3);
Eigen::VectorXd second(4);
first << 1,2,3;
second << 4,5,6,7;
vOfV.push_back(first);
vOfV.push_back(second);
// here is the problem
Eigen::VectorXd flattened(7);
for(int i = 0; i < vOfV.size(); ++i)
flattened << vOfV[i];
//shows that this doesn't work
for(int i = 0; i < 7; ++i)
std::cout << flattened(i) << "\n";
return 0;
}
最佳答案
逗号初始值设定项不是那样工作的。您必须从中完全初始化矩阵。相反,分配一个足够大的 vector 并迭代和分配 block 。
#include <iostream>
#include <vector>
#include <Eigen/Dense>
// http://eigen.tuxfamily.org/dox/group__TopicStlContainers.html
#include <Eigen/StdVector>
EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION(Eigen::VectorXd)
int main()
{
// make some random VectorXds
std::vector<Eigen::VectorXd> vOfV;
Eigen::VectorXd first(3);
Eigen::VectorXd second(4);
first << 1,2,3;
second << 4,5,6,7;
vOfV.push_back(first);
vOfV.push_back(second);
int len = 0;
for (auto const &v : vOfV)
len += v.size();
Eigen::VectorXd flattened(len);
int offset = 0;
for (auto const &v : vOfV)
{
flattened.middleRows(offset,v.size()) = v;
offset += v.size();
}
std::cout << flattened << "\n";
}
关于c++ - 将 `Eigen::VectorXd` 的集合合并为一个大的 `Eigen::VectorXd`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47127412/
如果你去this Eigen page ,你会看到你可以初始化 VectorXd带有 #include #include int main(int argc, char **argv) {
我有兴趣初始化 Eigen::VectorXd使用另一个值的 vector Eigen::VectorXd vector ,基于 vector将指出将使用哪些元素的索引。 也就是说, // This
如何在 std::vector 中复制 vector (Eigen::vectorXd)到另一个 std::vector 中的另一个 vector (Eigen::vectorXd) std::vec
我想从一个函数返回一个 Eigen::Vector 并想知道什么是正确的方法。有点像 Eigen::VectorXd& getMesh(int N) { Eigen::VectorXd mes
我是 Eigen 的初学者。我已搜索但未找到此问题的答案。 我有一个双指针数组,即 double** x 我无法控制。它以这种格式出现,我对此无能为力。我想构造一个 Eigen::VectorXd v
我有一个双指针,在其中存储一些数据。 我想直接在指针上创建一个 VectorXd 而无需复制。也就是说,VectorXd 中存储的数据只是指针中存储的数据。它们是共享的。 我知道创建一个 Vector
我有一个 Measurement有两个 Eigen::VectorXd 的对象成员 -- 一个用于 position和另一个velocity . 测量值通过扫描排列在数据集中——即,在每个时间步,一个
Eigen::VectorXd有一个 Scalar operator()(Index i)它返回索引处的系数 i在 vector 中。然而,由于 Eigen::VectorXd是一种特殊类型的 Eig
也许有人知道,Eigen中是否可以转发声明类型MatrixXd & VectorXd? 编译时出现如下错误: /usr/include/eigen3/Eigen/src/Core/Matrix.h:3
我有一个很大的m×n内存块,可以将其视为长度为n #include int main() { const int m = 100; const int n = 70; std::vect
我正在尝试将 std::set 与 Eigen 库中的 VectorXd 一起使用: typedef VectorXd Vec; bool(*fn_pt)(Vec,Vec) = vecCompare;
我正在尝试通过减少 OpenMP 来并行执行以下循环; #define EIGEN_DONT_PARALLELIZE #include #include #include #include #
我想在Eigen中定义一个VectorXd数组,下面是我的代码 void function(VectorXd * b, ...) { [snippet] vectorrows())>
我最近一篇文章中的一位评论者告诉我,我需要更好地利用 C++11 move 语义来处理代码中的瓶颈。以下是需要修复的简化版本。 #include #include #include void m
我正在寻找一种直接、快速的方法来转换 list至 MatrixXd .我该怎么做? Map listV(list) 不编译。 我也在考虑迭代 list并填写MatrixXd必然,但这可能会很慢且不必要
我有一个函数,它所做的就是 Eigen::VectorXd x(%s); x 4000 个参数)上运行它时,一切都很好。但是当我在更大的上做时,我无法编译,我得到了 clang: error: un
以前有人问过类似的问题,在这里: Converting between NumericVector/Matrix and VectorXd/MatrixXd in Rcpp(Eigen) to per
假设我有一个 6 维 Eigen::VectorXd Eigen::VectorXd flat; flat.resize(6); flat M(flat.data(), 3, 2); Eigen::
我有两个 Eigen::VectorXd 对象,A 和 B,具有相同的维度 n。 我想创建一个新的 vector C,这样: 如果 B[i] 是 NaN,则 C[i] = A[i] 否则:C[i] =
我实现了一个比较运算符 operatorbool{return v1 对我不起作用,例如,下面的代码工作正常: #include "Eigen/Dense" #include #include u
我是一名优秀的程序员,十分优秀!