Lines Matching refs:matrix

40     protected final int[][] matrix;  // multi-row matrix {{counti,valueij...}}
59 this.matrix = makeMatrix(hist2col);
68 /** Build a histogram given a compact matrix of counts and values. */
70 Histogram(int[][] matrix) {
72 matrix = normalizeMatrix(matrix); // clone and sort
73 this.matrix = matrix;
76 for (int i = 0; i < matrix.length; i++) {
77 int rowLength = matrix[i].length-1;
79 weight += matrix[i][0] * rowLength;
84 for (int i = 0; i < matrix.length; i++) {
85 for (int j = 1; j < matrix[i].length; j++) {
87 hist2col[fillp++] = ((long) matrix[i][j] << 32)
88 | (LOW32 & matrix[i][0]);
99 /** Histogram of int values, reported compactly as a ragged matrix,
102 * Format of matrix:
103 * Each row in the matrix begins with an occurrence count,
106 * int[][] matrix = {
112 * The first column of the matrix { count1, count2, ... }
114 * Each row of the matrix (apart from its first element)
119 int[][] getMatrix() { return matrix; }
122 int getRowCount() { return matrix.length; }
125 int getRowFrequency(int rn) { return matrix[rn][0]; }
128 int getRowLength(int rn) { return matrix[rn].length-1; }
131 int getRowValue(int rn, int vn) { return matrix[rn][vn+1]; }
198 /** bit-length is negative entropy: -H(matrix). */
202 for (int i = 0; i < matrix.length; i++) {
213 for (int i = 0; i < matrix.length; i++) {
214 for (int j = 1; j < matrix[i].length; j++) {
215 sum += matrix[i][0] * len.getBitLength(matrix[i][j]);
230 public int[][] normalizeMatrix(int[][] matrix) {
231 long[] rowMap = new long[matrix.length];
232 for (int i = 0; i < matrix.length; i++) {
233 if (matrix[i].length <= 1) continue;
234 int count = matrix[i][0];
239 int[][] newMatrix = new int[matrix.length][];
245 if (i < matrix.length) {
248 row = matrix[(int)rowMapEntry];
288 if (i == matrix.length)
295 matrix = newMatrix;
296 if (fillp1 < matrix.length) {
298 System.arraycopy(matrix, 0, newMatrix, 0, fillp1);
299 matrix = newMatrix;
301 return matrix;
308 String[] histTitles = new String[matrix.length];
311 for (int i = 0; i < matrix.length; i++) {
320 assert(0.1 > Math.abs(len - getBitLength(matrix[i][1])));
364 for (int i = 0; i < matrix.length; i++) {
367 for (int j = 1; j < matrix[i].length; j++) {
368 buf.append(" ").append(matrix[i][j]);
383 int[][] matrix = makeMatrix(hist2col);
384 return matrix;
397 int[][] matrix = new int[countHist.length][];
401 for (int i = matrix.length; --i >= 0; ) {
412 matrix[i] = row;
415 return matrix;
490 * If matrix rows must be split, the latter parts (larger values)
491 * are placed earlier in the new matrix.
492 * If matrix rows are joined, they are resorted into ascending order.
496 int[][] regroupHistogram(int[][] matrix, int[] groups) {
498 for (int i = 0; i < matrix.length; i++) {
499 oldEntries += matrix[i].length-1;
528 int i = 0; // into matrix
530 int jMax = matrix[i].length;
541 jMax = matrix[++i].length;
544 groupWeight += (long) matrix[i][0] * len;
545 System.arraycopy(matrix[i], jMax - len, group, njFill, len);
554 assert(i == matrix.length-1);
567 // Build a matrix.
568 int[][] matrix = new int[1<<8][2];
570 matrix[i][0] = tally[i];
571 matrix[i][1] = i;
573 return new Histogram(matrix);
620 for (int i = 0; i < matrix.length; i++) {
621 int vlengthi = (matrix[i].length-1);
622 int count = matrix[i][0];
638 int[] revcol1 = new int[matrix.length]; //1st matrix colunm
639 for (int i = 0; i < matrix.length; i++) {
640 // spot checking: try a random query on each matrix row
641 assert(matrix[i].length > 1);
642 revcol1[matrix.length-i-1] = matrix[i][0];
643 assert(isSorted(matrix[i], 1, true));
644 int rand = (matrix[i].length+1) / 2;
645 int val = matrix[i][rand];
646 int count = matrix[i][0];
649 assert(counts[pos] == matrix[i][0]);