Как вычесть два разреженных вектора?

Я новичок в общении с SparseVector, Я хочу вычесть два SparseVectors и вернуть результат как SparseVector тоже.

В чем разница между Vector а также SparseVector?

Я попытался начать с определения функции, которые принимают два SparseVector но не получил ничего, что помогло мне!

import java.awt.Point;
import java.util.HashMap;
import cern.colt.list.DoubleArrayList;
import cern.colt.matrix.impl.SparseDoubleMatrix1D;

public class SparseVector extends SparseDoubleMatrix1D {
    public SparseVector(int size) {
        super(size);
    }

    public SparseVector(double[] values) {
        super(values);
    }

    public  SparseVector subtract(SparseVector v1, SparseVector v2) {
        // TODO: How to implement it?
    }
}

1 ответ

Кажется, нет необходимости создавать собственную реализацию. Пожалуйста, рассмотрите следующий пример:

import cern.colt.matrix.impl.SparseDoubleMatrix1D;
import cern.jet.math.Functions;

// …

final SparseDoubleMatrix1D aMatrix = new SparseDoubleMatrix1D(new double[] { 3.0 });
final SparseDoubleMatrix1D bMatrix = new SparseDoubleMatrix1D(new double[] { 1.0 });
aMatrix.assign(bMatrix, Functions.minus);
// aMatrix is the result.
System.out.println(aMatrix);

Пожалуйста, обратитесь к классу cern.jet.math.Functions.

Индивидуальная реализация

Обратите внимание, что статический метод может быть избыточным.

import cern.colt.matrix.impl.SparseDoubleMatrix1D;
import cern.jet.math.Functions;

final class SparseVector extends SparseDoubleMatrix1D {
    public SparseVector(int size) {
        super(size);
    }

    public SparseVector(double[] values) {
        super(values);
    }

    /**
     * Subtract otherVector from this vector.
     * The result is stored in this vector.
     * @param otherVector other vector
     * @return this vector
     */
    public SparseVector subtract(SparseVector otherVector) {
        assign(otherVector, Functions.minus);
        return this;
    }

    public static SparseVector subtract(SparseVector x, SparseVector y) {
        final SparseVector result = new SparseVector(x.toArray());
        result.subtract(y);
        return result;
    }
}

Пример:

final SparseVector aVector = new SparseVector(new double[] { 3.0 });
final SparseVector bVector = new SparseVector(new double[] { 1.0 });

aVector.subtract(bVector);

// aVector is the result.
System.out.println(aVector);
Другие вопросы по тегам