特征::向量;在函数中使用 Eigen::Matrix3f 的值初始化向量,大于 4 个条目
Eigen::Vector; Initialize Vector with Values of Eigen::Matrix3f in a function, bigger than 4 entries
im 有兴趣建立一个 1x6 向量,我想将其与另一个 1x6 向量连接到 2x6 矩阵。我知道这将是一个行向量,因此我想初始化一个 Eigen::RowVectorXf vec,但也许一个简单的Eigen::VectorXf就足够了,idk。
(进一步,这应该连接到一个更大的2Nx6矩阵,用于SVD操作(
我的输入是特征类型的 3x3 矩阵::矩阵3f 垫
我想使用一个函数,因为我总共有 ~20 个(数字不是那么重要(输入矩阵,对于每个矩阵,我必须以这种方式构建 2 个向量(是的,最终这将是一个 40x6 矩阵(:
问题:
如何使用mat条目初始化vec,特别是如果它不仅是条目,而且是条目的乘积或条目的乘积总和。
例:
// Inputvalue Mat, which i have
Eigen::Matrix<float, 3, 3> mat = [ 1 2 3; 4 5 6; 7 8 9];
// Outputvalue vec, which i need
Eigen::RowVectorXf = ( mat(0,0)*mat(1,1), mat(1,2)*mat(2,1)+mat(1,0)*mat(0,1), .... );
我的 mat(col,row( 输入是任意的,但我有一个col,row的模式,我想测试它,因此我想建立这些向量。我已经在 MATLAB 中完成了,但我有兴趣在 C++ 中使用 Eigen 来做。
RowVectorXf build_Vec(Eigen::Matrix3f Mat)
{
Eigen::RowVectorCf vec = ( ..., ..., ..., ..., ..., ...;);
return vec;
}
有人给我一些提示吗? 提前致谢
为了在运行时动态填充大矩阵,你不能使用 CommaInitializer(不滥用它(。只需分配一个足够大的矩阵并设置单独的块:
Matrix<float, Dynamic, 6> Vges(2*views, 6);
for(int i=0; i<views; ++i) {
Matrix<float, 2, 6> foo;
foo << 1,2,3,4,5,6,7,8,9,10,11,12; // or combine from two Matrix<float, 1, 6>
Vges.middleRows<2>(2*i) = foo;
}
您也可以考虑即时计算Vges.transpose() * Vges
(即,通过将foo.transpose()*foo
累积到6x6矩阵中,并进行自伴随特征分解而不是SVD(也许使用双精度而不是单精度(。
Eigen::Matrix<double, 6, 6> VtV; VtV.setZero();
for(int i=0; i<views; ++i) {
foo = ...;
VtV.selfadjointView<Upper>().rankUpdate(foo);
}
相关文章:
- 为什么我在向量初始化时收到此错误?
- 使用向量初始化参数化构造函数的对象数组
- C++向量初始化遗传算法的代理向量
- shared_ptr类的向量的向量初始化问题
- 如何实现使用 gcc-4.4 编译的大向量初始化?
- 使用向量初始化C++中的链表
- C++ 中的向量初始化
- 如何使用嵌套初始化构造函数中的一维向量初始化矩阵
- std::另一个函数中的向量初始化
- 理解向量初始化时出现问题
- 静态常量 std::<char>没有堆的向量初始化?
- 向量初始化在 C++ 类中失败
- 具有从特定范围的随机数初始化特征矩阵或向量初始化特征矩阵或向量的有效方法
- 关于向量初始化的一些问题
- 了解C 中的向量初始化
- 设置::使用数字中的引号进行向量初始化
- VS2010中的向量初始化
- C++:构造函数中的向量初始化
- 如何从向量初始化数组?(如何将指针强制转换为数组?)
- 给我一个向量初始化的提示或(答案)