diff --git a/src/zutil/math/MatrixMath.java b/src/zutil/math/MatrixMath.java index a409c71..5ad4e10 100755 --- a/src/zutil/math/MatrixMath.java +++ b/src/zutil/math/MatrixMath.java @@ -189,6 +189,20 @@ public class MatrixMath { return result; } + /** + * @return a new matrix with the transpose of the input matrix. + */ + public static double[][] transpose(double[][] matrix){ + double[][] result = new double[matrix[0].length][matrix.length]; + + for (int y=0; y < result.length; ++y) { + for (int x=0; x < result[y].length; ++x){ + result[y][x] = matrix[x][y]; + } + } + return result; + } + private static void matrixPreCheck(double[][] matrix1, double[][] matrix2) { if (matrix1[0].length != matrix2.length) @@ -212,4 +226,5 @@ public class MatrixMath { } return result; } + } diff --git a/test/zutil/math/MatrixMathTest.java b/test/zutil/math/MatrixMathTest.java index cf14ab2..193019f 100755 --- a/test/zutil/math/MatrixMathTest.java +++ b/test/zutil/math/MatrixMathTest.java @@ -79,6 +79,15 @@ public class MatrixMathTest { ); } + @Test + public void matrixTranspose(){ + assertArrayEquals( + new double[][]{{1,3},{2,5},{0,9}}, + MatrixMath.transpose( + new double[][]{{1,2,0},{3,5,9}}) + ); + } + @Test