C++ Armadillo 模数函数

3
什么是在c++的Armadillo中对向量或矩阵执行取模运算的最佳方法
向量和矩阵类重载了%运算符以执行逐元素乘法。但尝试使用它会产生invalid operands错误。 我原本期望这样做能够实现取模运算。
uvec a = {0, 1, 2, 3};
uvec b = a % 2;
cout << "b" << endl;

以下是“would yield”的结果:
b:
    0
    1
    0
    1

你需要逐个元素地进行操作(例如使用循环)。 - πάντα ῥεῖ
1个回答

5

运算符“%”用于逐元素矩阵乘法。你需要创建自己的函数:

/**
 * Extend division reminder to vectors
 *
 * @param   a       Dividend 
 * @param   n       Divisor
 */
template<typename T>
T mod(T a, int n)
{
    return a - floor(a/n)*n;
}   

不错的想法——你应该注意到它需要使用arma::floor函数,并且明确指出它需要使用Armadillo向量类型,而不是std::vector - Brian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接