1 /* 2 * Copyright (C) 2015 Alberto Irurueta Carro (alberto@irurueta.com) 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.irurueta.numerical.robust; 17 18 import java.util.List; 19 20 /** 21 * Listener to get data samples and residuals for LMedS method. 22 * 23 * @param <T> type of object to be estimated. 24 */ 25 public interface LMedSRobustEstimatorListener<T> 26 extends RobustEstimatorListener<T> { 27 /** 28 * Returns total number of samples to be randomly processed. 29 * 30 * @return total number of samples. 31 */ 32 int getTotalSamples(); 33 34 /** 35 * Returns size of subsets of samples to be selected. 36 * 37 * @return size of subsets of samples to be selected. 38 */ 39 int getSubsetSize(); 40 41 /** 42 * Estimates a list of possible preliminary solutions to be used during an 43 * iteration of LMedS robust estimator. 44 * 45 * @param samplesIndices indices of random subset of samples that have been 46 * picked. 47 * @param solutions list where possible preliminary solutions to be used 48 * during an iteration of LMedS robust estimator will be stored. Provided 49 * list will always be empty, and it is up to the implementor to fill it 50 * with preliminary solutions based on provided sample indices. 51 */ 52 void estimatePreliminarSolutions( 53 final int[] samplesIndices, final List<T> solutions); 54 55 /** 56 * Computes residual for sample located at i-th position using estimation 57 * on current iteration. 58 * 59 * @param currentEstimation a preliminar estimation that has been found for 60 * current iteration. 61 * @param i position of sample to be checked. 62 * @return residual for i-th sample. 63 */ 64 double computeResidual(final T currentEstimation, final int i); 65 }