System.arraycopy(emcombs[p], 0, sortedemcombs[nmemb - nem - 1][nc], 0, nmemb); double[][] trem = extractColumns(endmembers, sortedemcombs[nmemb - nem - 1][nc]); trialModels[nmemb - nem - 1][nc] = new ConstrainedLSU(trem); nc++;
spectralUnmixing = new UnconstrainedLSU(lsuMatrixElements); } else if (C_LSU.equals(unmixingModelName)) { spectralUnmixing = new ConstrainedLSU(lsuMatrixElements); } else if (FC_LSU.equals(unmixingModelName)) { spectralUnmixing = new FullyConstrainedLSU(lsuMatrixElements);
public void testConstrainedUnmixing() throws IOException { SpectralUnmixing mlmC = new ConstrainedLSU(endmembers.getArray()); Matrix abundConstrBeam = new Matrix(mlmC.unmix(spectra.getArray())); Matrix abundConstrEnvi = Matrix.read(getResourceReader("abundances-constr-envi.csv")); Matrix abundConstrExpected = Matrix.read(getResourceReader("abundances-constr-expected.csv")); assertEquals("Difference of abundances (BEAM minus ENVI, constrained)", 0.0, maxAbs(abundConstrBeam.minus(abundConstrEnvi)), 1e-2); assertEquals("Difference of abundances (BEAM minus EXPECTED, constrained)", 0.0, maxAbs(abundConstrBeam.minus(abundConstrExpected)), 1e-7); assertEquals("Sum of abundances must be 1 (constrained)", 0.0, maxAbsDeltaRowSumFromOne(abundConstrBeam), 1e-15); }