<small id='8apGM'></small><noframes id='8apGM'>

    1. <tfoot id='8apGM'></tfoot>
    2. <legend id='8apGM'><style id='8apGM'><dir id='8apGM'><q id='8apGM'></q></dir></style></legend>
    3. <i id='8apGM'><tr id='8apGM'><dt id='8apGM'><q id='8apGM'><span id='8apGM'><b id='8apGM'><form id='8apGM'><ins id='8apGM'></ins><ul id='8apGM'></ul><sub id='8apGM'></sub></form><legend id='8apGM'></legend><bdo id='8apGM'><pre id='8apGM'><center id='8apGM'></center></pre></bdo></b><th id='8apGM'></th></span></q></dt></tr></i><div id='8apGM'><tfoot id='8apGM'></tfoot><dl id='8apGM'><fieldset id='8apGM'></fieldset></dl></div>

          <bdo id='8apGM'></bdo><ul id='8apGM'></ul>
      1. 使用 Eigen C++ 库将每个矩阵列与每个向量元素相乘

        时间:2023-09-18
        <tfoot id='jjn4d'></tfoot>
          <tbody id='jjn4d'></tbody>

        1. <i id='jjn4d'><tr id='jjn4d'><dt id='jjn4d'><q id='jjn4d'><span id='jjn4d'><b id='jjn4d'><form id='jjn4d'><ins id='jjn4d'></ins><ul id='jjn4d'></ul><sub id='jjn4d'></sub></form><legend id='jjn4d'></legend><bdo id='jjn4d'><pre id='jjn4d'><center id='jjn4d'></center></pre></bdo></b><th id='jjn4d'></th></span></q></dt></tr></i><div id='jjn4d'><tfoot id='jjn4d'></tfoot><dl id='jjn4d'><fieldset id='jjn4d'></fieldset></dl></div>

          • <legend id='jjn4d'><style id='jjn4d'><dir id='jjn4d'><q id='jjn4d'></q></dir></style></legend>
              <bdo id='jjn4d'></bdo><ul id='jjn4d'></ul>
              1. <small id='jjn4d'></small><noframes id='jjn4d'>

                  本文介绍了使用 Eigen C++ 库将每个矩阵列与每个向量元素相乘的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我需要使用 Eigen C++ 库 将每个矩阵列乘以每个向量元素.我试过 colwise 没有成功.

                  I need to multiply each matrix column by each vector element using Eigen C++ library. I tried colwise without success.

                  示例数据:

                  Eigen::Matrix3Xf A(3,2); //3x2
                  A << 1 2,
                       2 2,
                       3 5;
                  
                  Eigen::Vector3f V = Eigen::Vector3f(2, 3);
                  
                  //Expected result
                  C = A.colwise()*V;
                  
                  //C
                  //2 6,
                  //4 6,
                  //6 15
                  //this means C 1st col by V first element and C 2nd col by V 2nd element.
                  

                  矩阵 A 可以有 3xN 和 V Nx1.含义 (cols x rowls).

                  Matrix A can have 3xN and V Nx1. Meaning (cols x rowls).

                  推荐答案

                  我会这样做:

                  Eigen::Matrix3Xf A(3, 2);  // 3x2
                  A << 1, 2, 2, 2, 3, 5;
                  
                  Eigen::Vector3f V = Eigen::Vector3f(1, 2, 3);
                  
                  const Eigen::Matrix3Xf C = A.array().colwise() * V.array();
                  std::cout << C << std::endl;
                  

                  示例输出:

                   1  2
                   4  4
                   9 15
                  

                  说明

                  你很接近,诀窍是使用 .array() 来做广播乘法.

                  colwiseReturnType 没有 .array() 方法,所以我们必须在 A 的数组视图上做我们的 colwise 恶作剧.

                  colwiseReturnType doesn't have a .array() method, so we have to do our colwise shenanigans on the array view of A.

                  如果你想计算两个向量的元素乘积(最酷的酷猫称之为 Hadamard 产品),你可以做

                  If you want to compute the element-wise product of two vectors (The coolest of cool cats call this the Hadamard Product), you can do

                  Eigen::Vector3f a = ...;
                  Eigen::Vector3f b = ...;
                  Eigen::Vector3f elementwise_product = a.array() * b.array();
                  

                  以上代码以列方式执行的操作.

                  Which is what the above code is doing, in a columnwise fashion.

                  要解决行情况,您可以使用 .rowwise(),并且您需要一个额外的 transpose() 以使事情适合

                  To address the row case, you can use .rowwise(), and you'll need an extra transpose() to make things fit

                  Eigen::Matrix<float, 3, 2> A;  // 3x2
                  A << 1, 2, 2, 2, 3, 5;
                  
                  Eigen::Vector2f V = Eigen::Vector2f(2, 3);
                  
                  // Expected result
                  Eigen::Matrix<float, 3, 2> C = A.array().rowwise() * V.transpose().array();
                  std::cout << C << std::endl;
                  

                  示例输出:

                   2  6
                   4  6
                   6 15
                  

                  这篇关于使用 Eigen C++ 库将每个矩阵列与每个向量元素相乘的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:在 M X N 矩阵中查找 m x n 子矩阵的最快方法 下一篇:有没有办法在 gdb 中打印犰狳矩阵?

                  相关文章

                  最新文章

                  • <bdo id='OM30q'></bdo><ul id='OM30q'></ul>

                • <i id='OM30q'><tr id='OM30q'><dt id='OM30q'><q id='OM30q'><span id='OM30q'><b id='OM30q'><form id='OM30q'><ins id='OM30q'></ins><ul id='OM30q'></ul><sub id='OM30q'></sub></form><legend id='OM30q'></legend><bdo id='OM30q'><pre id='OM30q'><center id='OM30q'></center></pre></bdo></b><th id='OM30q'></th></span></q></dt></tr></i><div id='OM30q'><tfoot id='OM30q'></tfoot><dl id='OM30q'><fieldset id='OM30q'></fieldset></dl></div>
                  1. <tfoot id='OM30q'></tfoot>

                    <small id='OM30q'></small><noframes id='OM30q'>

                    <legend id='OM30q'><style id='OM30q'><dir id='OM30q'><q id='OM30q'></q></dir></style></legend>