特征:掩盖一个数组

lib*_*lib 8 c++ eigen

是否可以在Matlab中屏蔽Eigen中的数组?

就像是

ArrayXd arrayA = ArrayXd::Random(10, 5);
ArrayXi mask = ArrayXi::Zero(arrayA.rows(), arrayA.cols());
mask = arrayA > 5;
ArrayXd arrayB = arrayA(mask)
Run Code Online (Sandbox Code Playgroud)

其中arrayB是一个行向量,包含所有且只有arrayA> 5的元素

我能找到类似的请求,但没有2011年以后的(任何更新的答案https://forum.kde.org/viewtopic.php?f=74&t=98382,https://forum.kde.org/viewtopic.php?f=74&t = 98093,https ://forum.kde.org/viewtopic.php f = 74 &t = 97652)

use*_*323 7

来自快速参考

(R.array() < s).select(P,Q);  // (R < s ? P : Q)
Run Code Online (Sandbox Code Playgroud)

所以,在你的情况下,它会

(arrayA > 5).select(mask, arrayA)
Run Code Online (Sandbox Code Playgroud)


lib*_*lib 2

我在这里找到了一些参考http://igl.ethz.ch/projects/libigl/matlab-to-eigen.html

对于 B = IM(A),他们建议:

B = A.unaryExpr(bind1st(mem_fun( 
    static_cast<VectorXi::Scalar&(VectorXi::*)(VectorXi::Index)>
    (&VectorXi::operator())), &IM)).eval();
Run Code Online (Sandbox Code Playgroud)

但这不是一个通用的解决方案(实际上我无法尝试)