All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.seninp.jmotif.cbf.CBFGenerator Maven / Gradle / Ivy

Go to download

An implementation of time series Symbolic Aggregate approXimation and HOTSAX algorithms.

The newest version!
package net.seninp.jmotif.cbf;

import net.seninp.util.StdRandom;

/**
 * CBF data generator.
 * 
 * @author psenin
 * 
 */
public class CBFGenerator {

  public static synchronized int getA() {
    return (int) Math.round(StdRandom.uniform(0d, 16d) + 16.0d);
  }

  public static synchronized int getB(int a) {
    return (int) Math.round(StdRandom.uniform(32d, 96d) + (double) a);
  }

  public static synchronized double eks(int t, int a, int b) {
    if (a <= t && t <= b) {
      return 1.0d;
    }
    else {
      return 0.0d;
    }
  }

  public static synchronized double[] cylinder(int[] t) {
    int a = getA();
    int b = getB(a);
    double[] res = new double[t.length];
    for (int i = 0; i < t.length; i++) {
      res[i] = (6.0d + StdRandom.gaussian()) * eks(t[i], a, b) + StdRandom.gaussian();
    }
    return res;
  }

  public static synchronized double[] bell(int[] t) {
    int a = getA();
    int b = getB(a);
    double[] res = new double[t.length];
    for (int i = 0; i < t.length; i++) {
      res[i] = (6.0d + StdRandom.gaussian()) * eks(t[i], a, b)
          * ((double) (t[i] - a) / (double) (b - a)) + StdRandom.gaussian();
    }
    return res;
  }

  public static synchronized double[] funnel(int[] t) {
    int a = getA();
    int b = getB(a);
    double[] res = new double[t.length];
    for (int i = 0; i < t.length; i++) {
      res[i] = (6.0d + StdRandom.gaussian()) * eks(t[i], a, b)
          * ((double) (b - t[i]) / (double) (b - a)) + StdRandom.gaussian();
    }
    return res;
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy