@Override final public DenseVector copyVector( final Vector m) { int n = m.getDimensionality(); DenseVector result = new DenseVector(n); for (int i = 0; i < n; ++i) { result.values[i] = m.get(i); } return result; }
@Override public double dotProduct( final Vector other) { // This is a generic implementation to support interoperability. // Sub-classes should make custom ones for performance. this.assertSameDimensionality(other); double result = 0.0; for (final VectorEntry entry : this) { result += entry.getValue() * other.get(entry.getIndex()); } return result; }
@Override public Vector times( final Vector vector) { vector.assertDimensionalityEquals(this.getNumColumns()); final Vector result = vector.getVectorFactory().createVector( this.getNumRows()); for (final MatrixEntry entry : this) { result.increment(entry.getRowIndex(), entry.getValue() * vector.get(entry.getColumnIndex())); } return result; }
@Override final public DenseVector copyVector( final Vector m) { int n = m.getDimensionality(); DenseVector result = new DenseVector(n); for (int i = 0; i < n; ++i) { result.values[i] = m.get(i); } return result; }
@Override public double dotProduct( final Vector other) { // This is a generic implementation to support interoperability. // Sub-classes should make custom ones for performance. this.assertSameDimensionality(other); double result = 0.0; for (final VectorEntry entry : this) { result += entry.getValue() * other.get(entry.getIndex()); } return result; }
@Override public Vector times( final Vector vector) { vector.assertDimensionalityEquals(this.getNumColumns()); final Vector result = vector.getVectorFactory().createVector( this.getNumRows()); for (final MatrixEntry entry : this) { result.increment(entry.getRowIndex(), entry.getValue() * vector.get(entry.getColumnIndex())); } return result; }
@Override final public DenseVector copyVector( final Vector m) { int n = m.getDimensionality(); DenseVector result = new DenseVector(n); for (int i = 0; i < n; ++i) { result.values[i] = m.get(i); } return result; }
@Override public double dotProduct( final Vector other) { // This is a generic implementation to support interoperability. // Sub-classes should make custom ones for performance. this.assertSameDimensionality(other); double result = 0.0; for (final VectorEntry entry : this) { result += entry.getValue() * other.get(entry.getIndex()); } return result; }
@Override public Vector times( final Vector vector) { vector.assertDimensionalityEquals(this.getNumColumns()); final Vector result = vector.getVectorFactory().createVector( this.getNumRows()); for (final MatrixEntry entry : this) { result.increment(entry.getRowIndex(), entry.getValue() * vector.get(entry.getColumnIndex())); } return result; }
@Override final public SparseVector copyVector( final Vector m) { if (m instanceof DenseVector) { return new SparseVector((DenseVector) m); } else if (m instanceof SparseVector) { return new SparseVector((SparseVector) m); } // I have to handle non-package vectors int n = m.getDimensionality(); SparseVector result = new SparseVector(n); for (int i = 0; i < n; ++i) { result.setElement(i, m.get(i)); } return result; }
@Override public double euclideanDistanceSquared( final Vector other) { // This is a generic implementation to support interoperability. // Sub-classes should make custom ones for performance. this.assertSameDimensionality(other); double result = 0.0; for (final VectorEntry entry : this) { final double difference = entry.getValue() - other.get(entry.getIndex()); result += difference * difference; } return result; }
@Override public Vector sample( final Random random) { // Create the result vector. final int K = this.getParameters().getDimensionality(); final Vector y = VectorFactory.getDenseDefault().createVector(K); double sum = 0.0; for (int i = 0; i < K; i++) { final double yi = GammaDistribution.sampleStandard( this.parameters.get(i), random); y.set(i, yi); sum += yi; } if (sum != 0.0) { y.scaleEquals(1.0 / sum); } return y; }
@Override public double euclideanDistanceSquared( final Vector other) { // This is a generic implementation to support interoperability. // Sub-classes should make custom ones for performance. this.assertSameDimensionality(other); double result = 0.0; for (final VectorEntry entry : this) { final double difference = entry.getValue() - other.get(entry.getIndex()); result += difference * difference; } return result; }
@Override public double euclideanDistanceSquared( final Vector other) { // This is a generic implementation to support interoperability. // Sub-classes should make custom ones for performance. this.assertSameDimensionality(other); double result = 0.0; for (final VectorEntry entry : this) { final double difference = entry.getValue() - other.get(entry.getIndex()); result += difference * difference; } return result; }
@Override public void dotTimesEquals( final Vector other) { // This is a generic implementation to support interoperability. // Sub-classes should make custom ones for performance. this.assertSameDimensionality(other); for (final VectorEntry entry : this) { entry.setValue(entry.getValue() * other.get(entry.getIndex())); } }
@Override public void dotTimesEquals( final Vector other) { // This is a generic implementation to support interoperability. // Sub-classes should make custom ones for performance. this.assertSameDimensionality(other); for (final VectorEntry entry : this) { entry.setValue(entry.getValue() * other.get(entry.getIndex())); } }
@Override public void dotTimesEquals( final Vector other) { // This is a generic implementation to support interoperability. // Sub-classes should make custom ones for performance. this.assertSameDimensionality(other); for (final VectorEntry entry : this) { entry.setValue(entry.getValue() * other.get(entry.getIndex())); } }
@Override final public void convertFromVector( final Vector v) { v.assertDimensionalityEquals(this.getNumRows() * this.getNumColumns()); final int numRows = this.getNumRows(); final int numColumns = this.getNumColumns(); for (int i = 0; i < numRows; ++i) { for (int j = 0; j < numColumns; ++j) { this.rows[i].values[j] = v.get(i + j * getNumRows()); } } }
@Override final public void convertFromVector( final Vector v) { v.assertDimensionalityEquals(this.getNumRows() * this.getNumColumns()); final int numRows = this.getNumRows(); final int numColumns = this.getNumColumns(); for (int i = 0; i < numRows; ++i) { for (int j = 0; j < numColumns; ++j) { this.rows[i].values[j] = v.get(i + j * getNumRows()); } } }
@Override final public void convertFromVector( final Vector v) { v.assertDimensionalityEquals(this.getNumRows() * this.getNumColumns()); final int numRows = this.getNumRows(); final int numColumns = this.getNumColumns(); for (int i = 0; i < numRows; ++i) { for (int j = 0; j < numColumns; ++j) { this.rows[i].values[j] = v.get(i + j * getNumRows()); } } }