/** * Gets two-dimensional real array. * * @return - 2D real array */ public double[][] getArray() { double[][] result = new double[getM()][]; for (int m = 0; m < getM(); m++) { result[m] = new double[getN()]; for (int n = 0; n < getN(); n++) { result[m][n] = get(m, n); } } return result; }
private int[] toIntArray(MLDouble training) { final int[] arr = new int[training.getN()]; for (int i = 0; i < arr.length; i++) { arr[i] = training.get(0, i).intValue(); } return arr; }
public synchronized double getDouble(long... coordinates) { return matrix.get(getIndex(coordinates)); }
@Test public void testMultipleDimArrayRealFromMatlabCreatedFile() throws IOException { int ndims = 5; int[] dims = new int[]{2, 3, 4, 5, 6}; File file = getTestFile("multiDimMatrix.mat"); MatFileReader reader = new MatFileReader(file); MLDouble mlArray = (MLDouble) reader.getMLArray("in"); int testNDims = mlArray.getNDimensions(); Assert.assertEquals(ndims, testNDims); int[] testDims = mlArray.getDimensions(); for (int i = 0; i < ndims; i++) { Assert.assertEquals(dims[i], testDims[i]); } Double expectedVal = 0.0; for (int i = 0; i < dims[4]; i++) { for (int j = 0; j < dims[3]; j++) { for (int k = 0; k < dims[2]; k++) { for (int l = 0; l < dims[1]; l++) { for (int m = 0; m < dims[0]; m++, expectedVal += 1.0) { Double actual = mlArray.get(mlArray.getIndex(m, l, k, j, i)); Assert.assertEquals(expectedVal, actual); } } } } } }
@Test public void testMultipleDimArrayRealWIndicesFromMatlabCreatedFile() throws IOException { int ndims = 5; int[] dims = new int[]{2, 3, 4, 5, 6}; File file = getTestFile("multiDimMatrix.mat"); MatFileReader reader = new MatFileReader(file); MLDouble mlArray = (MLDouble) reader.getMLArray("in"); int testNDims = mlArray.getNDimensions(); Assert.assertEquals(ndims, testNDims); int[] testDims = mlArray.getDimensions(); for (int i = 0; i < ndims; i++) { Assert.assertEquals(dims[i], testDims[i]); } Double expectedVal = 0.0; for (int i = 0; i < dims[4]; i++) { for (int j = 0; j < dims[3]; j++) { for (int k = 0; k < dims[2]; k++) { for (int l = 0; l < dims[1]; l++) { for (int m = 0; m < dims[0]; m++, expectedVal += 1.0) { Double actual = mlArray.get(m, l, k, j, i); Assert.assertEquals(expectedVal, actual); } } } } } }
assertThat(((MLChar) dataO.get("function_name")).getString(0), equalTo("quad_fcn_subtype")); assertThat(((MLChar) dataO.get("function_inputs")).getString(0), equalTo("c,a,b:{x:real|(a=0 => x /= 0) AND (a /= 0 => (x^2) - 4*a*c >= 0)}")); assertThat(((MLDouble) dataO.get("open")).get(0), equalTo(0.0)); assertThat(((MLDouble) dataO.get("fig")).getSize(), equalTo(0)); // This field should just exist, but be empty! assertThat(((MLDouble) dataO.get("multi_mode")).get(0), equalTo(1.0)); assertThat(((MLDouble) dataO.get("checked")).get(0), equalTo(0.0)); assertThat(((MLDouble) settings.getField("set")).get(0), equalTo(1.0)); assertThat((settings.getField("inputs")), instanceOf(MLDouble.class)); assertThat(((MLDouble) settings.getField("count")).get(0), equalTo(1000.0)); assertThat(((MLDouble) settings.getField("range")).get(0), equalTo(100.0)); assertThat(((MLDouble) settings.getField("except")).get(0), equalTo(0.0)); Map<String, MLArray> gridO = Grid2.getFields(0); assertThat(((MLDouble) gridO.get("num_cells")).get(0), equalTo(2.0)); assertThat(gridO.get("split_pb").getSize(), equalTo(0)); assertThat(gridO.get("parent_grid").getSize(), equalTo(0)); assertThat(gridO.get("delete_cell_pb").getSize(), equalTo(0)); assertThat(((MLObject) gridO.get("rGrid")).getFields(0), equalTo(((MLObject) dataO.get("Grid0")).getFields(0))); assertThat(((MLDouble) gridO.get("grid_index")).get(0), equalTo(2.0));
/** * Gets two-dimensional real array. * * @return - 2D real array */ public double[][] getArray() { double[][] result = new double[getM()][]; for (int m = 0; m < getM(); m++) { result[m] = new double[getN()]; for (int n = 0; n < getN(); n++) { result[m][n] = get(m, n); } } return result; }
public static void main(String[] args) throws IOException { final Map<Integer, String> database = readDatabase(); final File outbase = new File("/Users/jon/Data/lfw/matlab-fvs/"); for (int i = 1; i <= 128; i++) { final File chunk = new File( "/Users/jon/Downloads/data/lfw_aligned/SIFT_1pix_PCA64_GMM512/features/poolfv/1/", String.format( "feat_%d-v6.mat", i)); System.out.println(chunk); final MatFileReader reader = new MatFileReader(chunk); final MLSingle feats = (MLSingle) reader.getMLArray("chunk"); final MLDouble index = (MLDouble) reader.getMLArray("index"); for (int j = 0; j < index.getN(); j++) { final int id = (int) (double) index.get(0, j); final File outfile = new File(outbase, database.get(id).replace(".jpg", ".bin")); outfile.getParentFile().mkdirs(); final float[] vec = new float[feats.getM()]; for (int k = 0; k < feats.getM(); k++) { vec[k] = feats.get(k, j); } final FloatFV fv = new FloatFV(vec); IOUtils.writeBinary(outfile, fv); } } }
private void prepareDayPolls() { final ArrayList<String> pollKeys = FilterUtils.filter(this.content.keySet(), new Predicate<String>() { @Override public boolean test(String object) { return object.endsWith("per_unique_extended"); } }); this.ntasks = pollKeys.size(); dayPolls = new ArrayList<Matrix>(); for (int i = 0; i < this.ndays; i++) { dayPolls.add(SparseMatrixFactoryMTJ.INSTANCE.createMatrix(1, this.ntasks)); } this.tasks = new String[this.ntasks]; for (int t = 0; t < this.ntasks; t++) { final String pollKey = pollKeys.get(t); this.tasks[t] = pollKey; final MLDouble arr = (MLDouble) this.content.get(pollKey); for (int i = 0; i < this.ndays; i++) { final Matrix dayPoll = dayPolls.get(i); dayPoll.setElement(0, t, arr.get(i, 0)); } } }
@Test public void testMultipleDimArrayGetFromMatlabCreatedFile() throws IOException { int ndims = 5; int[] dims = new int[]{2, 3, 4, 5, 6}; File file = getTestFile("multiDimMatrix.mat"); MatFileReader reader = new MatFileReader(file); MLDouble mlArray = (MLDouble) reader.getMLArray("in"); int testNDims = mlArray.getNDimensions(); Assert.assertEquals(ndims, testNDims); int[] testDims = mlArray.getDimensions(); for (int i = 0; i < ndims; i++) { Assert.assertEquals(dims[i], testDims[i]); } Double expectedVal = 0.0; for (int i = 0; i < dims[4]; i++) { for (int j = 0; j < dims[3]; j++) { for (int k = 0; k < dims[2]; k++) { for (int l = 0; l < dims[1]; l++) { for (int m = 0; m < dims[0]; m++, expectedVal += 1.0) { Double actual = mlArray.get(m, l, k, j, i); Assert.assertEquals(expectedVal, actual); } } } } } }
public static void main(String[] args) throws IOException { final Map<Integer, String> database = readDatabase(); final File outbase = new File("/Users/jon/Data/lfw/matlab-fvs/"); for (int i = 1; i <= 128; i++) { final File chunk = new File( "/Users/jon/Downloads/data/lfw_aligned/SIFT_1pix_PCA64_GMM512/features/poolfv/1/", String.format( "feat_%d-v6.mat", i)); System.out.println(chunk); final MatFileReader reader = new MatFileReader(chunk); final MLSingle feats = (MLSingle) reader.getMLArray("chunk"); final MLDouble index = (MLDouble) reader.getMLArray("index"); for (int j = 0; j < index.getN(); j++) { final int id = (int) (double) index.get(0, j); final File outfile = new File(outbase, database.get(id).replace(".jpg", ".bin")); outfile.getParentFile().mkdirs(); final float[] vec = new float[feats.getM()]; for (int k = 0; k < feats.getM(); k++) { vec[k] = feats.get(k, j); } final FloatFV fv = new FloatFV(vec); IOUtils.writeBinary(outfile, fv); } } }
@Test public void testMultipleEmptyNames() throws IOException { File f = getTestFile("emptyname.mat"); MatFileReader r = new MatFileReader(f); Map<String, MLArray> content = r.getContent(); // There are 3 elements in that file, should have 4 in the array (the first value under @, and the three values under @*) assertEquals(4, content.size()); // Check the three values came through alright. Order is fixed as they are read in in file order. Also check @. assertEquals(1.0, ((MLDouble) content.get("@")).get(0), .0001); assertEquals(1.0, ((MLDouble) content.get("@0")).get(0), .0001); assertEquals(2.0, ((MLDouble) content.get("@1")).get(0), .0001); assertEquals(3.0, ((MLDouble) content.get("@2")).get(0), .0001); }
/** * Convert a matlab {@link MLArray} to a {@link Matrix} * * @param mlArray * the matrlab matrix * @return the matrix */ public static Matrix asMat(MLArray mlArray) { final MLDouble mlArrayDbl = (MLDouble) mlArray; final int rows = mlArray.getM(); final int cols = mlArray.getN(); final Matrix mat = SparseMatrixFactoryMTJ.INSTANCE.createMatrix(rows, cols); for (int r = 0; r < rows; r++) { for (int c = 0; c < cols; c++) { mat.setElement(r, c, mlArrayDbl.get(r, c)); } } return mat; }
@Test public void testMultipleMCOSInArray() throws IOException { File file = fileFromStream("/mcos/simplesingletext_multiplearray.mat"); MatFileReader reader = new MatFileReader(file); Map<String, MLArray> content = reader.getContent(); assertThat(content.size(), equalTo(1)); MLObject obj = (MLObject) content.get("a"); assertThat(obj, notNullValue()); assertThat(obj.getName(), equalTo("a")); assertThat(obj.getClassName(), equalTo("SimpleSingleText")); assertThat(((MLDouble) obj.getFields(0).get("test_text")).get(0), equalTo(1.0)); assertThat(((MLDouble) obj.getFields(1).get("test_text")).get(0), equalTo(2.0)); assertThat(((MLDouble) obj.getFields(2).get("test_text")).get(0), equalTo(3.0)); assertThat(((MLDouble) obj.getFields(3).get("test_text")).get(0), equalTo(4.0)); }
/** * Create a {@link Matrix} from a matlab {@link MLArray} * * @param mlArray * the matlab array * @return the matrix */ public static Matrix fromMatlab(MLArray mlArray) { final Matrix mat = new DenseMatrix(mlArray.getM(), mlArray.getN()); final MLDouble mlDouble = (MLDouble) mlArray; for (int i = 0; i < mat.rowCount(); i++) { for (int j = 0; j < mat.columnCount(); j++) { mat.put(i, j, mlDouble.get(i, j)); } } return mat; }
/** * * <pre> * <code> * >> x = NaN; * >> save('nan', 'x'); * </code> * </pre> * * @throws IOException */ @Test public void testReadingNaN() throws IOException { final String fileName = "nan.mat"; // read array form file MatFileReader mfr = new MatFileReader(getTestFile(fileName)); assertEquals("Test if value red from file equals NaN", Double.NaN, (double) ((MLDouble) mfr.getMLArray("x")).get(0, 0), 0.001); }
@Test public void testHandleClass() throws IOException { MatFileReader mfr = new MatFileReader(getTestFile("handles.mat")); Map<String, MLArray> map = mfr.getContent(); MLObject objA = (MLObject) map.get("objA"); MLDouble myPropA = (MLDouble) objA.getField("myPropA"); Assert.assertEquals(5.0, myPropA.get(0, 0), 0.01); MLObject objB = (MLObject) map.get("objB"); MLObject objBField = (MLObject) objB.getField("myObjA"); Assert.assertEquals(objA.getField("myPropA"), objBField.getField("myPropA")); MLObject objC = (MLObject) map.get("objC"); MLObject objCField = (MLObject) objC.getField("myPropA"); Assert.assertEquals(objA.getField("myPropA"), objCField.getField("myPropA")); } }