【问题标题】:Returning locations and values of a sparse matrix in armadillo c++在犰狳c ++中返回稀疏矩阵的位置和值
【发布时间】:2015-03-11 06:48:03
【问题描述】:

如何在 Armadillo C++ 中获取一组非零位置(索引)和稀疏矩阵的值?

到目前为止,我可以轻松地构造一个包含一组位置(作为 umat 对象)和值(作为 vec 对象)的稀疏矩阵:

// batch insertion of two values at (5, 6) and (9, 9)
umat locations;
locations << 5 << 9 << endr
          << 6 << 9 << endr;

vec values;
values << 1.5 << 3.2 << endr;

sp_mat X(locations, values, 9, 9);

如何取回位置?例如,我希望能够做这样的事情:

umat nonzero_index = X.locations()

有什么想法吗?

【问题讨论】:

  • 您的代码有一个错误:不是X(locations, values, 9, 9),而是X(locations, values, 10, 10)。因为 C++ 从 0 开始计数,所以位置 (9,9) 指的是第 10 行和第 10 列。
  • 哦,很好。谢谢!

标签: armadillo


【解决方案1】:

相关的稀疏矩阵迭代器有.row().col()函数:

sp_mat::const_iterator start = X.begin();
sp_mat::const_iterator end   = X.end();

for(sp_mat::const_iterator it = start; it != end; ++it)
  {
  cout << "location: " << it.row() << "," << it.col() << "  ";
  cout << "value: " << (*it) << endl;
  }

【讨论】:

  • 这正是我想要的。谢谢!!
  • 没有直接的方法来获得相同的locationsvalues 数组,可以用于构造sp_mat 吗?正如您所展示的那样,是迭代元素的唯一方法吗?
  • @Szabolcs - 是否可以向 Armadillo 开发人员提交补丁?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 2020-07-24
相关资源
最近更新 更多