2013-07-13 127 views
2

我正在使用C++中的Armadillo库并且有一个矩阵A。我如何获取0/1 matrix-B其中B_{ij} = 1 iff. A_{ij}>0如何在Armadillo矩阵中执行元素布尔操作

我真的无法承担在我的程序中编写for循环,因为它在四层之内。

谢谢!

+1

犰狳库最有可能实现这样一个函数作为一个循环(希望矢量化至少它的一部分)。如果你不能在Armadillo中找到这个函数,如果你自己用循环来实现它,我不认为你会变得更糟。 – PureW

回答

1

这是通过犰狳的relational operators完成:

mat A = randu<mat>(5,5) - 0.5; 

umat B = (A > 0); 

注意,B有型 “UMAT” 而不是 “垫”。前者包含无符号整数元素。

+0

有没有一种方法可以从'A'访问元素,其中'B'是1?我已经习惯了Python中的NumPy,可以这样做:'A [B] = -1'。但是,我无法在犰狳中找到它的等价物。 –

+0

@AdeelAhmad - 请参阅Armadillo中的[.elem()](http://arma.sourceforge.net/docs.html#submat)函数 – mtall