public class SparseAffinityMatrix extends java.lang.Object implements AffinityMatrix
| Modifier and Type | Field and Description |
|---|---|
(package private) ArrayDBIDs |
ids
Indexed data points
|
(package private) int[][] |
indices
Non-zero indexes
|
(package private) double[][] |
pij
Non-zero entries
|
| Constructor and Description |
|---|
SparseAffinityMatrix(double[][] pij,
int[][] indices,
ArrayDBIDs ids) |
| Modifier and Type | Method and Description |
|---|---|
double |
get(int i,
int j)
Get an entry by absolute position.
|
int |
iter(int x)
Iterator over non-zero features only.
|
int |
iterAdvance(int x,
int iter)
Advance the iterator to the next position.
|
DBIDArrayIter |
iterDBIDs()
Array iterator over the stored objects.
|
int |
iterDim(int x,
int iter)
Get the dimension an iterator points to.
|
boolean |
iterValid(int x,
int iter)
Test the iterator position for validity.
|
double |
iterValue(int x,
int iter)
Get the value an iterator points to.
|
void |
scale(double d)
Scale the whole matrix with a constant factor d.
|
int |
size()
Number of rows.
|
double[][] pij
int[][] indices
ArrayDBIDs ids
public SparseAffinityMatrix(double[][] pij,
int[][] indices,
ArrayDBIDs ids)
public double get(int i,
int j)
AffinityMatrixget in interface AffinityMatrixi - Rowj - Columnpublic void scale(double d)
AffinityMatrixscale in interface AffinityMatrixd - Scaling factor.public int size()
AffinityMatrixsize in interface AffinityMatrixpublic DBIDArrayIter iterDBIDs()
AffinityMatrixiterDBIDs in interface AffinityMatrixpublic int iter(int x)
AffinityMatrixAffinityMatrix.iterDim(int, int) to get the actual dimension. In fact,
usually this will be the ith non-zero value, assuming an array
representation.
Think of this number as an iterator. But for efficiency, it has a
primitive type, so it does not require garbage collection. With Java 10
value types, we will likely be able to make this both type-safe
and highly efficient again.
Intended usage:
for (int iter = v.iter(x); v.iterValid(x, iter); iter = v.iterAdvance(x, iter)) {
final int dim = v.iterDim(x, iter);
final int val = v.iterValue(x, iter);
}
Important: you need to use the return value of iterAdvance for the
next iteration, or you will have an endless loop.iter in interface AffinityMatrixx - Point to get the neighbors forpublic int iterAdvance(int x,
int iter)
AffinityMatrixiterAdvance in interface AffinityMatrixiter - Previous iterator positionpublic int iterDim(int x,
int iter)
AffinityMatrixiterDim in interface AffinityMatrixiter - Iterator positionpublic double iterValue(int x,
int iter)
AffinityMatrixiterValue in interface AffinityMatrixiter - Iterator positionpublic boolean iterValid(int x,
int iter)
AffinityMatrixiterValid in interface AffinityMatrixiter - Iterator positiontrue when it refers to a valid position.Copyright © 2019 ELKI Development Team. License information.