diff options
| author | Keith Packard <keithp@keithp.com> | 2017-05-11 17:14:51 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2017-05-19 21:41:40 -0700 | 
| commit | 258808d296aeadaf150fa9b07e9c99a6bf1ca7c8 (patch) | |
| tree | 2127cc9f8a85ffb8365542e709b224bd37bc0c2c /altoslib/AltosTimeSeries.java | |
| parent | a9aa2d3558c77eb444223eaa747c75916bc7bac1 (diff) | |
altoslib: Create new abstraction underneath AltosState for recording values
Provides a way for the graph API to see raw data values, instead of
those cooked by AltosState.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altoslib/AltosTimeSeries.java')
| -rw-r--r-- | altoslib/AltosTimeSeries.java | 56 | 
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;  | 
