Java Code Examples for cern.colt.matrix.DoubleMatrix2D#viewRow()
The following examples show how to use
cern.colt.matrix.DoubleMatrix2D#viewRow() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: CPLSAIAFactorizationModelFactory.java From RankSys with Mozilla Public License 2.0 | 5 votes |
/** * Normalizes matrix of p(z|u) such that \forall_u: \sum_z p(z|u) = 1. * * @param pu_z normalized matrix of p(z|u) */ @Override protected void normalizePuz(DoubleMatrix2D pu_z) { for (int u = 0; u < pu_z.rows(); u++) { DoubleMatrix1D tmp = pu_z.viewRow(u); double norm = tmp.aggregate(Functions.plus, Functions.identity); if (norm != 0.0) { tmp.assign(Functions.mult(1 / norm)); } } }
Example 2
Source File: PLSAIAFactorizationModelFactory.java From RankSys with Mozilla Public License 2.0 | 5 votes |
/** * Normalizes matrix of p(z|u) such that \forall_u: \sum_z p(z|u) = 1. * * @param pu_z normalized matrix of p(z|u) */ @Override protected void normalizePuz(DoubleMatrix2D pu_z) { for (int u = 0; u < pu_z.rows(); u++) { DoubleMatrix1D tmp = pu_z.viewRow(u); double norm = tmp.aggregate(Functions.plus, Functions.identity); if (norm != 0.0) { tmp.assign(Functions.mult(1 / norm)); } } }
Example 3
Source File: CholeskyDecomposition.java From database with GNU General Public License v2.0 | 5 votes |
/** Solves <tt>A*X = B</tt>; returns <tt>X</tt>. @param B A Matrix with as many rows as <tt>A</tt> and any number of columns. @return <tt>X</tt> so that <tt>L*L'*X = B</tt>. @exception IllegalArgumentException if <tt>B.rows() != A.rows()</tt>. @exception IllegalArgumentException if <tt>!isSymmetricPositiveDefinite()</tt>. */ private DoubleMatrix2D XXXsolveBuggy(DoubleMatrix2D B) { cern.jet.math.Functions F = cern.jet.math.Functions.functions; if (B.rows() != n) { throw new IllegalArgumentException("Matrix row dimensions must agree."); } if (!isSymmetricPositiveDefinite) { throw new IllegalArgumentException("Matrix is not symmetric positive definite."); } // Copy right hand side. DoubleMatrix2D X = B.copy(); int nx = B.columns(); // precompute and cache some views to avoid regenerating them time and again DoubleMatrix1D[] Xrows = new DoubleMatrix1D[n]; for (int k = 0; k < n; k++) Xrows[k] = X.viewRow(k); // Solve L*Y = B; for (int k = 0; k < n; k++) { for (int i = k+1; i < n; i++) { // X[i,j] -= X[k,j]*L[i,k] Xrows[i].assign(Xrows[k], F.minusMult(L.getQuick(i,k))); } Xrows[k].assign(F.div(L.getQuick(k,k))); } // Solve L'*X = Y; for (int k = n-1; k >= 0; k--) { Xrows[k].assign(F.div(L.getQuick(k,k))); for (int i = 0; i < k; i++) { // X[i,j] -= X[k,j]*L[k,i] Xrows[i].assign(Xrows[k], F.minusMult(L.getQuick(k,i))); } } return X; }
Example 4
Source File: CholeskyDecomposition.java From jAudioGIT with GNU Lesser General Public License v2.1 | 5 votes |
/** Solves <tt>A*X = B</tt>; returns <tt>X</tt>. @param B A Matrix with as many rows as <tt>A</tt> and any number of columns. @return <tt>X</tt> so that <tt>L*L'*X = B</tt>. @exception IllegalArgumentException if <tt>B.rows() != A.rows()</tt>. @exception IllegalArgumentException if <tt>!isSymmetricPositiveDefinite()</tt>. */ private DoubleMatrix2D XXXsolveBuggy(DoubleMatrix2D B) { cern.jet.math.Functions F = cern.jet.math.Functions.functions; if (B.rows() != n) { throw new IllegalArgumentException("Matrix row dimensions must agree."); } if (!isSymmetricPositiveDefinite) { throw new IllegalArgumentException("Matrix is not symmetric positive definite."); } // Copy right hand side. DoubleMatrix2D X = B.copy(); int nx = B.columns(); // precompute and cache some views to avoid regenerating them time and again DoubleMatrix1D[] Xrows = new DoubleMatrix1D[n]; for (int k = 0; k < n; k++) Xrows[k] = X.viewRow(k); // Solve L*Y = B; for (int k = 0; k < n; k++) { for (int i = k+1; i < n; i++) { // X[i,j] -= X[k,j]*L[i,k] Xrows[i].assign(Xrows[k], F.minusMult(L.getQuick(i,k))); } Xrows[k].assign(F.div(L.getQuick(k,k))); } // Solve L'*X = Y; for (int k = n-1; k >= 0; k--) { Xrows[k].assign(F.div(L.getQuick(k,k))); for (int i = 0; i < k; i++) { // X[i,j] -= X[k,j]*L[k,i] Xrows[i].assign(Xrows[k], F.minusMult(L.getQuick(k,i))); } } return X; }
Example 5
Source File: Sorting.java From database with GNU General Public License v2.0 | 4 votes |
/** Sorts the matrix rows according to the order induced by the specified comparator. The returned view is backed by this matrix, so changes in the returned view are reflected in this matrix, and vice-versa. The algorithm compares two rows (1-d matrices) at a time, determinining whether one is smaller, equal or larger than the other. To sort ranges use sub-ranging views. To sort columns by rows, use dice views. To sort descending, use flip views ... <p> <b>Example:</b> <pre> // sort by sum of values in a row DoubleMatrix1DComparator comp = new DoubleMatrix1DComparator() { public int compare(DoubleMatrix1D a, DoubleMatrix1D b) { double as = a.zSum(); double bs = b.zSum(); return as < bs ? -1 : as == bs ? 0 : 1; } }; sorted = quickSort(matrix,comp); </pre> @param matrix the matrix to be sorted. @param c the comparator to determine the order. @return a new matrix view having rows sorted as specified. <b>Note that the original matrix is left unaffected.</b> */ public DoubleMatrix2D sort(final DoubleMatrix2D matrix, final DoubleMatrix1DComparator c) { int[] rowIndexes = new int[matrix.rows()]; // row indexes to reorder instead of matrix itself for (int i=rowIndexes.length; --i >= 0; ) rowIndexes[i] = i; final DoubleMatrix1D[] views = new DoubleMatrix1D[matrix.rows()]; // precompute views for speed for (int i=views.length; --i >= 0; ) views[i] = matrix.viewRow(i); IntComparator comp = new IntComparator() { public int compare(int a, int b) { //return c.compare(matrix.viewRow(a), matrix.viewRow(b)); return c.compare(views[a], views[b]); } }; runSort(rowIndexes,0,rowIndexes.length,comp); // view the matrix according to the reordered row indexes // take all columns in the original order return matrix.viewSelection(rowIndexes,null); }
Example 6
Source File: RCDoubleMatrix2D.java From database with GNU General Public License v2.0 | 4 votes |
public DoubleMatrix2D zMult(DoubleMatrix2D B, DoubleMatrix2D C, final double alpha, double beta, boolean transposeA, boolean transposeB) { if (transposeB) B = B.viewDice(); int m = rows; int n = columns; if (transposeA) { m = columns; n = rows; } int p = B.columns; boolean ignore = (C==null); if (C==null) C = new DenseDoubleMatrix2D(m,p); if (B.rows != n) throw new IllegalArgumentException("Matrix2D inner dimensions must agree:"+toStringShort()+", "+ (transposeB ? B.viewDice() : B).toStringShort()); if (C.rows != m || C.columns != p) throw new IllegalArgumentException("Incompatibel result matrix: "+toStringShort()+", "+ (transposeB ? B.viewDice() : B).toStringShort()+", "+C.toStringShort()); if (this == C || B == C) throw new IllegalArgumentException("Matrices must not be identical"); if (!ignore) C.assign(cern.jet.math.Functions.mult(beta)); // cache views final DoubleMatrix1D[] Brows = new DoubleMatrix1D[n]; for (int i=n; --i>=0; ) Brows[i] = B.viewRow(i); final DoubleMatrix1D[] Crows = new DoubleMatrix1D[m]; for (int i=m; --i>=0; ) Crows[i] = C.viewRow(i); final cern.jet.math.PlusMult fun = cern.jet.math.PlusMult.plusMult(0); int[] idx = indexes.elements(); double[] vals = values.elements(); for (int i=starts.length-1; --i >= 0; ) { int low = starts[i]; for (int k=starts[i+1]; --k >= low; ) { int j = idx[k]; fun.multiplicator = vals[k]*alpha; if (!transposeA) Crows[i].assign(Brows[j],fun); else Crows[j].assign(Brows[i],fun); } } return C; }
Example 7
Source File: Sorting.java From jAudioGIT with GNU Lesser General Public License v2.1 | 4 votes |
/** Sorts the matrix rows according to the order induced by the specified comparator. The returned view is backed by this matrix, so changes in the returned view are reflected in this matrix, and vice-versa. The algorithm compares two rows (1-d matrices) at a time, determinining whether one is smaller, equal or larger than the other. To sort ranges use sub-ranging views. To sort columns by rows, use dice views. To sort descending, use flip views ... <p> <b>Example:</b> <pre> // sort by sum of values in a row DoubleMatrix1DComparator comp = new DoubleMatrix1DComparator() { public int compare(DoubleMatrix1D a, DoubleMatrix1D b) { double as = a.zSum(); double bs = b.zSum(); return as < bs ? -1 : as == bs ? 0 : 1; } }; sorted = quickSort(matrix,comp); </pre> @param matrix the matrix to be sorted. @param c the comparator to determine the order. @return a new matrix view having rows sorted as specified. <b>Note that the original matrix is left unaffected.</b> */ public DoubleMatrix2D sort(final DoubleMatrix2D matrix, final DoubleMatrix1DComparator c) { int[] rowIndexes = new int[matrix.rows()]; // row indexes to reorder instead of matrix itself for (int i=rowIndexes.length; --i >= 0; ) rowIndexes[i] = i; final DoubleMatrix1D[] views = new DoubleMatrix1D[matrix.rows()]; // precompute views for speed for (int i=views.length; --i >= 0; ) views[i] = matrix.viewRow(i); IntComparator comp = new IntComparator() { public int compare(int a, int b) { //return c.compare(matrix.viewRow(a), matrix.viewRow(b)); return c.compare(views[a], views[b]); } }; runSort(rowIndexes,0,rowIndexes.length,comp); // view the matrix according to the reordered row indexes // take all columns in the original order return matrix.viewSelection(rowIndexes,null); }
Example 8
Source File: RCDoubleMatrix2D.java From jAudioGIT with GNU Lesser General Public License v2.1 | 4 votes |
public DoubleMatrix2D zMult(DoubleMatrix2D B, DoubleMatrix2D C, final double alpha, double beta, boolean transposeA, boolean transposeB) { if (transposeB) B = B.viewDice(); int m = rows; int n = columns; if (transposeA) { m = columns; n = rows; } int p = B.columns; boolean ignore = (C==null); if (C==null) C = new DenseDoubleMatrix2D(m,p); if (B.rows != n) throw new IllegalArgumentException("Matrix2D inner dimensions must agree:"+toStringShort()+", "+ (transposeB ? B.viewDice() : B).toStringShort()); if (C.rows != m || C.columns != p) throw new IllegalArgumentException("Incompatibel result matrix: "+toStringShort()+", "+ (transposeB ? B.viewDice() : B).toStringShort()+", "+C.toStringShort()); if (this == C || B == C) throw new IllegalArgumentException("Matrices must not be identical"); if (!ignore) C.assign(cern.jet.math.Functions.mult(beta)); // cache views final DoubleMatrix1D[] Brows = new DoubleMatrix1D[n]; for (int i=n; --i>=0; ) Brows[i] = B.viewRow(i); final DoubleMatrix1D[] Crows = new DoubleMatrix1D[m]; for (int i=m; --i>=0; ) Crows[i] = C.viewRow(i); final cern.jet.math.PlusMult fun = cern.jet.math.PlusMult.plusMult(0); int[] idx = indexes.elements(); double[] vals = values.elements(); for (int i=starts.length-1; --i >= 0; ) { int low = starts[i]; for (int k=starts[i+1]; --k >= low; ) { int j = idx[k]; fun.multiplicator = vals[k]*alpha; if (!transposeA) Crows[i].assign(Brows[j],fun); else Crows[j].assign(Brows[i],fun); } } return C; }