rusefi/java_console/tools/src/main/java/com/irnems/MedianFilter.java

44 lines
896 B
Java
Raw Permalink Normal View History

2015-07-10 06:01:56 -07:00
package com.irnems;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @author Andrey Belomutskiy
* 8/5/13
*/
2018-09-02 15:59:02 -07:00
public class MedianFilter {
2015-07-10 06:01:56 -07:00
private List<Double> values;
private int size;
2018-09-02 15:59:02 -07:00
public MedianFilter(List<Double> values, int size) {
2015-07-10 06:01:56 -07:00
this.values = values;
this.size = size;
}
public static List<Double> filter(List<Double> values, int size) {
2018-09-02 15:59:02 -07:00
return new MedianFilter(values, size).filter();
2015-07-10 06:01:56 -07:00
}
private List<Double> filter() {
2018-09-02 15:59:02 -07:00
List<Double> result = new ArrayList<>();
2015-07-10 06:01:56 -07:00
for(int i=0;i<values.size();i++) {
int fromIndex = Math.max(0, i - size);
2018-09-02 15:59:02 -07:00
List<Double> copy = new ArrayList<>(values.subList(fromIndex, i + 1));
2015-07-10 06:01:56 -07:00
Collections.sort(copy);
result.add(copy.get(copy.size() / 2));
}
return result;
}
}