Example usage for org.apache.commons.math3.linear RealMatrix getRowDimension

List of usage examples for org.apache.commons.math3.linear RealMatrix getRowDimension

Introduction

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

Prototype

int getRowDimension();

Source Link

Document

Returns the number of rows in the matrix.

Usage

From source file:org.eclipse.january.dataset.LinearAlgebra.java

private static Dataset createDataset(RealMatrix m) {
    DoubleDataset r = DatasetFactory.zeros(DoubleDataset.class, m.getRowDimension(), m.getColumnDimension());
    if (m instanceof Array2DRowRealMatrix) {
        double[][] data = ((Array2DRowRealMatrix) m).getDataRef();
        IndexIterator it = r.getIterator(true);
        int[] pos = it.getPos();
        while (it.hasNext()) {
            r.setAbs(it.index, data[pos[0]][pos[1]]);
        }//from w w  w.j  a  v  a  2 s .  c  o m
    } else {
        IndexIterator it = r.getIterator(true);
        int[] pos = it.getPos();
        while (it.hasNext()) {
            r.setAbs(it.index, m.getEntry(pos[0], pos[1]));
        }
    }
    return r;
}

From source file:org.grouplens.samantha.modeler.solver.RandomInitializer.java

public void randInitMatrix(RealMatrix mat, boolean normalize) {
    int len = mat.getRowDimension();
    RealVector vec = MatrixUtils.createRealVector(new double[mat.getColumnDimension()]);
    for (int i = 0; i < len; i++) {
        randInitVector(vec, normalize);//from ww  w.ja  v  a 2 s .  c o  m
        mat.setRowVector(i, vec);
    }
}

From source file:org.interpss.opf.dc.impl.EqIneqMatrixBuilder.java

public Array2DRowRealMatrix formG() {
    RealMatrix U_matrix = formU();
    ;//from   w ww .jav  a  2s .c o  m
    RealMatrix Wrr_matrix = formReducedADWMatrix();
    int gcnt = U_matrix.getRowDimension() + Wrr_matrix.getRowDimension();
    Array2DRowRealMatrix G = new Array2DRowRealMatrix(gcnt, gcnt);
    G.setSubMatrix(U_matrix.getData(), 0, 0);
    G.setSubMatrix(Wrr_matrix.getData(), U_matrix.getRowDimension(), U_matrix.getColumnDimension());
    return G;
}

From source file:org.knime.al.util.noveltydetection.knfst.KNFST.java

public static RealMatrix projection(final RealMatrix kernelMatrix, final String[] labels)
        throws KNFSTException {

    final ClassWrapper[] classes = ClassWrapper.classes(labels);

    // check labels
    if (classes.length == 1) {
        throw new IllegalArgumentException(
                "not able to calculate a nullspace from data of a single class using KNFST (input variable \"labels\" only contains a single value)");
    }/*  ww w  . ja v  a 2  s. c o m*/

    // check kernel matrix
    if (!kernelMatrix.isSquare()) {
        throw new IllegalArgumentException("The KernelMatrix must be quadratic!");
    }

    // calculate weights of orthonormal basis in kernel space
    final RealMatrix centeredK = centerKernelMatrix(kernelMatrix);

    final EigenDecomposition eig = new EigenDecomposition(centeredK);
    final double[] eigVals = eig.getRealEigenvalues();
    final ArrayList<Integer> nonZeroEigValIndices = new ArrayList<Integer>();
    for (int i = 0; i < eigVals.length; i++) {
        if (eigVals[i] > 1e-12) {
            nonZeroEigValIndices.add(i);
        }
    }

    int eigIterator = 0;
    final RealMatrix eigVecs = eig.getV();
    RealMatrix basisvecs = null;
    try {
        basisvecs = MatrixUtils.createRealMatrix(eigVecs.getRowDimension(), nonZeroEigValIndices.size());
    } catch (final Exception e) {
        throw new KNFSTException("Something went wrong. Try different parameters or a different kernel.");
    }

    for (final Integer index : nonZeroEigValIndices) {
        final double normalizer = 1 / Math.sqrt(eigVals[index]);
        final RealVector basisVec = eigVecs.getColumnVector(eigIterator).mapMultiply(normalizer);
        basisvecs.setColumnVector(eigIterator++, basisVec);
    }

    // calculate transformation T of within class scatter Sw:
    // T= B'*K*(I-L) and L a block matrix
    final RealMatrix L = kernelMatrix.createMatrix(kernelMatrix.getRowDimension(),
            kernelMatrix.getColumnDimension());
    int start = 0;
    for (final ClassWrapper cl : classes) {
        final int count = cl.getCount();
        L.setSubMatrix(MatrixFunctions.ones(count, count).scalarMultiply(1.0 / count).getData(), start, start);
        start += count;
    }

    // need Matrix M with all entries 1/m to modify basisvecs which allows
    // usage of
    // uncentered kernel values (eye(size(M)).M)*basisvecs
    final RealMatrix M = MatrixFunctions
            .ones(kernelMatrix.getColumnDimension(), kernelMatrix.getColumnDimension())
            .scalarMultiply(1.0 / kernelMatrix.getColumnDimension());
    final RealMatrix I = MatrixUtils.createRealIdentityMatrix(M.getColumnDimension());

    // compute helper matrix H
    final RealMatrix H = ((I.subtract(M)).multiply(basisvecs)).transpose().multiply(kernelMatrix)
            .multiply(I.subtract(L));

    // T = H*H' = B'*Sw*B with B=basisvecs
    final RealMatrix T = H.multiply(H.transpose());

    // calculate weights for null space
    RealMatrix eigenvecs = MatrixFunctions.nullspace(T);

    if (eigenvecs == null) {
        final EigenDecomposition eigenComp = new EigenDecomposition(T);
        final double[] eigenvals = eigenComp.getRealEigenvalues();
        eigenvecs = eigenComp.getV();
        final int minId = MatrixFunctions.argmin(MatrixFunctions.abs(eigenvals));
        final double[] eigenvecsData = eigenvecs.getColumn(minId);
        eigenvecs = MatrixUtils.createColumnRealMatrix(eigenvecsData);
    }

    // System.out.println("eigenvecs:");
    // test.printMatrix(eigenvecs);

    // calculate null space projection
    final RealMatrix proj = ((I.subtract(M)).multiply(basisvecs)).multiply(eigenvecs);

    return proj;
}

From source file:org.knime.al.util.noveltydetection.knfst.KNFST.java

private static RealMatrix centerKernelMatrix(final RealMatrix kernelMatrix) {
    // get size of kernelMatrix
    final int n = kernelMatrix.getRowDimension();

    // get mean values for each row/column
    final RealVector columnMeans = MatrixFunctions.columnMeans(kernelMatrix);
    final double matrixMean = MatrixFunctions.mean(kernelMatrix);

    RealMatrix centeredKernelMatrix = kernelMatrix.copy();

    for (int k = 0; k < n; k++) {
        centeredKernelMatrix.setRowVector(k, centeredKernelMatrix.getRowVector(k).subtract(columnMeans));
        centeredKernelMatrix.setColumnVector(k, centeredKernelMatrix.getColumnVector(k).subtract(columnMeans));
    }/* w  w w .j a  v  a  2s .  c o  m*/

    centeredKernelMatrix = centeredKernelMatrix.scalarAdd(matrixMean);

    return centeredKernelMatrix;
}

From source file:org.knime.al.util.noveltydetection.knfst.MatrixFunctions.java

public static RealMatrix nullspace(final RealMatrix matrix) {
    final SingularValueDecomposition svd = new SingularValueDecomposition(matrix);
    final int rank = svd.getRank();
    final RealMatrix V = svd.getV();
    RealMatrix nullspace = null;/*from  w w  w .  j  a v a 2  s  . co  m*/
    if (rank < matrix.getColumnDimension()) {
        nullspace = V.getSubMatrix(0, V.getRowDimension() - 1, rank, V.getColumnDimension() - 1);
    }

    return nullspace;
}

From source file:org.knime.al.util.noveltydetection.knfst.MatrixFunctions.java

public static RealVector rowMins(final RealMatrix matrix) {
    final RealVector rowMins = MatrixUtils.createRealVector(new double[matrix.getRowDimension()]);

    for (int r = 0; r < matrix.getRowDimension(); r++) {
        rowMins.setEntry(r, matrix.getRowVector(r).getMinValue());
    }/*from w ww .  jav a2  s .co m*/

    return rowMins;
}

From source file:org.knime.al.util.noveltydetection.knfst.MatrixFunctions.java

public static RealMatrix sqrt(final RealMatrix matrix) {
    final double[][] data = matrix.getData();
    for (int r = 0; r < matrix.getRowDimension(); r++) {
        for (int c = 0; c < matrix.getColumnDimension(); c++) {
            data[r][c] = Math.sqrt(data[r][c]);
        }/*from  w  w w. ja  va2s .  c om*/
    }
    return MatrixUtils.createRealMatrix(data);
}

From source file:org.knime.al.util.noveltydetection.knfst.MatrixFunctions.java

public static RealMatrix multiplyElementWise(final RealMatrix matrix1, final RealMatrix matrix2) {
    if (matrix1.getRowDimension() != matrix2.getRowDimension()
            || matrix1.getColumnDimension() != matrix2.getColumnDimension()) {
        throw new IllegalArgumentException("The matrices must be of the same dimensions!");
    }//from   w w  w .j  ava 2s. c  om

    final RealMatrix result = matrix1.createMatrix(matrix1.getRowDimension(), matrix1.getColumnDimension());

    for (int r = 0; r < matrix1.getRowDimension(); r++) {
        for (int c = 0; c < matrix1.getColumnDimension(); c++) {
            result.setEntry(r, c, matrix1.getEntry(r, c) * matrix2.getEntry(r, c));
        }
    }

    return result;
}

From source file:org.knime.al.util.noveltydetection.knfst.MatrixFunctions.java

public static RealVector rowSums(final RealMatrix matrix) {
    final RealVector rowSums = MatrixUtils.createRealVector(new double[matrix.getRowDimension()]);
    for (int r = 0; r < matrix.getRowDimension(); r++) {
        final double[] row = matrix.getRow(r);
        for (final double cell : row) {
            rowSums.addToEntry(r, cell);
        }/*from  w  ww. j  a  v  a 2 s . c  om*/
    }
    return rowSums;
}