public Map<String, Map<GM_Position, Double>> readMatResultsFile(final String pStrFilter) { MatFileReader lMatFileReader = null; final MatFileFilter lMatFilter = new MatFileFilter(); Map<String, Map<GM_Position, Double>> lRes = null; try { if (pStrFilter != null) { lMatFilter.addArrayName(STR_XP_NAME); lMatFilter.addArrayName(STR_YP_NAME); lMatFilter.addArrayName(pStrFilter); } if (m_strResultsFile == null) { lMatFileReader = new MatFileReader(FileUtils.toFile(m_resultsFile.getURL()), lMatFilter); } else { lMatFileReader = new MatFileReader(m_strResultsFile, lMatFilter); } } catch (final Exception e) { // throw new MatlabIOException( "Cannot open or read SWAN result matlab file." ); } if (lMatFileReader != null) { try { final GM_Position lShiftPosition = SWANDataConverterHelper.readCoordinateShiftValues(m_resultsFile); m_doubleShiftX = lShiftPosition.getX(); m_doubleShiftY = lShiftPosition.getY(); final Map<String, MLArray> lMapData = lMatFileReader.getContent(); // printDebugParsedSWANRawData( lMatFileReader, null ); lRes = getValuesFormatedNameDatePosition(lMapData); // printDebugResultData( lRes, null ); } catch (final Exception e) { e.printStackTrace(); } } return lRes; }
// debug only: raw text output of results private static void printDebugParsedSWANRawData(final MatFileReader mfr, final String outputPath) throws IOException, MatlabIOException { String outputPathTmp = "d:/temp/MatReaderOut-"; // $NON-NLS-1$ if (outputPath != null && !"".equals(outputPath)) // $NON-NLS-1$ { outputPathTmp = outputPath; } final Map<String, MLArray> lMapData = mfr.getContent(); final FileWriter fstream = new FileWriter(outputPathTmp + (new Date()).getTime()); final BufferedWriter out = new BufferedWriter(fstream); final Set<String> lSetKeys = lMapData.keySet(); for (final String lStrKey : lSetKeys) { final MLArray lValues = lMapData.get(lStrKey); out.write(lValues.contentToString()); } out.close(); }
@BeforeClass public static void loadData() throws Exception { MatFileReader reader = new MatFileReader("machine-learning-ex3/ex3/ex3data1.mat"); Map<String, MLArray> content = reader.getContent(); Assert.assertNotNull(content); X = factory.createMatrix(((MLDouble) content.get("X")).getArray()); y = factory.createMatrix(((MLDouble) content.get("y")).getArray()); System.out.println("X: " + X.numRows() + "*" + X.numColumns()); System.out.println("y: " + y.numRows() + "*" + y.numColumns()); assertEquals(X.numRows(), y.numRows()); assertEquals(1, y.numColumns()); double[][] images = new double[100][]; int[] randIndexes = new ArrayUtil().randperm(X.numRows()); for (int i = 0; i < images.length; i++) images[i] = X.getRow(randIndexes[i]).asArray(); String[] labels = new String[images.length]; for (int i = 0; i < labels.length; i++) labels[i] = String.valueOf((int) y.get(randIndexes[i], 0)); JPanel panel = displayUtil.createImageGrid(images, 20, 20, 2, labels); displayUtil.saveImage(panel, "./target/Ex3TrainingSample.png"); }