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

ch.akuhn.matrix.Util Maven / Gradle / Ivy

package ch.akuhn.matrix;

/**
 * Utilities
 * 
 * @author Adrian Kuhn
 */
public final class Util {

    /**
     * Max
     * 
     * @param ds
     * @param max
     * @return the max
     */
    public static double max(double[] ds, double max) {
        for (int n = 0; n < ds.length; n++) {
            max = Math.max(max, ds[n]);
        }
        return max;
    }

    /**
     * Max
     * 
     * @param dss
     * @param max
     * @return the max
     */
    public static double max(double[][] dss, double max) {
        for (double[] ds : dss) {
            max = max(ds, max);
        }
        return max;
    }

    /**
     * Min
     * 
     * @param ds
     * @param min
     * @return the min
     */
    public static double min(double[] ds, double min) {
        for (int n = 0; n < ds.length; n++) {
            min = Math.min(min, ds[n]);
        }
        return min;
    }

    /**
     * Min
     * 
     * @param dss
     * @param min
     * @return the min
     */
    public static double min(double[][] dss, double min) {
        for (double[] ds : dss) {
            min = max(ds, min);
        }
        return min;
    }

    /**
     * Sum
     * 
     * @param dss
     * @return the sum
     */
    public static double sum(double[][] dss) {
        double sum = 0;
        for (double[] ds : dss) {
            sum += sum(ds);
        }
        return sum;
    }

    /**
     * Sum
     * 
     * @param ds
     * @return the sum
     */
    public static double sum(double[] ds) {
        double sum = 0;
        for (int n = 0; n < ds.length; n++) {
            sum += ds[n];
        }
        return sum;
    }

    /**
     * Count
     * 
     * @param dss
     * @return the sum of the row lengths
     */
    public static int count(double[][] dss) {
        int length = 0;
        for (double[] ds : dss) {
            length += ds.length;
        }
        return length;
    }

    /**
     * Get the histogram
     * 
     * @param values
     * @param binCount
     * @return the histogram
     */
    public static int[] getHistogram(double[][] values, int binCount) {
        double max = Double.MIN_VALUE;
        for (double[] row : values) {
            for (final double each : row) {
                max = Math.max(max, each);
            }
        }
        max = 10; // FIXME
        int[] bins = new int[binCount];
        for (double[] row : values) {
            for (double each : row) {
                int index = (int) Math.floor(each / max * (binCount - 1));
                bins[Math.min(binCount - 1, index)]++;
            }
        }
        return bins;
    }

    /**
     * Multiply by constant
     * 
     * @param dss
     * @param d
     */
    public static void times(double[][] dss, double d) {
        for (double[] ds : dss) {
            for (int i = 0; i < ds.length; i++) {
                ds[i] *= d;
            }
        }
    }

    private Util() {
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy