public class Formatter extends AbstractFormatter
Format
class written by Cay Horstmann.
Currenly works on 1-d, 2-d and 3-d matrices.
Note that in most cases you will not need to get familiar with this class; just call matrix.toString() and be happy with the default formatting.
This class is for advanced requirements.
Can't exactly remember the syntax of printf format strings? See Format
or Henrik
Nordberg's documentation, or the Dinkumware's
C Library Reference.
Examples:
Examples demonstrate usage on 2-d matrices. 1-d and 3-d matrices formatting works very similar.
Original matrix |
double[][] values = { |
format | Formatter.toString(matrix); | Formatter.toSourceCode(matrix); |
%G (default) |
5 x 4 matrix 3 0 -3.4 0 5.1 0 3.012346 0 16.37 0 2.5 0 -16.3 0 -0.000301 -1 1236.345679 0 7 -1.2 |
{ { 3 , 0, -3.4 , 0 }, { 5.1 , 0, 3.012346, 0 }, { 16.37 , 0, 2.5 , 0 }, { -16.3 , 0, -0.000301, -1 }, {1236.345679, 0, 7 , -1.2} }; |
%1.10G | 5 x 4 matrix 3 0 -3.4 0 5.1 0 3.0123456789 0 16.37 0 2.5 0 -16.3 0 -0.0003012346 -1 1236.3456789 0 7 -1.2 |
{ { 3 , 0, -3.4 , 0 }, { 5.1 , 0, 3.0123456789, 0 }, { 16.37 , 0, 2.5 , 0 }, { -16.3 , 0, -0.0003012346, -1 }, {1236.3456789, 0, 7 , -1.2} }; |
%f | 5 x 4 matrix 3.000000 0.000000 -3.400000 0.000000 5.100000 0.000000 3.012346 0.000000 16.370000 0.000000 2.500000 0.000000 -16.300000 0.000000 -0.000301 -1.000000 1236.345679 0.000000 7.000000 -1.200000 |
{ { 3.000000, 0.000000, -3.400000, 0.000000}, { 5.100000, 0.000000, 3.012346, 0.000000}, { 16.370000, 0.000000, 2.500000, 0.000000}, { -16.300000, 0.000000, -0.000301, -1.000000}, {1236.345679, 0.000000, 7.000000, -1.200000} }; |
%1.2f | 5 x 4 matrix 3.00 0.00 -3.40 0.00 5.10 0.00 3.01 0.00 16.37 0.00 2.50 0.00 -16.30 0.00 -0.00 -1.00 1236.35 0.00 7.00 -1.20 |
{ { 3.00, 0.00, -3.40, 0.00}, { 5.10, 0.00, 3.01, 0.00}, { 16.37, 0.00, 2.50, 0.00}, { -16.30, 0.00, -0.00, -1.00}, {1236.35, 0.00, 7.00, -1.20} }; |
%0.2e | 5 x 4 matrix 3.00e+000 0.00e+000 -3.40e+000 0.00e+000 5.10e+000 0.00e+000 3.01e+000 0.00e+000 1.64e+001 0.00e+000 2.50e+000 0.00e+000 -1.63e+001 0.00e+000 -3.01e-004 -1.00e+000 1.24e+003 0.00e+000 7.00e+000 -1.20e+000 |
{ { 3.00e+000, 0.00e+000, -3.40e+000, 0.00e+000}, { 5.10e+000, 0.00e+000, 3.01e+000, 0.00e+000}, { 1.64e+001, 0.00e+000, 2.50e+000, 0.00e+000}, {-1.63e+001, 0.00e+000, -3.01e-004, -1.00e+000}, { 1.24e+003, 0.00e+000, 7.00e+000, -1.20e+000} }; |
null | 5 x 4 matrix 3.0 0.0 -3.4 0.0 5.1 0.0 3.0123456789 0.0 16.37 0.0 2.5 0.0 -16.3 0.0 -3.012345678E-4 -1.0 1236.3456789 0.0 7.0 -1.2 |
{ { 3.0 , 0.0, -3.4 , 0.0}, { 5.1 , 0.0, 3.0123456789 , 0.0}, { 16.37 , 0.0, 2.5 , 0.0}, { -16.3 , 0.0, -3.012345678E-4, -1.0}, {1236.3456789, 0.0, 7.0 , -1.2} }; |
Here are some more elaborate examples, adding labels for axes, rows, columns, title and some statistical aggregations.
double[][] values = { |
CPU performance over time [nops/sec] | Year | 1996 1997 1998 1999 | Mean RMS 25% Q. Median 75% Q. StdDev Min Max --------------------------------------------------------------------------------------- C PowerBar | 5 10 20 40 | 18.75 23.05 8.75 15 25 15.48 5 40 P Benzol | 7 8 6 7 | 7 7.04 6.75 7 7.25 0.82 6 8 U Mercedes | 12 10 20 19 | 15.25 15.85 11.5 15.5 19.25 4.99 10 20 Sparcling | 3 1 5 6 | 3.75 4.21 2.5 4 5.25 2.22 1 6 --------------------------------------------------------------------------------------- Mean | 6.75 7.25 12.75 18 | RMS | 7.53 8.14 14.67 22.62 | 25% Q. | 4.5 6.25 5.75 6.75 | Median | 6 9 13 13 | 75% Q. | 8.25 10 20 24.25 | StdDev | 3.86 4.27 8.38 15.81 | Min | 3 1 5 6 | Max | 12 10 20 19 | |
same as above, but now without aggregations aggr=null; |
CPU performance over time [nops/sec] | Year | 1996 1997 1998 1999 --------------------------------- C PowerBar | 5 10 20 40 P Benzol | 7 8 6 7 U Mercedes | 12 10 20 19 Sparcling | 3 1 5 6 |
same as above, but now without rows labeled |
CPU performance over time [nops/sec] Year 1996 1997 1998 1999 ------------------- 5 10 20 40 7 8 6 7 12 10 20 19 3 1 5 6 |
A column can be broader than specified by the parameter minColumnWidth (because a cell may not fit into that width) but a column is never smaller than minColumnWidth. Normally one does not need to specify minColumnWidth (default is 1). This parameter is only interesting when wanting to print two distinct matrices such that both matrices have the same column width, for example, to make it easier to see which column of matrix A corresponds to which column of matrix B.
Implementation:
Note that this class is by no means ment to be used for high performance I/O (serialization is much quicker). It is ment to produce well human readable output.
Analyzes the entire matrix before producing output. Each cell is converted
to a String as indicated by the given C-like format string. If null
is passed as format string, Double.toString(double)
is used
instead, yielding full precision.
Next, leading and trailing whitespaces are removed. For each column the maximum number of characters before and after the decimal point is determined. (No problem if decimal points are missing). Each cell is then padded with leading and trailing blanks, as necessary to achieve decimal point aligned, left justified formatting.
alignment, CENTER, columnSeparator, DECIMAL, DEFAULT_COLUMN_SEPARATOR, DEFAULT_MIN_COLUMN_WIDTH, DEFAULT_ROW_SEPARATOR, DEFAULT_SLICE_SEPARATOR, factory, format, LEFT, minColumnWidth, printShape, RIGHT, rowSeparator, sliceSeparator
serialVersionUID
Constructor and Description |
---|
Formatter()
Constructs and returns a matrix formatter with format "%G".
|
Formatter(String format)
Constructs and returns a matrix formatter.
|
Modifier and Type | Method and Description |
---|---|
static void |
demo1()
Demonstrates how to use this class.
|
static void |
demo2()
Demonstrates how to use this class.
|
static void |
demo3(int size,
double value)
Demonstrates how to use this class.
|
static void |
demo4()
Demonstrates how to use this class.
|
static void |
demo5()
Demonstrates how to use this class.
|
static void |
demo6()
Demonstrates how to use this class.
|
static void |
demo7()
Demonstrates how to use this class.
|
protected String |
form(AbstractMatrix1D matrix,
int index,
Former formatter)
Converts a given cell to a String; no alignment considered.
|
protected String |
form(DoubleMatrix1D matrix,
int index,
Former formatter)
Converts a given cell to a String; no alignment considered.
|
protected String[][] |
format(AbstractMatrix2D matrix)
Returns a string representations of all cells; no alignment considered.
|
String[][] |
format(DoubleMatrix2D matrix)
Returns a string representations of all cells; no alignment considered.
|
protected int |
indexOfDecimalPoint(String s)
Returns the index of the decimal point.
|
protected int |
lead(String s)
Returns the number of characters before the decimal point.
|
String |
toSourceCode(DoubleMatrix1D matrix)
Returns a string s such that Object[] m = s is a legal Java statement.
|
String |
toSourceCode(DoubleMatrix2D matrix)
Returns a string s such that Object[] m = s is a legal Java statement.
|
String |
toSourceCode(DoubleMatrix3D matrix)
Returns a string s such that Object[] m = s is a legal Java statement.
|
protected String |
toString(AbstractMatrix2D matrix)
Returns a string representation of the given matrix.
|
String |
toString(DoubleMatrix1D matrix)
Returns a string representation of the given matrix.
|
String |
toString(DoubleMatrix2D matrix)
Returns a string representation of the given matrix.
|
String |
toString(DoubleMatrix3D matrix)
Returns a string representation of the given matrix.
|
protected String |
toTitleString(DoubleMatrix2D matrix,
String[] rowNames,
String[] columnNames,
String rowAxisName,
String columnAxisName,
String title)
Returns a string representation of the given matrix with axis as well as rows and columns labeled.
|
align, alignmentCode, alignRow, blanks, demo3, formatRow, repeat, setAlignment, setColumnSeparator, setFormat, setMinColumnWidth, setPrintShape, setRowSeparator, setSliceSeparator, setupBlanksCache, shape, shape, shape, toString
clone
public Formatter()
public Formatter(String format)
format
- the given format used to convert a single cell value.public static void demo1()
public static void demo2()
public static void demo3(int size, double value)
public static void demo4()
public static void demo5()
public static void demo6()
public static void demo7()
protected String form(DoubleMatrix1D matrix, int index, Former formatter)
protected String form(AbstractMatrix1D matrix, int index, Former formatter)
form
in class AbstractFormatter
public String[][] format(DoubleMatrix2D matrix)
protected String[][] format(AbstractMatrix2D matrix)
format
in class AbstractFormatter
protected int indexOfDecimalPoint(String s)
protected int lead(String s)
lead
in class AbstractFormatter
public String toSourceCode(DoubleMatrix1D matrix)
matrix
- the matrix to format.public String toSourceCode(DoubleMatrix2D matrix)
matrix
- the matrix to format.public String toSourceCode(DoubleMatrix3D matrix)
matrix
- the matrix to format.public String toString(DoubleMatrix1D matrix)
matrix
- the matrix to convert.public String toString(DoubleMatrix2D matrix)
matrix
- the matrix to convert.public String toString(DoubleMatrix3D matrix)
matrix
- the matrix to convert.protected String toString(AbstractMatrix2D matrix)
toString
in class AbstractFormatter
matrix
- the matrix to convert.protected String toTitleString(DoubleMatrix2D matrix, String[] rowNames, String[] columnNames, String rowAxisName, String columnAxisName, String title)
matrix
- The matrix to format.rowNames
- The headers of all rows (to be put to the left of the matrix).columnNames
- The headers of all columns (to be put to above the matrix).rowAxisName
- The label of the y-axis.columnAxisName
- The label of the x-axis.title
- The overall title of the matrix to be formatted.Copyright © 2006–2019 SYSTAP, LLC DBA Blazegraph. All rights reserved.