Matrix Examples from Chapter 5, Section 4
(setf abrasion (transpose abrasion))
(print-matrix abrasion)
(pm abrasion) ;ViSta only
(print-matrix (matmult (transpose abrasion) abrasion ))
;bind-rows and bind-columns create matrices from lists, vectors, or matrices
(setf abrasion (bind-columns hardness tensile-strength abrasion-loss))
(pm abrasion)
;column-list and row-list break up a matrix into a list of rows or columns
(column-list abrasion)
(row-list abrasion
(defun column-means (mat)
(mapcar #'mean (column-list mat)))
(column-means abrasion)
;transpose, identity-matrix
(pm (identity-matrix 4))
(pm (transpose abrasion))
;matmult and %* (undocumented)
(pm (%* (transpose abrasion) abrasion))
(setf one (make-array '(3) :initial-element 1) )
(%* abrasion one) ; sums up the values in each row
;inner-product, outer-product, cross-product
(%* '(1 2 3) '(4 5 6))
(inner-product '(1 2 3) '(4 5 6))
(pm (outer-product '(1 2 3) '(4 5 6)))
(pm (cross-product abrasion)) ; same as (%* (transpose abrasion) abrasion))
, diagonal (used in two ways)
(pm (diagonal (matmult(transpose abrasion) abrasion )))
(pm (diagonal (diagonal (matmult(transpose abrasion) abrasion ))))
;inverse
(setf cp (cross-product abrasion))
(pm (%* (inverse cp) cp))
;eigen, eigenvalues, eigenvectors, sv-decomp
(eigen cp)
(eigenvalues cp)
(eigenvectors cp)
(sv-decomp abrasion)
;chol-decomp, lu-decomp, qr-decomp