Example usage for org.apache.commons.math3.linear DefaultRealMatrixPreservingVisitor DefaultRealMatrixPreservingVisitor

List of usage examples for org.apache.commons.math3.linear DefaultRealMatrixPreservingVisitor DefaultRealMatrixPreservingVisitor

Introduction

In this page you can find the example usage for org.apache.commons.math3.linear DefaultRealMatrixPreservingVisitor DefaultRealMatrixPreservingVisitor.

Prototype

DefaultRealMatrixPreservingVisitor

Source Link

Usage

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;
}