/** * <p> * Checks to see if each element in the matrices are within tolerance of each other and countable: * </p> * * <p> * The two matrices are identical with in tolerance if:<br> * |a<sub>ij</sub> - b<sub>ij</sub>| ≤ tol * </p> * * <p> * The test will fail if any element in either matrix is NaN or infinite. * </p> * * @param A Matrix A * @param B Matrix B * @param tol Tolerance */ public static void assertEquals( SimpleMatrix A , SimpleMatrix B , double tol ) { EjmlUnitTests.assertEquals(A.getMatrix(), B.getMatrix(), tol); } }
@ContinuousIntegrationTest(estimatedDuration = 0.1) @Test(timeout=300000) public void testBackAndForthSymmetricMatrix() { List<List<YoDouble>> yoArray = new ArrayList<List<YoDouble>>(); int size = 50; String prefix = "test"; YoVariableRegistry registry = new YoVariableRegistry("test"); Random random = new Random(1235612L); DenseMatrix64F matrix = RandomMatrices.createSymmPosDef(size, random); DenseMatrix64F matrixBack = new DenseMatrix64F(size, size); MatrixYoVariableConversionTools.populateYoVariablesSymmetricMatrix(yoArray, size, prefix, registry); MatrixYoVariableConversionTools.storeInYoVariablesSymmetric(matrix, yoArray); MatrixYoVariableConversionTools.getFromYoVariablesSymmetric(matrixBack, yoArray); EjmlUnitTests.assertEquals(matrix, matrixBack, 1e-12); } }
@ContinuousIntegrationTest(estimatedDuration = 0.0) @Test(timeout=300000) public void testBackAndForthVector() { List<YoDouble> yoArray = new ArrayList<YoDouble>(); int size = 50; String prefix = "test"; YoVariableRegistry registry = new YoVariableRegistry("test"); DenseMatrix64F matrix = new DenseMatrix64F(size, 1); Random random = new Random(1235612L); RandomMatrices.setRandom(matrix, random); DenseMatrix64F matrixBack = new DenseMatrix64F(size, 1); MatrixYoVariableConversionTools.populateYoVariablesVector(yoArray, size, prefix, registry); MatrixYoVariableConversionTools.storeInYoVariablesVector(matrix, yoArray); MatrixYoVariableConversionTools.getFromYoVariablesVector(matrixBack, yoArray); EjmlUnitTests.assertEquals(matrix, matrixBack, 1e-12); }
@ContinuousIntegrationTest(estimatedDuration = 0.1) @Test(timeout = 30000) public void testCompareDifferentImplementations() { int numberOfStates = 30; int numberOfInputs = 10; StateSpaceSystemDiscretizer singleMatrixExponentialDiscretizer = new SingleMatrixExponentialStateSpaceSystemDiscretizer(numberOfStates, numberOfInputs); StateSpaceSystemDiscretizer splitUpMatrixExponentialDiscretizer = new SplitUpMatrixExponentialStateSpaceSystemDiscretizer(numberOfStates, numberOfInputs); StateSpaceSystemDiscretizer[] discretizers = new StateSpaceSystemDiscretizer[] { singleMatrixExponentialDiscretizer, splitUpMatrixExponentialDiscretizer }; Random random = new Random(125L); DenseMatrix64F A = RandomMatrices.createRandom(numberOfStates, numberOfStates, random); DenseMatrix64F B = RandomMatrices.createRandom(numberOfStates, numberOfInputs, random); DenseMatrix64F Q = RandomMatrices.createSymmPosDef(numberOfStates, random); DenseMatrix64F[] As = new DenseMatrix64F[] { new DenseMatrix64F(A), new DenseMatrix64F(A) }; DenseMatrix64F[] Bs = new DenseMatrix64F[] { new DenseMatrix64F(B), new DenseMatrix64F(B) }; DenseMatrix64F[] Qs = new DenseMatrix64F[] { new DenseMatrix64F(Q), new DenseMatrix64F(Q) }; double dt = 1.0; for (int i = 0; i < discretizers.length; i++) { discretizers[i].discretize(As[i], Bs[i], Qs[i], dt); } double tol = 1e-12; EjmlUnitTests.assertEquals(As[0], As[1], tol); EjmlUnitTests.assertEquals(Bs[0], Bs[1], tol); EjmlUnitTests.assertEquals(Qs[0], Qs[1], tol); }
@ContinuousIntegrationTest(estimatedDuration = 0.3) @Test(timeout=300000) public void testBackAndForthMatrix() { List<List<YoDouble>> yoArray = new ArrayList<List<YoDouble>>(); int nRows = 50; int nColumns = 60; String prefix = "test"; YoVariableRegistry registry = new YoVariableRegistry("test"); DenseMatrix64F matrix = new DenseMatrix64F(nRows, nColumns); Random random = new Random(1235612L); RandomMatrices.setRandom(matrix, random); DenseMatrix64F matrixBack = new DenseMatrix64F(nRows, nColumns); MatrixYoVariableConversionTools.populateYoVariablesMatrix(yoArray, nRows, nColumns, prefix, registry); MatrixYoVariableConversionTools.storeInYoVariablesMatrix(matrix, yoArray); MatrixYoVariableConversionTools.getFromYoVariablesMatrix(matrixBack, yoArray); EjmlUnitTests.assertEquals(matrix, matrixBack, 1e-12); }
EjmlUnitTests.assertEquals(denseMatrixExpected, denseMatrixActual, EPS);