犰狳中的矢量化功率函数
Vectorized power function in armadillo
犰狳库有一个函数pow(A, p)
,可以将矢量/矩阵A
的所有元素提升到幂p
。 犰狳、标准或其他地方是否有执行元素级功率的功能? 也就是说,将向量A
中的每个元素提高到向量p
中的相应幂?
犰狳中没有这种预定义的功能。
这是一个快速的自制版本,但不会受益于犰狳的任何延迟表达评估模板功能:
#include <cassert>
#include <cmath>
#include <armadillo>
#include <iostream>
template<class Object>
Object elementwise_pow(const Object& base, const Object& p) {
assert(base.n_elem == p.n_elem);
Object result;
result.copy_size(base);
for (std::size_t i = 0; i < result.n_elem; ++i) {
result[i] = std::pow(base[i], p[i]);
}
return result;
}
int main() {
arma::mat m(3,3);
m.fill(2.);
arma::mat p(3,3);
p << 1 << 2 << 3 << arma::endr
<< 4 << 5 << 6 << arma::endr
<< 7 << 8 << 9 << arma::endr;
arma::mat r = elementwise_pow(m, p);
r.print(std::cout);
return 0;
}
优化编译器也应该轻松地对此代码进行矢量化处理。
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用不带参数的函数访问结构元素
- 代码在main()中运行,但在函数中出现错误
- 内置函数可查看CPP中的成员变量
- 犰狳中的矢量化功率函数
- 用c++的递归函数计算功率
- 对如何使用pow()函数来负功率的东西感到困惑