|
Parallel Colt 0.7.2 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcern.colt.PersistentObject
cern.colt.matrix.tint.IntFactory2D
public class IntFactory2D
Factory for convenient construction of 2-d matrices holding int cells. Also provides convenient methods to compose (concatenate) and decompose (split) matrices from/to constituent blocks.
| Construction | Use idioms like IntFactory2D.dense.make(4,4) to construct dense matrices, IntFactory2D.sparse.make(4,4) to construct sparse matrices. |
| Construction with initial values | Use other make methods to construct matrices with given initial values. |
| Appending rows and columns | Use methods appendColumns, appendRows and
repeat to append rows and columns. |
| General block matrices | Use methods compose and
decompose to work with
general block matrices. |
| Diagonal matrices | Use methods diagonal(vector),
diagonal(matrix) and identity to work with diagonal matrices. |
| Diagonal block matrices | Use method composeDiagonal to work with diagonal block matrices. |
| Random | Use methods random and
sample to construct random matrices. |
If the factory is used frequently it might be useful to streamline the notation. For example by aliasing:
IntFactory2D F = IntFactory2D.dense; F.make(4,4); F.descending(10,20); F.random(4,4); ... |
| Field Summary | |
|---|---|
static IntFactory2D |
dense
A factory producing dense matrices. |
static IntFactory2D |
rowCompressed
A factory producing sparse row compressed matrices. |
static IntFactory2D |
sparse
A factory producing sparse hash matrices. |
| Fields inherited from class cern.colt.PersistentObject |
|---|
serialVersionUID |
| Method Summary | |
|---|---|
IntMatrix2D |
appendColumn(IntMatrix2D A,
IntMatrix1D b)
|
IntMatrix2D |
appendColumns(IntMatrix2D A,
IntMatrix2D B)
C = A||B; Constructs a new matrix which is the column-wise concatenation of two other matrices. |
IntMatrix2D |
appendRow(IntMatrix2D A,
IntMatrix1D b)
|
IntMatrix2D |
appendRows(IntMatrix2D A,
IntMatrix2D B)
C = A||B; Constructs a new matrix which is the row-wise concatenation of two other matrices. |
IntMatrix2D |
ascending(int rows,
int columns)
Constructs a matrix with cells having ascending values. |
IntMatrix2D |
compose(IntMatrix2D[][] parts)
Constructs a block matrix made from the given parts. |
IntMatrix2D |
composeBidiagonal(IntMatrix2D A,
IntMatrix2D B)
|
IntMatrix2D |
composeDiagonal(IntMatrix2D A,
IntMatrix2D B)
Constructs a diagonal block matrix from the given parts (the direct sum of two matrices). |
IntMatrix2D |
composeDiagonal(IntMatrix2D A,
IntMatrix2D B,
IntMatrix2D C)
Constructs a diagonal block matrix from the given parts. |
void |
decompose(IntMatrix2D[][] parts,
IntMatrix2D matrix)
Splits a block matrix into its constituent blocks; Copies blocks of a matrix into the given parts. |
void |
demo1()
Demonstrates usage of this class. |
void |
demo2()
Demonstrates usage of this class. |
IntMatrix2D |
descending(int rows,
int columns)
Constructs a matrix with cells having descending values. |
IntMatrix2D |
diagonal(int[] vector)
Constructs a new diagonal matrix whose diagonal elements are the elements of vector. |
IntMatrix2D |
diagonal(IntMatrix1D vector)
Constructs a new diagonal matrix whose diagonal elements are the elements of vector. |
IntMatrix1D |
diagonal(IntMatrix2D A)
Constructs a new vector consisting of the diagonal elements of A . |
IntMatrix2D |
identity(int rowsAndColumns)
Constructs an identity matrix (having ones on the diagonal and zeros elsewhere). |
IntMatrix2D |
make(int[][] values)
Constructs a matrix with the given cell values. |
IntMatrix2D |
make(int[] values,
int rows)
Construct a matrix from a one-dimensional column-major packed array, ala Fortran. |
IntMatrix2D |
make(int rows,
int columns)
Constructs a matrix with the given shape, each cell initialized with zero. |
IntMatrix2D |
make(int rows,
int columns,
int initialValue)
Constructs a matrix with the given shape, each cell initialized with the given value. |
IntMatrix2D |
random(int rows,
int columns)
Constructs a matrix with uniformly distributed values in (0,1) (exclusive). |
IntMatrix2D |
repeat(IntMatrix2D A,
int rowRepeat,
int columnRepeat)
C = A||A||..||A; Constructs a new matrix which is duplicated both along the row and column dimension. |
IntMatrix2D |
reshape(IntMatrix1D a,
int rows,
int columns)
|
IntMatrix2D |
sample(int rows,
int columns,
int value,
int nonZeroFraction)
Constructs a randomly sampled matrix with the given shape. |
IntMatrix2D |
sample(IntMatrix2D matrix,
int value,
int nonZeroFraction)
Modifies the given matrix to be a randomly sampled matrix. |
| Methods inherited from class cern.colt.PersistentObject |
|---|
clone |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final IntFactory2D dense
public static final IntFactory2D sparse
public static final IntFactory2D rowCompressed
| Method Detail |
|---|
public IntMatrix2D appendColumns(IntMatrix2D A,
IntMatrix2D B)
0 1 2 3 4 5 appendColumns 6 7 8 9 --> 0 1 2 6 7 3 4 5 8 9
public IntMatrix2D appendColumn(IntMatrix2D A,
IntMatrix1D b)
public IntMatrix2D appendRows(IntMatrix2D A,
IntMatrix2D B)
0 1 2 3 4 5 appendRows 6 7 8 9 --> 0 1 2 3 4 5 6 7 8 9
public IntMatrix2D appendRow(IntMatrix2D A,
IntMatrix1D b)
public IntMatrix2D ascending(int rows,
int columns)
0 1 2 3 4 5
public IntMatrix2D reshape(IntMatrix1D a,
int rows,
int columns)
public IntMatrix2D compose(IntMatrix2D[][] parts)
decompose(IntMatrix2D[][], IntMatrix2D).
All matrices of a given column within parts must have the same number of columns. All matrices of a given row within parts must have the same number of rows. Otherwise an IllegalArgumentException is thrown. Note that nulls within parts[row,col] are an exception to this rule: they are ignored. Cells are copied. Example:
| Code | Result |
IntMatrix2D[][] parts1 = { { null, make(2, 2, 1), null }, { make(4, 4, 2), null, make(4, 3, 3) }, { null, make(2, 2, 4), null } };
System.out.println(compose(parts1));
|
8 x 9 matrix 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 2 2 2 2 0 0 3 3 3 2 2 2 2 0 0 3 3 3 2 2 2 2 0 0 3 3 3 2 2 2 2 0 0 3 3 3 0 0 0 0 4 4 0 0 0 0 0 0 0 4 4 0 0 0 |
IntMatrix2D[][] parts3 = { { identity(3), null, }, { null, identity(3).viewColumnFlip() }, { identity(3).viewRowFlip(), null } };
System.out.println("\n" + make(parts3));
|
9 x 6 matrix 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 |
IntMatrix2D A = ascending(2, 2);
IntMatrix2D B = descending(2, 2);
IntMatrix2D _ = null;
IntMatrix2D[][] parts4 = { { A, _, A, _ }, { _, A, _, B } };
System.out.println("\n" + make(parts4));
|
4 x 8 matrix 1 2 0 0 1 2 0 0 3 4 0 0 3 4 0 0 0 0 1 2 0 0 3 2 0 0 3 4 0 0 1 0 |
IntMatrix2D[][] parts2 = { { null, make(2, 2, 1), null }, { make(4, 4, 2), null, make(4, 3, 3) }, { null, make(2, 3, 4), null } };
System.out.println("\n" + Factory2D.make(parts2));
|
IllegalArgumentException A[0,1].cols != A[2,1].cols (2 != 3) |
IllegalArgumentException - subject to the conditions outlined above.
public IntMatrix2D composeDiagonal(IntMatrix2D A,
IntMatrix2D B)
A 0 0 B(The direct sum has A.rows()+B.rows() rows and A.columns()+B.columns() columns). Cells are copied.
public IntMatrix2D composeDiagonal(IntMatrix2D A,
IntMatrix2D B,
IntMatrix2D C)
A 0 0 0 B 0 0 0 Cfrom the given parts. Cells are copied.
public IntMatrix2D composeBidiagonal(IntMatrix2D A,
IntMatrix2D B)
public void decompose(IntMatrix2D[][] parts,
IntMatrix2D matrix)
compose(IntMatrix2D[][]).
All matrices of a given column within parts must have the same number of columns. All matrices of a given row within parts must have the same number of rows. Otherwise an IllegalArgumentException is thrown. Note that nulls within parts[row,col] are an exception to this rule: they are ignored. Cells are copied. Example:
| Code | matrix | --> parts |
IntMatrix2D matrix = ... ;
IntMatrix2D _ = null;
IntMatrix2D A,B,C,D;
A = make(2,2); B = make (4,4);
C = make(4,3); D = make (2,2);
IntMatrix2D[][] parts =
{
{ _, A, _ },
{ B, _, C },
{ _, D, _ }
};
decompose(parts,matrix);
System.out.println("\nA = "+A);
System.out.println("\nB = "+B);
System.out.println("\nC = "+C);
System.out.println("\nD = "+D);
|
8 x 9 matrix 9 9 9 9 1 1 9 9 9 9 9 9 9 1 1 9 9 9 2 2 2 2 9 9 3 3 3 2 2 2 2 9 9 3 3 3 2 2 2 2 9 9 3 3 3 2 2 2 2 9 9 3 3 3 9 9 9 9 4 4 9 9 9 9 9 9 9 4 4 9 9 9 |
A = 2 x 2 matrix
B = 4 x 4 matrix
C = 4 x 3 matrix
D = 2 x 2 matrix |
IllegalArgumentException - subject to the conditions outlined above.public void demo1()
public void demo2()
public IntMatrix2D descending(int rows,
int columns)
5 4 3 2 1 0
public IntMatrix2D diagonal(IntMatrix1D vector)
5 4 3 --> 5 0 0 0 4 0 0 0 3
public IntMatrix2D diagonal(int[] vector)
5 4 3 --> 5 0 0 0 4 0 0 0 3
public IntMatrix1D diagonal(IntMatrix2D A)
5 0 0 9 0 4 0 9 0 0 3 9 --> 5 4 3
A - the matrix, need not be square.
public IntMatrix2D identity(int rowsAndColumns)
public IntMatrix2D make(int[][] values)
The values are copied. So subsequent changes in values are not reflected in the matrix, and vice-versa.
values - The values to be filled into the new matrix.
IllegalArgumentException - if
for any 1 <= row < values.length: values[row].length != values[row-1].length
.
public IntMatrix2D make(int[] values,
int rows)
values - One-dimensional array of doubles, packed by columns (ala
Fortran).rows - the number of rows.
IllegalArgumentException - values.length must be a multiple of rows
.
public IntMatrix2D make(int rows,
int columns)
public IntMatrix2D make(int rows,
int columns,
int initialValue)
public IntMatrix2D random(int rows,
int columns)
public IntMatrix2D repeat(IntMatrix2D A,
int rowRepeat,
int columnRepeat)
0 1 2 3 repeat(2,3) --> 0 1 0 1 0 1 2 3 2 3 2 3 0 1 0 1 0 1 2 3 2 3 2 3
public IntMatrix2D sample(int rows,
int columns,
int value,
int nonZeroFraction)
IllegalArgumentException - if nonZeroFraction < 0 || nonZeroFraction > 1.DoubleRandomSamplingAssistant
public IntMatrix2D sample(IntMatrix2D matrix,
int value,
int nonZeroFraction)
IllegalArgumentException - if nonZeroFraction < 0 || nonZeroFraction > 1.DoubleRandomSamplingAssistant
|
Parallel Colt 0.7.2 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||