From 291ca246d21ee5694b16615bb1d0df3748466225 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Tue, 31 Aug 2021 15:21:21 +0200 Subject: [PATCH] matrix: update submodule (improves matrix inversion) --- src/lib/matrix | 2 +- .../ControlAllocation/ControlAllocationPseudoInverse.cpp | 2 +- src/systemcmds/microbench/test_microbench_matrix.cpp | 4 ++-- src/systemcmds/tests/test_matrix.cpp | 9 ++++++--- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/lib/matrix b/src/lib/matrix index 3d1c9b988d..007a7f78ae 160000 --- a/src/lib/matrix +++ b/src/lib/matrix @@ -1 +1 @@ -Subproject commit 3d1c9b988dff1d95f36cdd1df3e84d7a2365501c +Subproject commit 007a7f78ae014499ecb18d8c92a312fc5a70899b diff --git a/src/modules/control_allocator/ControlAllocation/ControlAllocationPseudoInverse.cpp b/src/modules/control_allocator/ControlAllocation/ControlAllocationPseudoInverse.cpp index b613e77c73..bf26a028bd 100644 --- a/src/modules/control_allocator/ControlAllocation/ControlAllocationPseudoInverse.cpp +++ b/src/modules/control_allocator/ControlAllocation/ControlAllocationPseudoInverse.cpp @@ -54,7 +54,7 @@ void ControlAllocationPseudoInverse::updatePseudoInverse() { if (_mix_update_needed) { - _mix = matrix::geninv(_effectiveness); + matrix::geninv(_effectiveness, _mix); _mix_update_needed = false; } } diff --git a/src/systemcmds/microbench/test_microbench_matrix.cpp b/src/systemcmds/microbench/test_microbench_matrix.cpp index 932a70e841..b6a2f1fe63 100644 --- a/src/systemcmds/microbench/test_microbench_matrix.cpp +++ b/src/systemcmds/microbench/test_microbench_matrix.cpp @@ -170,8 +170,8 @@ bool MicroBenchMatrix::time_matrix_dcm() bool MicroBenchMatrix::time_matrix_pseduo_inverse() { - PERF("matrix 6x16 pseudo inverse (all non-zero columns)", A16 = matrix::geninv(B16), 100); - PERF("matrix 6x16 pseudo inverse (4 non-zero columns)", A16 = matrix::geninv(B16_4), 100); + PERF("matrix 6x16 pseudo inverse (all non-zero columns)", matrix::geninv(B16, A16), 100); + PERF("matrix 6x16 pseudo inverse (4 non-zero columns)", matrix::geninv(B16_4, A16), 100); return true; } diff --git a/src/systemcmds/tests/test_matrix.cpp b/src/systemcmds/tests/test_matrix.cpp index b3b8021274..b7bc519040 100644 --- a/src/systemcmds/tests/test_matrix.cpp +++ b/src/systemcmds/tests/test_matrix.cpp @@ -776,7 +776,8 @@ bool MatrixTest::pseudoInverseTests() }; Matrix A0(data0); - Matrix A0_I = geninv(A0); + Matrix A0_I; + geninv(A0, A0_I); Matrix A0_I_check(data0_check); ut_test((A0_I - A0_I_check).abs().max() < 1e-5); @@ -795,7 +796,8 @@ bool MatrixTest::pseudoInverseTests() }; Matrix A1(data1); - Matrix A1_I = geninv(A1); + Matrix A1_I; + geninv(A1, A1_I); Matrix A1_I_check(data1_check); ut_test((A1_I - A1_I_check).abs().max() < 1e-5); @@ -845,7 +847,8 @@ bool MatrixTest::pseudoInverseTests() { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f} }; Matrix A_check(A_quad_w); - Matrix A = geninv(B); + Matrix A; + geninv(B, A); ut_test((A - A_check).abs().max() < 1e-5); return true;