auto-sync

This commit is contained in:
rusEfi 2015-07-26 22:59:17 -04:00
parent 8881a74377
commit d09b6c2339
1 changed files with 22 additions and 9 deletions

View File

@ -18,7 +18,7 @@ public class AverageAngles {
private static final int MAX_RPM_CHANGE = 20; private static final int MAX_RPM_CHANGE = 20;
private int rpmAtPrevChart; private int rpmAtPrevChart;
Map<Integer, List<Double>> angleData = new TreeMap<>(); Map<Integer, List<AngleEvent>> angleData = new TreeMap<>();
public AverageAngles() { public AverageAngles() {
clear(); clear();
@ -50,19 +50,20 @@ public class AverageAngles {
String v[] = line.split("\\|"); String v[] = line.split("\\|");
System.out.println("rpm " + rpm + ": " + v.length + " values"); System.out.println("rpm " + rpm + ": " + v.length + " values");
List<Double> current = new ArrayList<>(); List<AngleEvent> current = new ArrayList<>();
for (int i = 0; i < v.length / 2; i++) { for (int i = 0; i < v.length / 2; i++) {
Double value = Double.parseDouble(v[2 * i]); Double angle = Double.parseDouble(v[2 * i]);
if (Double.isNaN(value)) { int signal = (int)Double.parseDouble(v[2 * i + 1]);
if (Double.isNaN(angle)) {
System.out.println("Skipping due to NaN"); System.out.println("Skipping due to NaN");
return; return;
} }
current.add(value); current.add(new AngleEvent(angle));
} }
for (int i = 0; i < current.size(); i++) { for (int i = 0; i < current.size(); i++) {
List<Double> list = angleData.get(i); List<AngleEvent> list = angleData.get(i);
if (list == null) { if (list == null) {
list = new ArrayList<>(); list = new ArrayList<>();
angleData.put(i, list); angleData.put(i, list);
@ -80,12 +81,12 @@ public class AverageAngles {
double prev = 0; double prev = 0;
for (Map.Entry<Integer, List<Double>> e : angleData.entrySet()) { for (Map.Entry<Integer, List<AngleEvent>> e : angleData.entrySet()) {
int k = e.getKey(); int k = e.getKey();
List<Double> v = e.getValue(); List<AngleEvent> v = e.getValue();
double values[] = new double[v.size()]; double values[] = new double[v.size()];
for (int i = 0; i < v.size(); i++) for (int i = 0; i < v.size(); i++)
values[i] = v.get(i); values[i] = v.get(i).getAngle();
Mean m = new Mean(); Mean m = new Mean();
double mean = m.evaluate(values); double mean = m.evaluate(values);
@ -108,4 +109,16 @@ public class AverageAngles {
stream.append((delta + v) + "\r\n"); stream.append((delta + v) + "\r\n");
} }
} }
private static class AngleEvent {
private final double angle;
public AngleEvent(double angle) {
this.angle = angle;
}
public double getAngle() {
return angle;
}
}
} }