Как использовать библиотеку eigen для вычисления нижнего треугольника входной матрицы без изменения порядка столбцов?
например для матрицы:
A=[1 2 3;4 5 6 ;7 8 9]
Я хочу, чтобы результат был:
1 0 0
4 0 0
7 0 0
Как использовать библиотеку eigen для вычисления нижнего треугольника входной матрицы без изменения порядка столбцов?
например для матрицы:
A=[1 2 3;4 5 6 ;7 8 9]
Я хочу, чтобы результат был:
1 0 0
4 0 0
7 0 0
Ваш текст и ваш пример не совпадают. Я рассмотрю три возможных способа понять ваш вопрос. Во-первых, мы настроим матрицу:
Matrix3d mat;
mat << 1, 2, 3, 4, 5, 6, 7, 8, 9;
Если вам нужна фактическая нижняя треугольная матрица, вы должны использовать:
std::cout << Matrix3d(mat.triangularView<Lower>()) << "\n\n";
или похожие. Результат:
1 0 0
4 5 0
7 8 9
Обратите внимание на 5,8,9, которых нет в вашем примере. Если вам просто нужен самый левый столбец, вы должны использовать:
std::cout << mat.col(0) << "\n\n";
который дает
1
4
7
Если (как показывает вторая часть вашего примера) вы хотите mat * [1, 0, 0]
, вы можете либо выполнить матричное умножение (не рекомендуется), либо просто построить результат:
Matrix3d z = Matrix3d::Zero();
z.col(0) = mat.col(0);
std::cout << z << "\n\n";
который дает тот же результат, что и ваш пример:
1 0 0
4 0 0
7 0 0