2016-10-02 9 views
-1

SparseVectorを扱うのが初めてです。私はSparseVectorsを2つ減算し、結果をSparseVectorとして返したいと思います。2つのスパースベクトルを引く方法は?

VectorSparseVectorの違いは何ですか?

私は2つのSparseVectorを取るdefine関数から始めようとしましたが、私を助けたとは言えませんでした!

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? 
    } 
} 
+0

あなたは 'SparseVector'クラスの現在の実装を投稿してくださいもらえますか? 'subtract()'メソッドの期待される意味を教えてください。 –

+0

私は定義されたメソッドの減算は、別のクラスでそれを呼び出すようにします。これは、1つのスパースベクトルで結果を返すために2つのスパースベクトルを受け取ります。 – user1

+0

メソッドは静的であるべきですか? –

答えて

0

カスタム実装を作成する必要はありません。次の例を参考にしてください:

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 classを参照してください。

カスタム実装

静的メソッドは冗長かもしれないことに注意してください。

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); 
+0

ありがとう、しかし、私は方法で、私は言ったように私は別のクラスに2つのスパースベクトルを持っていると私はそれらを引き算する必要があると私は – user1

+0

@ user1、大丈夫です。アップデートをご覧ください。 –

関連する問題