Как я могу решить систему линейных уравнений в Python? - PullRequest
0 голосов
/ 17 апреля 2019

Контекст: я работаю над уравнениями проекции .

У меня есть N матрицы проекций (для каждой 2D-точки), форма (3, 4).

Например, скажем P = [p_i] for 1 <= i <= n.

import numpy as np
# p_i were initialised with dummy values
p1 = np.array([[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], dtype=float)
...
pn = np.array([[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], dtype=float)

И тогда у меня есть N 2D точечные координаты (форма (3, 1)) в кадре камеры:

# coords_i were initialised with dummy values for x, y and (z was set to 1 by design) as well
coords_1 = np.array([10, 20, 1], dtype=float)
...
coords_n = np.array([30, 40, 1], dtype=float)

Например, скажем C = [coords_i] for 1 <= i <= n.

Задача состоит в том, чтобы найти такой X, который представляет собой один (4, 1) вектор, такой, что если вы умножите p_i * X = coords_i.

Как я могу передать эту систему в Linalg Solver ?

P * X = C

итоговые формы P.shape = (3 * N, 4), X.shape = (4, 1), C.shape = (3 * N, 1)

...