Eigen: Доступ к рассеянному элементу в матрице

В MATLAB я могу выбрать разбросанную подматрицу, например:

A = [1 ,2 ,3;4,5,6;7,8,9]
A([1,3],[1,3]) = [1,3;7,9]

Есть ли умный способ сделать это с Eigen?

1

Решение

Не в общем виде, но если ваш шаблон доступа регулярный, вы можете использовать Eigen :: Map с соответствующими шагами:

#include <Eigen/Core>
#include <iostream>

int main(int argc, char *argv[])
{
Eigen::Matrix3d A;

A << 1, 2, 3, 4, 5, 6, 7, 8, 9;

std::cout << Eigen::Map<Eigen::Matrix2d, 0, Eigen::Stride<6, 2> >(A.data());
return 0;
}

Увидеть
http://eigen.tuxfamily.org/dox/classEigen_1_1Stride.html

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]