package edu.ucla.nesl.mca.feature; import java.util.LinkedList; import android.hardware.SensorManager; public class AlgorithmUtil { public static final int INDOOR_THRESHOLD = 5654; public static final int QUEUE_SIZE = 90; public static boolean outdoors = false; public static LinkedList<Integer> ioq = new LinkedList<Integer>(); public static int ioScore = 0; public static synchronized void setIndoor() { outdoors = false; } public static synchronized void setOutdoor() { outdoors = true; } public static synchronized boolean getOutdoor() { return outdoors; } public static double goertzel(double [] data, double freq, double sr){ double s_prev = 0; double s_prev2 = 0; double coeff = 2 * Math.cos( (2*Math.PI*freq) / sr); double s; for (int i = 0; i < data.length; i++) { double sample = data[i]; s = sample + coeff*s_prev - s_prev2; s_prev2 = s_prev; s_prev = s; } double power = s_prev2*s_prev2 + s_prev*s_prev - coeff*s_prev2*s_prev; return power; } public static double[] magnititute(double accx[], double accy[], double accz[]) { if (!((accx.length == accy.length) && (accy.length == accz.length))) { return null; } double result[] = new double[accx.length]; for (int i = 0; i < accx.length; i++) { result[i] = 0.0; double grav = SensorManager.GRAVITY_EARTH; result[i] += Math.pow(accx[i] / grav, 2.0); result[i] += Math.pow(accy[i] / grav, 2.0); result[i] += Math.pow(accz[i] / grav, 2.0); result[i] = Math.sqrt(result[i]); result[i] *= 310; } return result; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub } }