List of usage examples for org.apache.commons.math3.linear DefaultRealMatrixPreservingVisitor DefaultRealMatrixPreservingVisitor
DefaultRealMatrixPreservingVisitor
From source file:com.itemanalysis.psychometrics.factoranalysis.GeominCriteria.java
public void computeValues(RealMatrix L) { // vgQ.geomin <- function(L, delta=.01){ // k <- ncol(L) // p <- nrow(L) // L2 <- L^2 + delta // pro <- exp(rowSums(log(L2))/k) // list(Gq=(2/k)*(L/L2)*matrix(rep(pro,k),p), // f= sum(pro), // Method="Geomin") // }/*from ww w .j a va 2s. c o m*/ int p = L.getRowDimension(); int k = L.getColumnDimension(); final RealMatrix L2 = MatrixUtils.multiplyElements(L, L).scalarAdd(delta); final double[] rowSums = new double[p]; L2.walkInRowOrder(new DefaultRealMatrixPreservingVisitor() { @Override public void visit(int row, int column, double value) { rowSums[row] += Math.log(value); } }); double sum = 0.0; for (int i = 0; i < p; i++) { rowSums[i] = Math.exp(rowSums[i] / (double) k); sum += rowSums[i]; } functionValue = sum; final RealMatrix M = new Array2DRowRealMatrix(p, k); M.walkInRowOrder(new DefaultRealMatrixChangingVisitor() { @Override public double visit(int row, int column, double value) { return rowSums[row]; } }); final double c = (2.0 / (double) k); gradient = L.copy(); gradient.walkInRowOrder(new DefaultRealMatrixChangingVisitor() { @Override public double visit(int row, int column, double value) { return c * (value / L2.getEntry(row, column)) * M.getEntry(row, column); } }); }
From source file:com.github.thorbenlindhauer.math.MathUtil.java
public boolean isZeroMatrix() { final AtomicBoolean isZeroMatrix = new AtomicBoolean(true); // TODO: optimize to stop after first non-zero entry matrix.walkInOptimizedOrder(new DefaultRealMatrixPreservingVisitor() { @Override/*from w w w. ja va 2s. c o m*/ public void visit(int row, int column, double value) { if (value > DOUBLE_COMPARISON_OFFSET || value < -DOUBLE_COMPARISON_OFFSET) { isZeroMatrix.set(false); } } }); return isZeroMatrix.get(); }
From source file:jurls.core.becca.DefaultZiptie.java
public static double getExponentialSum(RealMatrix c, double exponent, int rowStart, int rowEnd, int colStart, int colEnd) { AtomicDouble s = new AtomicDouble(0); c.walkInOptimizedOrder(new DefaultRealMatrixPreservingVisitor() { @Override//from www. j a va 2s.c o m public void visit(int row, int column, double value) { s.addAndGet(Math.pow(value, exponent)); } }, rowStart, rowEnd, colStart, colEnd); return s.doubleValue(); }
From source file:jurls.core.becca.DefaultZiptie.java
public static double getGeneralizedMean(RealMatrix c, double exponent, int rowStart, int rowEnd, int colStart, int colEnd) { AtomicDouble s = new AtomicDouble(0); AtomicInteger n = new AtomicInteger(0); c.walkInOptimizedOrder(new DefaultRealMatrixPreservingVisitor() { @Override// ww w. j av a 2 s. c o m public void visit(int row, int column, double value) { s.addAndGet(Math.pow(value, exponent)); n.incrementAndGet(); } }, rowStart, rowEnd, colStart, colEnd); return (1.0 / n.doubleValue()) * Math.pow(s.doubleValue(), 1.0 / exponent); }
From source file:jurls.core.becca.DefaultZiptie.java
public double getRowGeneralizedMean(RealMatrix c, Function<Integer, Double> rowEntryMultiplier, double exponent, int rowStart, int rowEnd, int column) { AtomicDouble s = new AtomicDouble(0); AtomicInteger n = new AtomicInteger(0); c.walkInOptimizedOrder(new DefaultRealMatrixPreservingVisitor() { @Override//www . j a va 2 s.c om public void visit(int row, int column, double value) { double a = Math.pow(value, exponent); double b = rowEntryMultiplier.apply(row); s.addAndGet(a * b); n.incrementAndGet(); } }, rowStart, rowEnd, column, column); return (1.0 / n.doubleValue()) * Math.pow(s.doubleValue(), 1.0 / exponent); }
From source file:hivemall.utils.math.MatrixUtils.java
@Nonnull public static double[] flatten(@Nonnull final RealMatrix[][] grid) { Preconditions.checkArgument(grid.length >= 1, "The number of rows must be greater than 1"); Preconditions.checkArgument(grid[0].length >= 1, "The number of cols must be greater than 1"); final int rows = grid.length; final int cols = grid[0].length; RealMatrix grid00 = grid[0][0];/* w ww. j a va 2 s . c om*/ Preconditions.checkNotNull(grid00); int cellRows = grid00.getRowDimension(); int cellCols = grid00.getColumnDimension(); final DoubleArrayList list = new DoubleArrayList(rows * cols * cellRows * cellCols); final RealMatrixPreservingVisitor visitor = new DefaultRealMatrixPreservingVisitor() { @Override public void visit(int row, int column, double value) { list.add(value); } }; for (int row = 0; row < rows; row++) { for (int col = 0; col < cols; col++) { RealMatrix cell = grid[row][col]; cell.walkInRowOrder(visitor); } } return list.toArray(); }
From source file:hivemall.utils.math.MatrixUtils.java
@Nonnull public static double[] flatten(@Nonnull final RealMatrix[] grid) { Preconditions.checkArgument(grid.length >= 1, "The number of rows must be greater than 1"); final int rows = grid.length; RealMatrix grid0 = grid[0];/*from www. ja v a 2s. com*/ Preconditions.checkNotNull(grid0); int cellRows = grid0.getRowDimension(); int cellCols = grid0.getColumnDimension(); final DoubleArrayList list = new DoubleArrayList(rows * cellRows * cellCols); final RealMatrixPreservingVisitor visitor = new DefaultRealMatrixPreservingVisitor() { @Override public void visit(int row, int column, double value) { list.add(value); } }; for (int row = 0; row < rows; row++) { RealMatrix cell = grid[row]; cell.walkInRowOrder(visitor); } return list.toArray(); }
From source file:com.itemanalysis.psychometrics.factoranalysis.GPArotation.java
private RealMatrix getNormalizingWeights(RealMatrix A, boolean normalize) { int nrow = A.getRowDimension(); int ncol = A.getColumnDimension(); final double[] w = new double[nrow]; RealMatrix W = new Array2DRowRealMatrix(nrow, ncol); if (!normalize) { W.walkInRowOrder(new DefaultRealMatrixChangingVisitor() { @Override/*from w w w.ja v a2 s . co m*/ public double visit(int row, int column, double value) { return 1.0; } }); return W; } //compute row sum of squared loadings A.walkInRowOrder(new DefaultRealMatrixPreservingVisitor() { @Override public void visit(int row, int column, double value) { w[row] += value * value; } }); //compute normalizing weights for the matrix W.walkInRowOrder(new DefaultRealMatrixChangingVisitor() { @Override public double visit(int row, int column, double value) { return Math.sqrt(w[row]); } }); return W; }
From source file:org.briljantframework.array.Matrices.java
/** * Convert the real matrix to a double array. * // ww w . j a v a 2 s .c o m * @param matrix the matrix * @return a new array */ public static DoubleArray toArray(RealMatrix matrix) { DoubleArray array = Arrays.doubleArray(matrix.getRowDimension(), matrix.getColumnDimension()); matrix.walkInOptimizedOrder(new DefaultRealMatrixPreservingVisitor() { @Override public void visit(int row, int column, double value) { array.set(row, column, value); } }); return array; }