private double[][] unmix(double[][] ia) { return spectralUnmixing.unmix(ia); }
@Override public double[][] mix(double[][] abundances) { return trialModels[0][0].mix(abundances); }
public void testUnconstrainedUnmixing() throws IOException { SpectralUnmixing mlm = new UnconstrainedLSU(endmembers.getArray()); Matrix abundUnconstrBeam = new Matrix(mlm.unmix(spectra.getArray())); Matrix abundUnconstrEnvi = Matrix.read(getResourceReader("abundances-unconstr-envi.csv")); Matrix abundUnconstrExpected = Matrix.read(getResourceReader("abundances-unconstr-expected.csv")); assertEquals("Difference of abundances (BEAM minus ENVI, unconstrained)", 0.0, maxAbs(abundUnconstrBeam.minus(abundUnconstrEnvi)), 1e-4); assertEquals("Difference of abundances (BEAM minus EXPECTED, unconstrained)", 0.0, maxAbs(abundUnconstrBeam.minus(abundUnconstrExpected)), 1e-7); }
private double[][] mix(double[][] ia) { return spectralUnmixing.mix(ia); }
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); }