Documentation API of the 'cern.colt.matrix.tfloat.algo.FloatFormatter' Java class
FloatFormatter
cern.colt.matrix.tfloat.algo

Class FloatFormatter

  • All Implemented Interfaces:
    Serializable, Cloneable


    public class FloatFormatterextends AbstractFormatter
    Flexible, well human readable matrix print formatting; By default decimal point aligned. 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.

    Examples:

    Examples demonstrate usage on 2-d matrices. 1-d and 3-d matrices formatting works very similar.

    Original matrix

    float[][] values = {
    {3, 0, -3.4, 0},
    {5.1 ,0, +3.0123456789, 0},
    {16.37, 0.0, 2.5, 0},
    {-16.3, 0, -3.012345678E-4, -1},
    {1236.3456789, 0, 7, -1.2}
    };
    matrix = new DenseFloatMatrix2D(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.

    float[][] values = {
    {5 ,10, 20, 40 },
    { 7, 8 , 6 , 7 },
    {12 ,10, 20, 19 },
    { 3, 1 , 5 , 6 }
    };
    String title = "CPU performance over time [nops/sec]";
    String columnAxisName = "Year";
    String rowAxisName = "CPU";
    String[] columnNames = {"1996", "1997", "1998", "1999"};
    String[] rowNames = { "PowerBar", "Benzol", "Mercedes", "Sparcling"};
    hep.aida.bin.BinFunctions1D F = hep.aida.bin.BinFunctions1D.functions; // alias
    hep.aida.bin.BinFunction1D[] aggr = {F.mean, F.rms, F.quantile(0.25), F.median, F.quantile(0.75), F.stdDev, F.min, F.max};
    String format = "%1.2G";
    FloatMatrix2D matrix = new DenseFloatMatrix2D(values);
    new Formatter(format).toTitleString(
       matrix,rowNames,columnNames,rowAxisName,columnAxisName,title,aggr);

    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
    aggr=null;
    rowNames=null;
    rowAxisName=null;

    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, Float.toString(float) 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.

    See Also:
    Serialized Form

Warning: You cannot see the full API documentation of this class since the access to the DatMelt documentation for third-party Java classes is denied. Guests can only view jhplot Java API. To view the complete description of this class and its methods, please request the full DataMelt membership.

If you are already a full member, please login to the DataMelt member area before visiting this documentation.