gpt4 book ai didi

C++ Armadillo 访问三角矩阵元素

转载 作者:搜寻专家 更新时间:2023-10-31 02:23:44 28 4
gpt4 key购买 nike

访问 Armadillo 矩阵的上三角或下三角元素的最有效(即平衡内存和速度)方法是什么?我知道我可以为元素提供一个整数 vector ,但随着矩阵变得非常大,我想避免携带另一个大 vector 。或者有没有一种快速创建下/上三角索引的有效方法?

例如 5x5 矩阵

// C++11 Initialization
arma::mat B = { 1, 2, 3, 4, 5,
6, 7, 8, 9, 10,
11, 12, 13, 14, 15,
16, 17, 18, 19, 20,
21, 22, 23, 24, 25 };
B.reshape(5,5);


// the matrix
//1 6 11 16 21
//2 7 12 17 22
//3 8 13 18 23
//4 9 14 19 24
//5 10 15 20 25

我想拉动结果 vector 所在的下三角中的元素:

2 3 4 5 8 9 10 14 15 20

我现在能想到的唯一解决方案是使用 uvec 对象。例如:

arma::uvec idx {1,2,3,4,7,8,9,13,14,19);
arma::vec lower_elems = B.elem(idx);

最终对象不需要是 vector 。我只需要能够访问元素以进行各种比较。作为一个简单的例子,假设我想检查它们是否都等于 0。

最佳答案

检查下三角中的所有元素是否都为零:

bool all_zero = all( X.elem(find(trimatl(X))) == 0 );

关于C++ Armadillo 访问三角矩阵元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28969869/

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