X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosTimeSeries.java;h=0ea7b3561baa6e9e6390d74d3003235f9918ffae;hp=53c0076f5ed345d58f79b89ef4b614155f9c20c6;hb=258808d296aeadaf150fa9b07e9c99a6bf1ca7c8;hpb=a9aa2d3558c77eb444223eaa747c75916bc7bac1 diff --git a/altoslib/AltosTimeSeries.java b/altoslib/AltosTimeSeries.java index 53c0076f..0ea7b356 100644 --- a/altoslib/AltosTimeSeries.java +++ b/altoslib/AltosTimeSeries.java @@ -29,6 +29,62 @@ public class AltosTimeSeries implements Iterable { return values.iterator(); } + public void integrate(AltosTimeSeries integral) { + double y = 0.0; + double x = 0.0; + boolean start = true; + + for (AltosTimeValue v : values) { + if (start) { + y = 0.0; + x = v.x; + start = false; + } else { + y += v.y * (v.x - x); + x = v.x; + } + integral.add(x, y); + } + } + + public void differentiate(AltosTimeSeries diff) { + double y = 0.0; + double x = 0.0; + boolean start = true; + + for (AltosTimeValue v: values) { + if (start) { + y = 0.0; + x = v.x; + start = false; + } else { + double dx = v.x - x; + double dy = v.y - y; + + x = v.x; + y = v.y; + if (dx != 0) + diff.add(x, dy); + } + } + } + + private int find_left(int i, double dt) { + int j; + double t = values.get(i).x - dt; + for (j = i; j > 0; j--) { + if (values.get(j).x < t) + break; + } + return j; + + } + + public void filter(AltosTimeSeries out, double width) { + for (int i = 0; i < values.size(); i++) { + } + } + public AltosTimeSeries(String label, AltosUnits units) { this.label = label; this.units = units;