01: package JSci.util;
02:
03: import JSci.maths.Complex;
04: import JSci.maths.matrices.*;
05:
06: /**
07: * This is a useful collection of matrix related methods.
08: * @author Mark Hale
09: */
10: public final class MatrixToolkit {
11: private MatrixToolkit() {
12: }
13:
14: /**
15: * Creates a random generated square matrix.
16: */
17: public static DoubleSquareMatrix randomSquareMatrix(int size) {
18: return (DoubleSquareMatrix) new DoubleSquareMatrix(size)
19: .mapElements(RandomMap.MAP);
20: }
21:
22: /**
23: * Creates a random generated tridiagonal matrix.
24: */
25: public static DoubleTridiagonalMatrix randomTridiagonalMatrix(
26: int size) {
27: return new DoubleTridiagonalMatrix(
28: toArray(randomSquareMatrix(size)));
29: }
30:
31: /**
32: * Creates a random generated diagonal matrix.
33: */
34: public static DoubleDiagonalMatrix randomDiagonalMatrix(int size) {
35: return new DoubleDiagonalMatrix(
36: toArray(randomSquareMatrix(size)));
37: }
38:
39: /**
40: * Creates a random generated square matrix.
41: */
42: public static ComplexSquareMatrix randomComplexSquareMatrix(int size) {
43: return (ComplexSquareMatrix) new ComplexSquareMatrix(size)
44: .mapElements(RandomMap.MAP);
45: }
46:
47: /**
48: * Creates a random generated tridiagonal matrix.
49: */
50: public static ComplexTridiagonalMatrix randomComplexTridiagonalMatrix(
51: int size) {
52: return new ComplexTridiagonalMatrix(
53: toArray(randomComplexSquareMatrix(size)));
54: }
55:
56: /**
57: * Creates a random generated diagonal matrix.
58: */
59: public static ComplexDiagonalMatrix randomComplexDiagonalMatrix(
60: int size) {
61: return new ComplexDiagonalMatrix(
62: toArray(randomComplexSquareMatrix(size)));
63: }
64:
65: /**
66: * Converts a matrix to an array.
67: */
68: public static double[][] toArray(AbstractDoubleMatrix v) {
69: double array[][] = new double[v.rows()][v.columns()];
70: for (int j, i = 0; i < array.length; i++) {
71: for (j = 0; j < array[0].length; j++)
72: array[i][j] = v.getElement(i, j);
73: }
74: return array;
75: }
76:
77: /**
78: * Converts a matrix to an array.
79: */
80: public static Complex[][] toArray(AbstractComplexMatrix v) {
81: Complex array[][] = new Complex[v.rows()][v.columns()];
82: for (int j, i = 0; i < array.length; i++) {
83: for (j = 0; j < array[0].length; j++)
84: array[i][j] = v.getElement(i, j);
85: }
86: return array;
87: }
88: }
|