2015-11-19 3 views
2

У меня есть два Eigen::MatrixXd, и они всегда имеют один ряд. Входная матрица равна A, и я хочу скопировать эту матрицу в другую матрицу B, но количество столбцов между матрицами может быть разным.Как скопировать собственную матрицу

Ниже приведен пример:

A 
0.5 

И мне нужно, чтобы создать B матрицу 1 строк и 4 столбцов, так что это будет:

B 
0.5 0.5 0.5 0.5 

Но если A является:

A 
1 0.5 

Тогда B будет

B 
1 0.5 1 0.5 

Как я могу это сделать?

ответ

5

Вы можете реплицировать матрицу с помощью функции (дождаться ее) replicate. Первый параметр - сколько раз повторять строки, второе - количество повторений столбцов.

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

int main() 
{ 
    Eigen::MatrixXd a(1, 2), b; 
    a << 1, 0.5; 
    b = a.replicate(1, 2); 
    std::cout << a << "\nbecomes:\n" << b << std::endl; 

    return 0; 
} 

дает

1 0,5
становится:
1 0,5 1 0,5

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