@Test(expectedExceptions = IllegalArgumentException.class) public void testNullDimensions2() { FunctionUtils.fromTensorIndex(2, null); }
/** * Generate a set of N-dimensional b-splines as the produce of 1-dimensional b-splines with a given polynomial degree. * on the specified knots * @param knots holder for the knots and degree in each dimension * @return a List of functions */ public List<Function<double[], Double>> generateSet(BasisFunctionKnots[] knots) { ArgChecker.noNulls(knots, "knots"); int dim = knots.length; int[] nSplines = new int[dim]; int product = 1; List<List<Function<Double, Double>>> oneDSets = new ArrayList<>(dim); for (int i = 0; i < dim; i++) { oneDSets.add(generateSet(knots[i])); nSplines[i] = knots[i].getNumSplines(); product *= nSplines[i]; } final List<Function<double[], Double>> functions = new ArrayList<>(product); for (int i = 0; i < product; i++) { int[] indices = FunctionUtils.fromTensorIndex(i, nSplines); functions.add(generateMultiDim(oneDSets, indices)); } return functions; }
@Test public void testTensorIndexTest1() { final int[] indices = new int[] {2 }; final int[] dimensions = new int[] {5 }; final int index = FunctionUtils.toTensorIndex(indices, dimensions); assertEquals(indices[0], index, 0); final int[] res = FunctionUtils.fromTensorIndex(index, dimensions); assertEquals(indices[0], res[0], 0); }
@Test public void testTensorIndexTest2() { final int[] indices = new int[] {2, 3 }; final int[] dimensions = new int[] {5, 7 }; final int index = FunctionUtils.toTensorIndex(indices, dimensions); final int[] res = FunctionUtils.fromTensorIndex(index, dimensions); assertEquals(indices[0], res[0], 0); assertEquals(indices[1], res[1], 0); }
@Test public void testTensorIndexTest3() { final int[] indices = new int[] {2, 3, 1 }; final int[] dimensions = new int[] {5, 7, 3 }; final int index = FunctionUtils.toTensorIndex(indices, dimensions); final int[] res = FunctionUtils.fromTensorIndex(index, dimensions); assertEquals(indices[0], res[0], 0); assertEquals(indices[1], res[1], 0); assertEquals(indices[2], res[2], 0); }