gpt4 book ai didi

c++ - Armadillo ,在每一列中找到最大索引

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:19:20 26 4
gpt4 key购买 nike

我正在寻找一种方法来找到对应于每列最大值的索引。我的目标是避免循环并使用矢量化 Armadillo 函数找到 Matlabic 解决方案。

这可以在 Matlab 中使用以下命令轻松完成:[~, maxIndices] = max(A);

在 Armadillo 中你有成员函数:A.max( row_of_max_val, col_of_max_val);给出整个矩阵中最大值的位置。

独立函数vec M = max(A);输出每列的最大值,但不输出它们的索引。

但他们都没有做到这一点。

具有列最大值的索引可用于以更加矢量化的方式编写大量算法。例如,它可以用于维特比解码或 k 均值聚类。

显然,这个问题可以通过考虑最小值而不是最大值和行而不是列来概括。

有人在考虑替代解决方案吗?

最好的。

最佳答案

我通常使用子矩阵 View 。沿着这些线的东西:

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;
}

关于c++ - Armadillo ,在每一列中找到最大索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33517374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com