Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 特征:屏蔽阵列_C++_Eigen - Fatal编程技术网

C++ 特征:屏蔽阵列

C++ 特征:屏蔽阵列,c++,eigen,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) 其中,arrayB是一个行向量,包含且仅包含arrayA>5的所有元素 我可以找到类似的请求,但在2011年之后没有任何更新的答案

是否可以像在Matlab中一样在Eigen中屏蔽阵列

差不多

ArrayXd arrayA = ArrayXd::Random(10, 5);
ArrayXi mask = ArrayXi::Zero(arrayA.rows(), arrayA.cols());
mask = arrayA > 5;
ArrayXd arrayB = arrayA(mask)
其中,arrayB是一个行向量,包含且仅包含arrayA>5的所有元素


我可以找到类似的请求,但在2011年之后没有任何更新的答案(,)

我在这里找到了一些参考资料

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

B = A.unaryExpr(bind1st(mem_fun( 
    static_cast<VectorXi::Scalar&(VectorXi::*)(VectorXi::Index)>
    (&VectorXi::operator())), &IM)).eval();
B=A.unaryExpr(bind1st(mem_-fun(
静态浇铸
(&VectorXi::operator()),&IM)).eval();
但它不是一个通用的解决方案(实际上我无法尝试)

来自


但是结果将充满0,因此这与使用(arrayA>5)得到的结果相同。cast()无论如何,对于matlab B(A>5)=A(A>5)的等价物很好
(R.array() < s).select(P,Q);  // (R < s ? P : Q)
(arrayA > 5).select(mask, arrayA)