package ch.akuhn.matrix;
public class Util {
public static double max(double[] ds, double max) {
for (int n = 0; n < ds.length; n++) max = Math.max(max, ds[n]);
return max;
}
public static double max(double[][] dss, double max) {
for (double[] ds: dss) max = max(ds, max);
return max;
}
public static double min(double[] ds, double min) {
for (int n = 0; n < ds.length; n++) min = Math.min(min, ds[n]);
return min;
}
public static double min(double[][] dss, double min) {
for (double[] ds: dss) min = max(ds, min);
return min;
}
public static double sum(double[][] dss) {
double sum = 0;
for (double[] ds: dss) sum += sum(ds);
return sum;
}
public static double sum(double[] ds) {
double sum = 0;
for (int n = 0; n < ds.length; n++) sum += ds[n];
return sum;
}
public static int count(double[][] dss) {
int length = 0;
for (double[] ds: dss) length += ds.length;
return length;
}
public static int[] getHistogram(double[][] values, int binCount) {
double max = Double.MIN_VALUE;
for (double[] row: values) {
for (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;
}
public static void times(double[][] dss, double d) {
for (double[] ds: dss) for (int i = 0; i < ds.length; i++) ds[i] *= d;
}
}