public class MatrixMultiply {
/**
* Multiples 2 2-dimensional matrices together given their dimensions are
* compatible
*
* @param mat_a A 2-Dimensional matrix to be multiplied
* @param mat_b A 2-Dimensional matrix to be multiplied
* @return The product of the two matrices if compatible dimensions, null
* otherwise
*/
public static double[][] matrixMultiply2D(double[][] mat_a, double[][] mat_b) {
int aRows = mat_a.length;
int aColumns = mat_a[0].length;
int bRows = mat_b.length;
int bColumns = mat_b[0].length;
if (aColumns != bRows)
throw new IllegalArgumentException("A:Rows: " + aColumns + " did not match B:Columns " + bRows + ".");
double[][] mat_result = new double[aRows][bColumns];
for (int i = 0; i < aRows; i++) {
for (int j = 0; j < bColumns; j++) {
mat_result[i][j] = 0.00000;
}
}
for (int i = 0; i < aRows; i++) { // aRow
for (int j = 0; j < bColumns; j++) { // bColumn
for (int k = 0; k < aColumns; k++) { // aColumn
mat_result[i][j] += mat_a[i][k] * mat_b[k][j];
}
}
}
return mat_result;
}
}