diff --git a/src/maths/matrix.lisp b/src/maths/matrix.lisp index 453efb9..7bea417 100644 --- a/src/maths/matrix.lisp +++ b/src/maths/matrix.lisp @@ -53,6 +53,13 @@ do (setf (aref mat i i) (aref vec i))) mat) +(defun transpose (mat) + (let ((transposed (mat-null (array-element-type mat) (array-dimension mat 1) (array-dimension mat 0)))) + (loop for i below (array-dimension mat 0) + do (loop for j below (array-dimension mat 1) + do (setf (aref transposed j i) (aref mat i j)))) + transposed)) + (defun add-mat (mat-a mat-b) (let* ((mat (mat-null (array-element-type mat-a) (array-dimension mat-a 0) (array-dimension mat-a 1))) (len (array-total-size mat)))