summaryrefslogtreecommitdiff
path: root/altoslib/AltosTimeSeries.java
diff options
context:
space:
mode:
Diffstat (limited to 'altoslib/AltosTimeSeries.java')
-rw-r--r--altoslib/AltosTimeSeries.java56
1 files changed, 56 insertions, 0 deletions
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<AltosTimeValue> {
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;