2013-07-13 100 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