是否可以在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)
来自快速参考
(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)
我在这里找到了一些参考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)
但这不是一个通用的解决方案(实际上我无法尝试)
| 归档时间: |
|
| 查看次数: |
4615 次 |
| 最近记录: |