我想知道是否有一种有效而简洁的方法来通过向量对Armadillo C ++矩阵的每一行(或列)进行逐元素乘法。行(或列)和向量的大小相同。
例如,IF 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;
}
答案 0 :(得分:3)
从Armadillo 5.6版开始,.each_col()
和.each_row()
方法被扩展为处理不合适的操作。因此,建议的方法
m.each_row() % v.t();
答案 1 :(得分:2)
看起来你正在使用错误的运算符。根据{{3}}的文档,您需要指定就地操作(例如+ =, - =,/ =,%=)。换句话说,使用%=代替%,如下所示:
m.each_row() % v.t(); // wrong
m.each_row() %= v.t(); // right
除了就地操作外,.each_row()和.each_col()的唯一允许操作本身就是“=”。