Java Multiplying Matrices - Web Development and Design | Tutorial for Java, PHP, HTML, Javascript Java Multiplying Matrices - Web Development and Design | Tutorial for Java, PHP, HTML, Javascript

## Wednesday, January 2, 2019

Java Multiplying Matrices

Problem

You need to multiply a pair of two-dimensional arrays, as is common in mathematical and engineering applications.

Solution

Use the following code as a model.

Explained

It is straightforward to multiply an array of a numeric type. The code in Example
implements matrix multiplication. Example Matrix.java

```/**
* Multiply two matrices.
* Only defined for int:
* for long, float, and double.
*/
public class Matrix {
/* Matrix-multiply two arrays together.
* The arrays MUST be rectangular.
* @author Tom Christiansen & Nathan Torkington, Perl Cookbook version.
*/
public static int[][] multiply(int[][] m1, int[][] m2) {
int m1rows = m1.length;
int m1cols = m1[0].length;
int m2rows = m2.length;
int m2cols = m2[0].length;
if (m1cols != m2rows)
throw new IllegalArgumentException(
"matrices don't match: " + m1cols + " != " + m2rows);
int[][] result = new int[m1rows][m2cols];
// multiply
for (int i=0; i<m1rows; i++)
for (int j=0; j<m2cols; j++)
for (int k=0; k<m1cols; k++)
result[i][j] += m1[i][k] * m2[k][j];
return result;
}
```

```public static void mprint(int[][] a) {
int rows = a.length;
int cols = a[0].length;
System.out.println("array["+rows+"]["+cols+"] = {");
for (int i=0; i<rows; i++) {
System.out.print("{");
for (int j=0; j<cols; j++)
System.out.print(" " + a[i][j] + ",");
System.out.println("},");
}
System.out.println(":;");
}
}
```

Here is a program that uses the Matrix class to multiply two arrays of int s:

```// MatrixUse.java
int x[][] = {
{ 3, 2, 3 },
{ 5, 9, 8 },
};
int y[][] = {
{ 4, 7 },
{ 9, 3 },
{ 8, 1 },
};
int z[][] = Matrix.multiply(x, y);
Matrix.mprint(x);
Matrix.mprint(y);
Matrix.mprint(z);
```