blob: 565794f0132e95161c00aa8a9383b3e718c62c4b [file] [log] [blame]
 import numpy as np # Uses least squares regression to find the solution # when there is one unknown variable. def print_lstsq_solution(A, B): A_inv = np.linalg.pinv(A) x = np.matmul(A_inv, B) print("least squares solution:", x[0][0]) # Uses the pseudoinverse matrix to find the solution # when there are two unknown variables. def print_pinv_solution(A, mv, B): new_A = np.concatenate((A, mv), axis=1) new_A_inv = np.linalg.pinv(new_A) new_x = np.matmul(new_A_inv, B) print("pinv solution:", new_x[0][0], new_x[1][0]) # Traverses the data and prints out one value for # each update type. def print_solutions(file_path): data = np.genfromtxt(file_path, delimiter="\t") prev_update = 0 split_list_indices = list() for i, val in enumerate(data): if prev_update != val[3]: split_list_indices.append(i) prev_update = val[3] split = np.split(data, split_list_indices) for array in split: A, mv, B, update = np.hsplit(array, 4) print("update type:", update[0][0]) print_lstsq_solution(A, B) print_pinv_solution(A, mv, B) print() if __name__ == "__main__": print_solutions("data/lowres_64f_target150_data.txt")