jco*_*sco 5 c++ armadillo c++11
我正在寻找一种方法来查找与每列最大值对应的索引.我的目标是避免循环并使用矢量化犰狳函数找到Matlabic解决方案.
这可以使用以下命令在Matlab中轻松完成:[〜,maxIndices] = max(A);
在armadillo中你有成员函数:A.max(row_of_max_val,col_of_max_val); 给出整个矩阵中最大值的位置.
并且独立函数vec M = max(A); 其输出的最大值的每一列的而不是其指数.
但他们都没有做到这一点.
列最大索引可用于以更矢量化的方式编写多个算法.例如,它可以用于维特比解码,或用于k均值聚类.
显然,这个问题可以考虑最小值而不是最大值和行而不是列来推广.
有人在想另类解决方案吗?
最好.
我通常会使用子矩阵视图.这些方面的东西:
using idx_type = arma::uword;
using namespace std;
using namespace arma;
template<typename T>
vector<idx_type>
colwise_max_idx(const Mat<T>& A) {
vector<idx_type> res;
for (idx_type i = 0; i != A.n_cols; ++i) {
idx_type row_idx;
A.col(i).max(row_idx);
res.push_back(row_idx);
}
return res;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2247 次 |
最近记录: |