package edu.cmu.sphinx.util;
import java.text.DecimalFormat;
/** Some simple matrix and vector manipulation methods. */
public class MatrixUtils {
public static final DecimalFormat df = new DecimalFormat("0.00");
public static String toString(double[][] m) {
StringBuilder s = new StringBuilder("[");
for (double[] row : m) {
s.append(toString(row));
s.append('\n');
}
return s.append(" ]").toString();
}
public static String toString(double[] m) {
StringBuilder s = new StringBuilder("[");
for (double val : m) {
s.append(' ').append(df.format(val));
}
return s.append(" ]").toString();
}
public static int numCols(double[][] m) {
return m[0].length;
}
public static String toString(float[][] matrix) {
return toString(float2double(matrix));
}
public static float[] double2float(double[] values) { // what a mess !!! -> fixme: how to convert number arrays ?
float[] newVals = new float[values.length];
for (int i = 0; i < newVals.length; i++) {
newVals[i] = (float) values[i];
}
return newVals;
}
public static float[][] double2float(double[][] array) {
float[][] floatArr = new float[array.length][array[0].length];
for (int i = 0; i < array.length; i++)
floatArr[i] = double2float(array[i]);
return floatArr;
}
public static double[] float2double(float[] values) {
double[] doubArr = new double[values.length];
for (int i = 0; i < doubArr.length; i++)
doubArr[i] = values[i];
return doubArr;
}
public static double[][] float2double(float[][] array) {
double[][] doubArr = new double[array.length][array[0].length];
for (int i = 0; i < array.length; i++)
doubArr[i] = float2double(array[i]);
return doubArr;
}
}