c++ - Armadillo C++ : Efficient and concise way to multiply every row of a matrix by a vector?

标签 c++ vector matrix armadillo

我想知道是否有一种高效简洁的方法来对 Armadillo C++ 矩阵的每一行(或列)与 vector 进行逐元素乘法。行(或列)和 vector 大小相同。

例如,如果 fmat::each_row()(和/或 each_col())可以用作右值,我想要这样的东西来编译(目前它不会编译):

#include <armadillo>

int main()
{
    using namespace arma;

    fmat m(20, 10);
    fvec v(10); // a column vector

    m.each_row() % v.t(); // Currently a compiler error.

    return 0;
}

最佳答案

从 Armadillo 5.6 版开始,.each_col().each_row() 方法被扩展以处理异地操作。因此,您建议的方法

m.each_row() % v.t();

应该编译,见http://arma.sourceforge.net/docs.html#each_colrow .

关于c++ - Armadillo C++ : Efficient and concise way to multiply every row of a matrix by a vector?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21889566/

相关文章:

c++ - Eclipse C++ 默认 "Hello World"错误

vector - 不重新借用可变切片时在 for 循环中移动错误

javascript - WebGL 2D Canvas 点转换为 3D 世界点

c++ - 特征库 --> 使用来自文件或现有 std::vector<string> 内容的数据初始化矩阵 (c++)

c++ - 在 Qt 中链接 qPDF

c++ - 命名一个文本文件并让它显示使用函数的平均值

c++ - 在内部, vector 的 vector 如何扩展? C++

c++ - 为什么这个 while 循环无论你输入什么都输出同样的东西?

r - 提高 R 中 ifelse-for 循环的速度,同时在循环内填充矩阵

C++ `digits10` 对于 IEEE float 是 6,但第一个不可表示的整数已经有 8 位数字?