8

MATLAB では、行列/配列から何らかの条件を満たす値を切り出すことが一般的です (論理インデックスと呼ばれます)。

vec = [1 2 3 4 5];
condition = vec > 3;
vec(condition) = 3;

Eigenでこれを行うにはどうすればよいですか? これまでのところ、私は持っています:

Eigen::Matrix<bool, 1, 5> condition = vec.array() > 3;
4

2 に答える 2

13

これを試してください:

#include <iostream>
#include <Eigen/Dense>

int main()
{
    Eigen::MatrixXi m(1, 5);
    m << 1, 2, 3, 4, 5;
    m = (m.array() > 3).select(3, m);
    std::cout << m << std::endl;

    return 0;
}
于 2013-04-27T15:24:53.190 に答える
0

同様の質問への回答で指摘されているように、 Eigenを使用した部分行列とインデックス、 libigl はこの機能を Eigen に追加します。

igl::slice(A,indices,B);

に等しい

B = A(indices)
于 2016-07-13T21:15:56.943 に答える