當前位置: 首頁>>代碼示例>>Java>>正文


Java MatrixUtils類代碼示例

本文整理匯總了Java中org.apache.commons.math3.linear.MatrixUtils的典型用法代碼示例。如果您正苦於以下問題:Java MatrixUtils類的具體用法?Java MatrixUtils怎麽用?Java MatrixUtils使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


MatrixUtils類屬於org.apache.commons.math3.linear包,在下文中一共展示了MatrixUtils類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: computeWeightedJacobian

import org.apache.commons.math3.linear.MatrixUtils; //導入依賴的package包/類
/**
 * Computes the Jacobian matrix.
 *
 * @param params Model parameters at which to compute the Jacobian.
 * @return the weighted Jacobian: W<sup>1/2</sup> J.
 * @throws DimensionMismatchException if the Jacobian dimension does not
 * match problem dimension.
 * @since 3.1
 */
protected RealMatrix computeWeightedJacobian(double[] params) {
    ++jacobianEvaluations;

    final DerivativeStructure[] dsPoint = new DerivativeStructure[params.length];
    final int nC = params.length;
    for (int i = 0; i < nC; ++i) {
        dsPoint[i] = new DerivativeStructure(nC, 1, i, params[i]);
    }
    final DerivativeStructure[] dsValue = jF.value(dsPoint);
    final int nR = getTarget().length;
    if (dsValue.length != nR) {
        throw new DimensionMismatchException(dsValue.length, nR);
    }
    final double[][] jacobianData = new double[nR][nC];
    for (int i = 0; i < nR; ++i) {
        int[] orders = new int[nC];
        for (int j = 0; j < nC; ++j) {
            orders[j] = 1;
            jacobianData[i][j] = dsValue[i].getPartialDerivative(orders);
            orders[j] = 0;
        }
    }

    return weightMatrixSqrt.multiply(MatrixUtils.createRealMatrix(jacobianData));
}
 
開發者ID:biocompibens,項目名稱:SME,代碼行數:35,代碼來源:AbstractLeastSquaresOptimizer.java

示例2: getTruncatedSVD

import org.apache.commons.math3.linear.MatrixUtils; //導入依賴的package包/類
/**
 * truncated SVD as taken from http://stackoverflow.com/questions/19957076/best-way-to-compute-a-truncated-singular-value-decomposition-in-java
 */
static double[][] getTruncatedSVD(double[][] matrix, final int k) {
  SingularValueDecomposition svd = new SingularValueDecomposition(MatrixUtils.createRealMatrix(matrix));

  double[][] truncatedU = new double[svd.getU().getRowDimension()][k];
  svd.getU().copySubMatrix(0, truncatedU.length - 1, 0, k - 1, truncatedU);

  double[][] truncatedS = new double[k][k];
  svd.getS().copySubMatrix(0, k - 1, 0, k - 1, truncatedS);

  double[][] truncatedVT = new double[k][svd.getVT().getColumnDimension()];
  svd.getVT().copySubMatrix(0, k - 1, 0, truncatedVT[0].length - 1, truncatedVT);

  RealMatrix approximatedSvdMatrix = (MatrixUtils.createRealMatrix(truncatedU)).multiply(
      MatrixUtils.createRealMatrix(truncatedS)).multiply(MatrixUtils.createRealMatrix(truncatedVT));

  return approximatedSvdMatrix.getData();
}
 
開發者ID:tteofili,項目名稱:par2hier,代碼行數:21,代碼來源:Par2HierUtils.java

示例3: concatHorizontally

import org.apache.commons.math3.linear.MatrixUtils; //導入依賴的package包/類
public static RealMatrix concatHorizontally(final RealMatrix left,
        final RealMatrix right) {
    if (left.getRowDimension() != right.getRowDimension()) {
        throw new IllegalArgumentException(
                "The matrices must have the same row dimension!");
    }

    final double[][] result =
            new double[left.getRowDimension()][left.getColumnDimension()
                    + right.getColumnDimension()];

    final int lc = left.getColumnDimension();

    for (int r = 0; r < left.getRowDimension(); r++) {
        for (int c = 0; c < left.getColumnDimension(); c++) {
            result[r][c] = left.getEntry(r, c);
        }
        for (int c = 0; c < right.getColumnDimension(); c++) {
            result[r][lc + c] = right.getEntry(r, c);
        }
    }

    return MatrixUtils.createRealMatrix(result);
}
 
開發者ID:knime,項目名稱:knime-activelearning,代碼行數:25,代碼來源:MatrixFunctions.java

示例4: concatVertically

import org.apache.commons.math3.linear.MatrixUtils; //導入依賴的package包/類
public static RealMatrix concatVertically(final RealMatrix top,
        final RealMatrix bottom) {
    if (top.getColumnDimension() != bottom.getColumnDimension()) {
        throw new IllegalArgumentException(
                "The matrices must have the same column dimension!");
    }

    final double[][] result = new double[top.getRowDimension()
            + bottom.getRowDimension()][top.getColumnDimension()];

    final int tr = top.getRowDimension();

    for (int c = 0; c < top.getColumnDimension(); c++) {
        for (int r = 0; r < top.getRowDimension(); r++) {
            result[r][c] = top.getEntry(r, c);
        }
        for (int r = 0; r < bottom.getRowDimension(); r++) {
            result[tr + r][c] = bottom.getEntry(r, c);
        }
    }

    return MatrixUtils.createRealMatrix(result);
}
 
開發者ID:knime,項目名稱:knime-activelearning,代碼行數:24,代碼來源:MatrixFunctions.java

示例5: makeDataMatrix

import org.apache.commons.math3.linear.MatrixUtils; //導入依賴的package包/類
private RealMatrix makeDataMatrix(List<double[]> X, double[] meanX) {
	if (meanX == null) {
		return makeDataMatrix(X);
	}
	final int m = X.size();
	final int n = X.get(0).length;
	RealMatrix M = MatrixUtils.createRealMatrix(n, m);
	RealVector mean = MatrixUtils.createRealVector(meanX);
	int i = 0;
	for (double[] x : X) {
		RealVector xi = MatrixUtils.createRealVector(x).subtract(mean);
		M.setColumnVector(i, xi);
		i++;
	}
	return M;
}
 
開發者ID:imagingbook,項目名稱:imagingbook-common,代碼行數:17,代碼來源:ProcrustesFit.java

示例6: MahalanobisDistance

import org.apache.commons.math3.linear.MatrixUtils; //導入依賴的package包/類
/**
 * Create a new instance from an array of m-dimensional samples, e.g.
 * samples = {{x1,y1}, {x2,y2},...,{xn,yn}} for a vector of n two-dimensional
 * samples.
 * @param samples A vector of length n with m-dimensional samples, i.e.
 *      samples[k][i] represents the i-th component of the k-th sample.
 * @param diagonalIncrement Quantity added to the diagonal values of the
 *      covariance matrix to avoid singularity. 
 */
public MahalanobisDistance(double[][] samples, double diagonalIncrement) {
	n = samples.length;
	m = samples[0].length;
	if (n < 1 || m < 1) {
		throw new IllegalArgumentException("dimension less than 1");
	}
	if (diagonalIncrement < 0) {
		throw new IllegalArgumentException("diagonal increment must be positive");
	}

	mean = makeMeanVector(samples);
	
	Covariance cov = new Covariance(samples, BIAS_CORRECTION);	
	RealMatrix S = cov.getCovarianceMatrix();
	
	// condition the covariance matrix to avoid singularity:
	S = conditionCovarianceMatrix(S);
	
	Cov = S.getData();
	// get the inverse covariance matrix
	iCov = MatrixUtils.inverse(S).getData();	// not always symmetric?
}
 
開發者ID:imagingbook,項目名稱:imagingbook-common,代碼行數:32,代碼來源:MahalanobisDistance.java

示例7: main

import org.apache.commons.math3.linear.MatrixUtils; //導入依賴的package包/類
public static void main(String[] args) {
          MihcConfigData conf = new MihcConfigData();
          RealMatrix inverse = MatrixUtils.inverse(MatrixUtils.createRealMatrix(conf.filterNewXeon4fake));
          printMat(inverse);

//        Array2DRowRealMatrix AsnInv = (Array2DRowRealMatrix) MatrixUtils.createRealMatrix(conf.inverse);
//        printMat(AsnInv);
//        double[] gain = new double[]{1,1,1,1,2,1};
//        for (int i=0; i<gain.length; i++) gain[i] = 1d/gain[i];
//        RealMatrix GiiInv = MatrixUtils.createRealDiagonalMatrix(gain);
//        printMat(GiiInv);
//        Array2DRowRealMatrix AsnInvNorm = (Array2DRowRealMatrix) AsnInv.multiply(GiiInv);
//        printMat(AsnInvNorm);
//        double[] out = new double[gain.length];
//
//        //double[] in = new double[]{0,000,0,0,100,39};
//        double[] in = new double[]{0,0,0,1.554,100,36.232};   // -> 0,0,0,0,100,0
//        fastMultiply(AsnInvNorm,in,out);
//        System.out.println(Arrays.toString(out));
    }
 
開發者ID:mstritt,項目名稱:orbit-image-analysis,代碼行數:21,代碼來源:DemoMihcComputation.java

示例8: setValues

import org.apache.commons.math3.linear.MatrixUtils; //導入依賴的package包/類
@Override
public void setValues(double[] y, double[] x) {
    if (x.length != y.length) {
        throw new IllegalArgumentException(String.format("The numbers of y and x values must be equal (%d != %d)", y.length, x.length));
    }
    double[][] xData = new double[x.length][];
    for (int i = 0; i < x.length; i++) {
        // the implementation determines how to produce a vector of predictors from a single x
        xData[i] = xVector(x[i]);
    }
    if (logY()) { // in some models we are predicting ln y, so we replace each y with ln y
        y = Arrays.copyOf(y, y.length); // user might not be finished with the array we were given
        for (int i = 0; i < x.length; i++) {
            y[i] = Math.log(y[i]);
        }
    }
    final OLSMultipleLinearRegression ols = new OLSMultipleLinearRegression();
    ols.setNoIntercept(true); // let the implementation include a constant in xVector if desired
    ols.newSampleData(y, xData); // provide the data to the model
    coef = MatrixUtils.createColumnRealMatrix(ols.estimateRegressionParameters()); // get our coefs
    last_error_rate = ols.estimateErrorVariance();
    Log.d(TAG, getClass().getSimpleName() + " Forecast Error rate: errorvar:"
            + JoH.qs(last_error_rate, 4)
            + " regssionvar:" + JoH.qs(ols.estimateRegressandVariance(), 4)
            + "  stderror:" + JoH.qs(ols.estimateRegressionStandardError(), 4));
}
 
開發者ID:NightscoutFoundation,項目名稱:xDrip,代碼行數:27,代碼來源:Forecast.java

示例9: render

import org.apache.commons.math3.linear.MatrixUtils; //導入依賴的package包/類
public void render(World world, RenderCallback callback) {
    new BukkitRunnable() {
        public void run() {
            long msBegin = System.currentTimeMillis();

            renderNode(world, scene, MatrixUtils.createRealIdentityMatrix(4));

            long msEnd = System.currentTimeMillis();

            System.out.println("Filling calculated (" + (msEnd - msBegin) + "ms)");

            if (callback != null)
                renderer.addCallback(callback);
        }
    }.runTaskAsynchronously(plugin);
}
 
開發者ID:plushmonkey,項目名稱:modelviewer,代碼行數:17,代碼來源:BukkitSceneView.java

示例10: getVectorVarByName

import org.apache.commons.math3.linear.MatrixUtils; //導入依賴的package包/類
public List<RealVector> getVectorVarByName(String name) {
    String varName = "V_" + name;
    JsonNode obj = redisService.getValue(spaceIdentifier, varName);
    int size = obj.get("size").asInt();
    int dim = obj.get("dim").asInt();
    double initial = obj.get("initial").asDouble();
    boolean randomize = obj.get("randomize").asBoolean();
    boolean normalize = obj.get("normalize").asBoolean();
    List<RealVector> vars = new ArrayList<>(size);
    for (int i=0; i<size; i++) {
        RealVector var = MatrixUtils.createRealVector(new double[dim]);
        initializeVector(var, initial, randomize, normalize);
        vars.add(var);
    }
    String varIdxName = "IDX_V_" + name + "_";
    List<String> keys = redisService.keysWithPrefixPattern(spaceIdentifier, varIdxName);
    List<JsonNode> values = redisService.bulkGet(keys);
    for (JsonNode one : values) {
        setValue(vars, one, dim);
    }
    return vars;
}
 
開發者ID:grouplens,項目名稱:samantha,代碼行數:23,代碼來源:RedisVariableSpace.java

示例11: ensureVectorVar

import org.apache.commons.math3.linear.MatrixUtils; //導入依賴的package包/類
final public void ensureVectorVar(String name, int size, int dim, double initial,
        boolean randomize, boolean normalize) {
    writeLock.lock();
    try {
        int curSize = vectorVars.get(name).size();
        if (curSize < size) {
            for (int i=curSize; i<size; i++) {
                RealVector vec = MatrixUtils.createRealVector(new double[dim]);
                initializeVector(vec, initial, randomize, normalize);
                vectorVars.get(name).add(vec);
            }
        }
        curSize = readLocks.size();
        SpaceUtilities.fillReadWriteLocks(readLocks, writeLocks, curSize, size);
    } finally {
        writeLock.unlock();
    }
}
 
開發者ID:grouplens,項目名稱:samantha,代碼行數:19,代碼來源:SynchronizedVariableSpace.java

示例12: getStochasticOracle

import org.apache.commons.math3.linear.MatrixUtils; //導入依賴的package包/類
public List<StochasticOracle> getStochasticOracle(List<LearningInstance> instances) {
    List<StochasticOracle> oracles = new ArrayList<>(instances.size());
    for (LearningInstance inIns : instances) {
        SVDFeatureInstance ins = (SVDFeatureInstance) inIns;
        StochasticOracle orc = new StochasticOracle();
        RealVector ufactSum = MatrixUtils.createRealVector(new double[factDim]);
        RealVector ifactSum = MatrixUtils.createRealVector(new double[factDim]);
        double pred = predict(ins, orc, ufactSum, ifactSum);
        RealVector leftGrad = ifactSum;
        RealVector rightGrad = ufactSum;
        for (int i = 0; i < ins.ufeas.size(); i++) {
            orc.addVectorOracle(SVDFeatureKey.FACTORS.get(),
                    ins.ufeas.get(i).getIndex(),
                    leftGrad.mapMultiply(ins.ufeas.get(i).getValue()));
        }
        for (int i = 0; i < ins.ifeas.size(); i++) {
            orc.addVectorOracle(SVDFeatureKey.FACTORS.get(),
                    ins.ifeas.get(i).getIndex(),
                    rightGrad.mapMultiply(ins.ifeas.get(i).getValue()));
        }
        orc.setValues(pred, ins.label, ins.weight);
        oracles.add(orc);
    }
    return oracles;
}
 
開發者ID:grouplens,項目名稱:samantha,代碼行數:26,代碼來源:SVDFeature.java

示例13: testDelta

import org.apache.commons.math3.linear.MatrixUtils; //導入依賴的package包/類
/**
 * If we rotate the covariance matrix by the angle delta, we should get a diagonal matrix.
 */
@Test
public void testDelta() {
    assertTrue("Covariance matrix should not be diagonal",
            covarianceMatrix.getEntry(0, 1) != 0 && covarianceMatrix.getEntry(1, 0) != 0);

    double delta = poser.calculateDelta(eig);

    double[][] rot = {{Math.cos(delta), Math.sin(delta)},
            {-Math.sin(delta), Math.cos(delta)}
    };

    RealMatrix rotMatrix = MatrixUtils.createRealMatrix(rot);
    RealMatrix b = (rotMatrix.multiply(covarianceMatrix)).multiply(rotMatrix.transpose());
    //check if non diagonal elements are close to zero.
    assertEquals(b.getEntry(1, 0), 0.0, EPSILON);
    assertEquals(b.getEntry(0, 1), 0.0, EPSILON);
}
 
開發者ID:fact-project,項目名稱:fact-tools,代碼行數:21,代碼來源:HillasTest.java

示例14: applyStackManifold

import org.apache.commons.math3.linear.MatrixUtils; //導入依賴的package包/類
public ImagePlus applyStackManifold(ImageStack imStack, ImagePlus manifold){
    int dimW            =   imStack.getWidth();
    int dimH            =   imStack.getHeight();

    RealMatrix projMnold    = MatrixUtils.createRealMatrix(SME_ENS_Utils.convertFloatMatrixToDoubles(manifold.getProcessor().getFloatArray(),dimW,dimH)).transpose();

    for(int j=0;j<dimH;j++){
        for(int i=0;i<dimW;i++){
            int zIndex = ((int) Math.round(stackSize*(projMnold.getEntry(j,i)/255)));
            projMnold.setEntry (j,i,imStack.getVoxel(i,j,zIndex-1));
        }
    }

    float[][] mfoldFlaot = SME_ENS_Utils.convertDoubleMatrixToFloat(projMnold.transpose().getData(),dimW,dimH);
    ImagePlus smeManifold = new ImagePlus("",((ImageProcessor) new FloatProcessor(mfoldFlaot)));

    return(smeManifold);
}
 
開發者ID:biocompibens,項目名稱:SME,代碼行數:19,代碼來源:SME_Plugin_Simple.java

示例15: padSymetricMatrix

import org.apache.commons.math3.linear.MatrixUtils; //導入依賴的package包/類
public static RealMatrix padSymetricMatrix(RealMatrix inMatrix, Boolean transMatr){
    RealMatrix padedMatrix          = null;
    RealMatrix templateMatrix       = null;

    //transpose if necessary
    if(transMatr) {
        templateMatrix = inMatrix.copy().transpose();
    }else{
        templateMatrix = inMatrix.copy();
    }

    padedMatrix          = MatrixUtils.createRealMatrix(templateMatrix.getRowDimension()+2,
            templateMatrix.getColumnDimension());

    int iPadStart = 1,iPadEnd = padedMatrix.getRowDimension()-1;

    padedMatrix.setRowVector(0,templateMatrix.getRowVector(0));
    padedMatrix.setRowVector(iPadEnd,templateMatrix.getRowVector(templateMatrix.getRowDimension()-1));

    // symetrical padding
    for(int i=iPadStart;i<iPadEnd;i++){
            padedMatrix.setRowVector(i,templateMatrix.getRowVector(i-1));
    }

    return(padedMatrix);
}
 
開發者ID:biocompibens,項目名稱:SME,代碼行數:27,代碼來源:SME_ENS_Utils.java


注:本文中的org.apache.commons.math3.linear.MatrixUtils類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。