2016-08-09 3 views
-4

Я хотел бы выбрать часть вектора в C++ с библиотекой Eigen?Выберите часть вектора с C++ и Eigen

Я имею в виду, если у меня есть этот вектор:

VectorXd v(6); 
v << 1, 2, 3, 8, 1, 2; 

Есть функция, которая возвращает этот вектор:

a << 2, 8, 2; 

?

Потому что я знаю, как выбрать только часть вектора, но только с шагом одного не двух.

ответ

2

Нет функции, которая делает эту супер конкретную вещь. Если бы это произошло, вероятно, было бы меньше eigen block operations. Лучше всего будет написать свою собственную функцию. Что-то похожее на это:

void addConsecutiveSpacedElements(VectorXd &out, const VectorXd &in, int start, int space) { 
    int index = 0; 
    for (int in_index = start, in_index < in.size(); in_index += space) { 
     out[index++] = in[in_index]; 
    } 
} 

... 

addConsecutiveSpacedElements(a, v, 1, 2); 

Примечания: Это, по сути псевдо-код и, следовательно, не имеет проверки и т.д. Это также непроверенная ошибки.

Смежные вопросы