Как вычесть два разреженных вектора?
Я новичок в общении с 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);